From 56e74239d6b34df8f30ef046f0b0ff4ff0866a71 Mon Sep 17 00:00:00 2001 From: =Corey Hulen Date: Sun, 14 Jun 2015 23:53:32 -0800 Subject: first commit --- web/react/components/user_profile.jsx | 71 +++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 web/react/components/user_profile.jsx (limited to 'web/react/components/user_profile.jsx') diff --git a/web/react/components/user_profile.jsx b/web/react/components/user_profile.jsx new file mode 100644 index 000000000..8ffad737d --- /dev/null +++ b/web/react/components/user_profile.jsx @@ -0,0 +1,71 @@ +// Copyright (c) 2015 Spinpunch, Inc. All Rights Reserved. +// See License.txt for license information. + + +var utils = require('../utils/utils.jsx'); +var UserStore = require('../stores/user_store.jsx'); + +function getStateFromStores(userId) { + var profile = UserStore.getProfile(userId); + + if (profile == null) { + return { profile: { id: "0", username: "..."} }; + } + else { + return { profile: profile }; + } +} + +var id = 0; + +function nextId() { + id = id + 1; + return id; +} + + +module.exports = React.createClass({ + uniqueId: null, + componentDidMount: function() { + UserStore.addChangeListener(this._onChange); + $("#profile_" + this.uniqueId).popover({placement : 'right', container: 'body', trigger: 'hover', html: true, delay: { "show": 200, "hide": 100 }}); + }, + componentWillUnmount: function() { + UserStore.removeChangeListener(this._onChange); + }, + _onChange: function(id) { + if (id == this.props.userId) { + var newState = getStateFromStores(this.props.userId); + if (!utils.areStatesEqual(newState, this.state)) { + this.setState(newState); + } + } + }, + componentWillReceiveProps: function(nextProps) { + if (this.props.userId != nextProps.userId) { + this.setState(getStateFromStores(nextProps.userId)); + } + }, + getInitialState: function() { + this.uniqueId = nextId(); + return getStateFromStores(this.props.userId); + }, + render: function() { + var name = this.props.overwriteName ? this.props.overwriteName : this.state.profile.username; + + + var data_content = "" + data_content += "" + if (!config.ShowEmail) { + data_content += "
Email not shared
"; + } else { + data_content += "
" + this.state.profile.email + "
"; + } + + return ( +
+ { name } +
+ ); + } +}); -- cgit v1.2.3-1-g7c22