summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoramWilander <jwawilander@gmail.com>2016-02-17 14:23:09 -0500
committerJoramWilander <jwawilander@gmail.com>2016-02-22 11:10:31 -0500
commit9b30fad8ad4d9d83fd119ed9e4bfb591ebca46e2 (patch)
tree9ea939691bb9d68bf8b05bb66be7c1fa459f7a5d
parent32ae72d91d31699899d5e2084cf7faa40c81e42c (diff)
downloadchat-9b30fad8ad4d9d83fd119ed9e4bfb591ebca46e2.tar.gz
chat-9b30fad8ad4d9d83fd119ed9e4bfb591ebca46e2.tar.bz2
chat-9b30fad8ad4d9d83fd119ed9e4bfb591ebca46e2.zip
Refactor user store listener out of channel header
-rw-r--r--web/react/components/center_panel.jsx13
-rw-r--r--web/react/components/channel_header.jsx13
-rw-r--r--web/react/stores/user_store.jsx50
3 files changed, 23 insertions, 53 deletions
diff --git a/web/react/components/center_panel.jsx b/web/react/components/center_panel.jsx
index 6cb749075..97c615768 100644
--- a/web/react/components/center_panel.jsx
+++ b/web/react/components/center_panel.jsx
@@ -27,20 +27,24 @@ export default class CenterPanel extends React.Component {
this.onPreferenceChange = this.onPreferenceChange.bind(this);
this.onChannelChange = this.onChannelChange.bind(this);
+ this.onUserChange = this.onUserChange.bind(this);
const tutorialStep = PreferenceStore.getInt(Preferences.TUTORIAL_STEP, UserStore.getCurrentId(), 999);
this.state = {
showTutorialScreens: tutorialStep === TutorialSteps.INTRO_SCREENS,
- showPostFocus: ChannelStore.getPostMode() === ChannelStore.POST_MODE_FOCUS
+ showPostFocus: ChannelStore.getPostMode() === ChannelStore.POST_MODE_FOCUS,
+ user: UserStore.getCurrentUser()
};
}
componentDidMount() {
PreferenceStore.addChangeListener(this.onPreferenceChange);
ChannelStore.addChangeListener(this.onChannelChange);
+ UserStore.addChangeListener(this.onUserChange);
}
componentWillUnmount() {
PreferenceStore.removeChangeListener(this.onPreferenceChange);
ChannelStore.removeChangeListener(this.onChannelChange);
+ UserStore.removeChangeListener(this.onUserChange);
}
onPreferenceChange() {
const tutorialStep = PreferenceStore.getInt(Preferences.TUTORIAL_STEP, UserStore.getCurrentId(), 999);
@@ -49,6 +53,9 @@ export default class CenterPanel extends React.Component {
onChannelChange() {
this.setState({showPostFocus: ChannelStore.getPostMode() === ChannelStore.POST_MODE_FOCUS});
}
+ onUserChange() {
+ this.setState({user: UserStore.getCurrentUser()});
+ }
render() {
const channel = ChannelStore.getCurrent();
var handleClick = null;
@@ -108,7 +115,9 @@ export default class CenterPanel extends React.Component {
className='app__content'
>
<div id='channel-header'>
- <ChannelHeader/>
+ <ChannelHeader
+ user={this.state.user}
+ />
</div>
{postsContainer}
{createPost}
diff --git a/web/react/components/channel_header.jsx b/web/react/components/channel_header.jsx
index b5eb546cf..3d0246a96 100644
--- a/web/react/components/channel_header.jsx
+++ b/web/react/components/channel_header.jsx
@@ -51,7 +51,6 @@ export default class ChannelHeader extends React.Component {
return {
channel: ChannelStore.getCurrent(),
memberChannel: ChannelStore.getCurrentMember(),
- memberTeam: UserStore.getCurrentUser(),
users: extraInfo.members,
userCount: extraInfo.member_count,
searchVisible: SearchStore.getSearchResults() !== null
@@ -61,14 +60,12 @@ export default class ChannelHeader extends React.Component {
ChannelStore.addChangeListener(this.onListenerChange);
ChannelStore.addExtraInfoChangeListener(this.onListenerChange);
SearchStore.addSearchChangeListener(this.onListenerChange);
- UserStore.addChangeListener(this.onListenerChange);
PreferenceStore.addChangeListener(this.onListenerChange);
}
componentWillUnmount() {
ChannelStore.removeChangeListener(this.onListenerChange);
ChannelStore.removeExtraInfoChangeListener(this.onListenerChange);
SearchStore.removeSearchChangeListener(this.onListenerChange);
- UserStore.removeChangeListener(this.onListenerChange);
PreferenceStore.removeChangeListener(this.onListenerChange);
}
onListenerChange() {
@@ -97,11 +94,11 @@ export default class ChannelHeader extends React.Component {
searchMentions(e) {
e.preventDefault();
- const user = UserStore.getCurrentUser();
+ const user = this.props.user;
let terms = '';
if (user.notify_props && user.notify_props.mention_keys) {
- const termKeys = UserStore.getCurrentMentionKeys();
+ const termKeys = UserStore.getMentionKeys(user.id);
if (user.notify_props.all === 'true' && termKeys.indexOf('@all') !== -1) {
termKeys.splice(termKeys.indexOf('@all'), 1);
@@ -150,7 +147,7 @@ export default class ChannelHeader extends React.Component {
</Popover>
);
let channelTitle = channel.display_name;
- const currentId = UserStore.getCurrentId();
+ const currentId = this.prop.user.id;
const isAdmin = Utils.isAdmin(this.state.memberChannel.roles) || Utils.isAdmin(this.state.memberTeam.roles);
const isDirect = (this.state.channel.type === 'D');
@@ -474,3 +471,7 @@ export default class ChannelHeader extends React.Component {
);
}
}
+
+ChannelHeader.propTypes = {
+ user: React.PropTypes.object.isRequired
+};
diff --git a/web/react/stores/user_store.jsx b/web/react/stores/user_store.jsx
index dd60e166f..226d578df 100644
--- a/web/react/stores/user_store.jsx
+++ b/web/react/stores/user_store.jsx
@@ -17,50 +17,6 @@ const CHANGE_EVENT_STATUSES = 'change_statuses';
class UserStoreClass extends EventEmitter {
constructor() {
super();
-
- this.emitChange = this.emitChange.bind(this);
- this.addChangeListener = this.addChangeListener.bind(this);
- this.removeChangeListener = this.removeChangeListener.bind(this);
- this.emitSessionsChange = this.emitSessionsChange.bind(this);
- this.addSessionsChangeListener = this.addSessionsChangeListener.bind(this);
- this.removeSessionsChangeListener = this.removeSessionsChangeListener.bind(this);
- this.emitAuditsChange = this.emitAuditsChange.bind(this);
- this.addAuditsChangeListener = this.addAuditsChangeListener.bind(this);
- this.removeAuditsChangeListener = this.removeAuditsChangeListener.bind(this);
- this.emitTeamsChange = this.emitTeamsChange.bind(this);
- this.addTeamsChangeListener = this.addTeamsChangeListener.bind(this);
- this.removeTeamsChangeListener = this.removeTeamsChangeListener.bind(this);
- this.emitStatusesChange = this.emitStatusesChange.bind(this);
- this.addStatusesChangeListener = this.addStatusesChangeListener.bind(this);
- this.removeStatusesChangeListener = this.removeStatusesChangeListener.bind(this);
- this.getCurrentId = this.getCurrentId.bind(this);
- this.getCurrentUser = this.getCurrentUser.bind(this);
- this.setCurrentUser = this.setCurrentUser.bind(this);
- this.getLastEmail = this.getLastEmail.bind(this);
- this.setLastEmail = this.setLastEmail.bind(this);
- this.getLastUsername = this.getLastUsername.bind(this);
- this.setLastUsername = this.setLastUsername.bind(this);
- this.hasProfile = this.hasProfile.bind(this);
- this.getProfile = this.getProfile.bind(this);
- this.getProfileByUsername = this.getProfileByUsername.bind(this);
- this.getProfilesUsernameMap = this.getProfilesUsernameMap.bind(this);
- this.getProfiles = this.getProfiles.bind(this);
- this.getActiveOnlyProfiles = this.getActiveOnlyProfiles.bind(this);
- this.getActiveOnlyProfileList = this.getActiveOnlyProfileList.bind(this);
- this.saveProfile = this.saveProfile.bind(this);
- this.setSessions = this.setSessions.bind(this);
- this.getSessions = this.getSessions.bind(this);
- this.setAudits = this.setAudits.bind(this);
- this.getAudits = this.getAudits.bind(this);
- this.setTeams = this.setTeams.bind(this);
- this.getTeams = this.getTeams.bind(this);
- this.getCurrentMentionKeys = this.getCurrentMentionKeys.bind(this);
- this.setStatuses = this.setStatuses.bind(this);
- this.pSetStatuses = this.pSetStatuses.bind(this);
- this.setStatus = this.setStatus.bind(this);
- this.getStatuses = this.getStatuses.bind(this);
- this.getStatus = this.getStatus.bind(this);
-
this.profileCache = null;
}
@@ -277,7 +233,11 @@ class UserStoreClass extends EventEmitter {
}
getCurrentMentionKeys() {
- var user = this.getCurrentUser();
+ return this.getMentionKeys(this.getCurrentId());
+ }
+
+ getMentionKeys(id) {
+ var user = this.getProfile(id);
var keys = [];