summaryrefslogtreecommitdiffstats
path: root/webapp/components/navbar_dropdown.jsx
diff options
context:
space:
mode:
Diffstat (limited to 'webapp/components/navbar_dropdown.jsx')
-rw-r--r--webapp/components/navbar_dropdown.jsx59
1 files changed, 53 insertions, 6 deletions
diff --git a/webapp/components/navbar_dropdown.jsx b/webapp/components/navbar_dropdown.jsx
index da1ae237e..19b99a14d 100644
--- a/webapp/components/navbar_dropdown.jsx
+++ b/webapp/components/navbar_dropdown.jsx
@@ -6,6 +6,7 @@ import ReactDOM from 'react-dom';
import * as Utils from 'utils/utils.jsx';
import * as GlobalActions from 'action_creators/global_actions.jsx';
+import TeamStore from 'stores/team_store.jsx';
import AboutBuildModal from './about_build_modal.jsx';
import TeamMembersModal from './team_members_modal.jsx';
import ToggleModalButton from './toggle_modal_button.jsx';
@@ -25,10 +26,13 @@ export default class NavbarDropdown extends React.Component {
this.handleAboutModal = this.handleAboutModal.bind(this);
this.aboutModalDismissed = this.aboutModalDismissed.bind(this);
+ this.onTeamChange = this.onTeamChange.bind(this);
this.state = {
showUserSettingsModal: false,
- showAboutModal: false
+ showAboutModal: false,
+ teams: TeamStore.getAll(),
+ teamMembers: TeamStore.getTeamMembers()
};
}
handleAboutModal() {
@@ -37,6 +41,7 @@ export default class NavbarDropdown extends React.Component {
aboutModalDismissed() {
this.setState({showAboutModal: false});
}
+
componentDidMount() {
$(ReactDOM.findDOMNode(this.refs.dropdown)).on('hide.bs.dropdown', () => {
$('.sidebar--left .dropdown-menu').scrollTop(0);
@@ -45,10 +50,22 @@ export default class NavbarDropdown extends React.Component {
this.blockToggle = false;
}, 100);
});
+
+ TeamStore.addChangeListener(this.onTeamChange);
+ }
+
+ onTeamChange() {
+ this.setState({
+ teams: TeamStore.getAll(),
+ teamMembers: TeamStore.getTeamMembers()
+ });
}
+
componentWillUnmount() {
$(ReactDOM.findDOMNode(this.refs.dropdown)).off('hide.bs.dropdown');
+ TeamStore.removeChangeListener(this.onTeamChange);
}
+
render() {
var teamLink = '';
var inviteLink = '';
@@ -130,7 +147,7 @@ export default class NavbarDropdown extends React.Component {
if (isAdmin || window.EnableAdminOnlyIntegrations !== 'true') {
integrationsLink = (
<li>
- <Link to={'/settings/integrations'}>
+ <Link to={'/' + Utils.getTeamNameFromUrl() + '/settings/integrations'}>
<FormattedMessage
id='navbar_dropdown.integrations'
defaultMessage='Integrations'
@@ -163,8 +180,7 @@ export default class NavbarDropdown extends React.Component {
<li key='newTeam_li'>
<Link
key='newTeam_a'
- target='_blank'
- to={Utils.getWindowLocationOrigin() + '/signup_team'}
+ to='/create_team'
>
<FormattedMessage
id='navbar_dropdown.create'
@@ -175,6 +191,34 @@ export default class NavbarDropdown extends React.Component {
);
}
+ if (this.state.teamMembers && this.state.teamMembers.length > 0) {
+ teams.push(
+ <li
+ key='teamDiv'
+ className='divider'
+ ></li>
+ );
+
+ for (var index in this.state.teamMembers) {
+ if (this.state.teamMembers.hasOwnProperty(index)) {
+ var teamMember = this.state.teamMembers[index];
+ var team = this.state.teams[teamMember.team_id];
+
+ if (team.name !== this.props.teamName) {
+ teams.push(
+ <li key={'team_' + team.name}>
+ <Link
+ to={'/' + team.name + '/channels/town-square'}
+ >
+ {team.display_name}
+ </Link>
+ </li>
+ );
+ }
+ }
+ }
+ }
+
let helpLink = null;
if (global.window.mm_config.HelpLink) {
helpLink = (
@@ -245,12 +289,15 @@ export default class NavbarDropdown extends React.Component {
{inviteLink}
{teamLink}
<li>
- <Link to={'/' + this.props.teamName + '/logout'}>
+ <a
+ href='#'
+ onClick={GlobalActions.emitUserLoggedOutEvent}
+ >
<FormattedMessage
id='navbar_dropdown.logout'
defaultMessage='Logout'
/>
- </Link>
+ </a>
</li>
{adminDivider}
{teamSettings}