From d6fdd936797890565dff4e6951a6792b7e09831c Mon Sep 17 00:00:00 2001 From: Kevyn Bruyere <6eme.hokage@gmail.com> Date: Wed, 15 Jun 2016 14:30:32 +0200 Subject: PLT-946 Add status icon to the left of the username in DM channel (#3258) Add a StatusIcon component to be able to display a status icon from anywhere --- webapp/components/channel_header.jsx | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) (limited to 'webapp/components/channel_header.jsx') diff --git a/webapp/components/channel_header.jsx b/webapp/components/channel_header.jsx index 34ac53705..181d37ca2 100644 --- a/webapp/components/channel_header.jsx +++ b/webapp/components/channel_header.jsx @@ -15,6 +15,7 @@ import ChannelNotificationsModal from './channel_notifications_modal.jsx'; import DeleteChannelModal from './delete_channel_modal.jsx'; import RenameChannelModal from './rename_channel_modal.jsx'; import ToggleModalButton from './toggle_modal_button.jsx'; +import StatusIcon from './status_icon.jsx'; import ChannelStore from 'stores/channel_store.jsx'; import UserStore from 'stores/user_store.jsx'; @@ -82,6 +83,7 @@ export default class ChannelHeader extends React.Component { SearchStore.addSearchChangeListener(this.onListenerChange); PreferenceStore.addChangeListener(this.onListenerChange); UserStore.addChangeListener(this.onListenerChange); + UserStore.addStatusesChangeListener(this.onListenerChange); $('.sidebar--left .dropdown-menu').perfectScrollbar(); document.addEventListener('keydown', this.openRecentMentions); } @@ -91,6 +93,7 @@ export default class ChannelHeader extends React.Component { SearchStore.removeSearchChangeListener(this.onListenerChange); PreferenceStore.removeChangeListener(this.onListenerChange); UserStore.removeChangeListener(this.onListenerChange); + UserStore.removeStatusesChangeListener(this.onListenerChange); document.removeEventListener('keydown', this.openRecentMentions); } onListenerChange() { @@ -157,6 +160,21 @@ export default class ChannelHeader extends React.Component { showRenameChannelModal: false }); } + + getTeammateStatus() { + const channel = this.state.channel; + + // get status for direct message channels + if (channel.type === 'D') { + const currentUserId = this.state.currentUser.id; + const teammate = this.state.users.find((user) => user.id !== currentUserId); + if (teammate) { + return UserStore.getStatus(teammate.id); + } + } + return null; + } + render() { if (!this.validState()) { return null; @@ -173,7 +191,7 @@ export default class ChannelHeader extends React.Component { ); const popoverContent = ( - {channelTitle} + {channelTitle}