diff options
-rw-r--r-- | webapp/components/logged_in.jsx | 16 | ||||
-rw-r--r-- | webapp/components/sidebar.jsx | 8 | ||||
-rw-r--r-- | webapp/utils/utils.jsx | 13 |
3 files changed, 31 insertions, 6 deletions
diff --git a/webapp/components/logged_in.jsx b/webapp/components/logged_in.jsx index fd09aac9e..f7a6be647 100644 --- a/webapp/components/logged_in.jsx +++ b/webapp/components/logged_in.jsx @@ -14,6 +14,7 @@ const TutorialSteps = Constants.TutorialSteps; const Preferences = Constants.Preferences; import ErrorBar from 'components/error_bar.jsx'; import * as Websockets from 'action_creators/websocket_actions.jsx'; +import LoadingScreen from 'components/loading_screen.jsx'; import {browserHistory} from 'react-router'; @@ -44,6 +45,13 @@ export default class LoggedIn extends React.Component { super(params); this.onUserChanged = this.onUserChanged.bind(this); + + this.state = { + user: null + }; + } + isValidState() { + return this.state.user != null; } onUserChanged() { // Grab the current user @@ -75,6 +83,8 @@ export default class LoggedIn extends React.Component { if (tutorialStep <= TutorialSteps.INTRO_SCREENS) { browserHistory.push(Utils.getTeamURLFromAddressBar() + '/tutorial'); } + + this.setState({user}); } componentWillMount() { // Emit view action @@ -186,6 +196,8 @@ export default class LoggedIn extends React.Component { Websockets.close(); UserStore.removeChangeListener(this.onUserChanged); + Utils.resetTheme(); + $('body').off('click.userpopover'); $('body').off('mouseenter mouseleave', '.post'); $('body').off('mouseenter mouseleave', '.post.post--comment.same--root'); @@ -195,6 +207,10 @@ export default class LoggedIn extends React.Component { $(window).off('keydown.preventBackspace'); } render() { + if (!this.isValidState()) { + return <LoadingScreen/>; + } + let content = []; if (this.props.children) { content = this.props.children; diff --git a/webapp/components/sidebar.jsx b/webapp/components/sidebar.jsx index 45bca7212..b22d3ec34 100644 --- a/webapp/components/sidebar.jsx +++ b/webapp/components/sidebar.jsx @@ -238,7 +238,9 @@ export default class Sidebar extends React.Component { }); } - handleLeaveDirectChannel(channel) { + handleLeaveDirectChannel(e, channel) { + e.preventDefault(); + if (!this.isLeaving.get(channel.id)) { this.isLeaving.set(channel.id, true); @@ -258,7 +260,7 @@ export default class Sidebar extends React.Component { } if (channel.id === this.state.activeId) { - browserHistory.push(TeamStore.getCurrentTeamUrl() + '/channels/town-square'); + browserHistory.push('/' + this.state.currentTeam.name + '/channels/town-square'); } } @@ -422,7 +424,7 @@ export default class Sidebar extends React.Component { overlay={removeTooltip} > <span - onClick={() => handleClose(channel)} + onClick={(e) => handleClose(e, channel)} className='btn-close' > {'×'} diff --git a/webapp/utils/utils.jsx b/webapp/utils/utils.jsx index 83519a6ec..b248368fc 100644 --- a/webapp/utils/utils.jsx +++ b/webapp/utils/utils.jsx @@ -795,6 +795,10 @@ export function applyTheme(theme) { updateCodeTheme(theme.codeTheme); } +export function resetTheme() { + applyTheme(Constants.THEMES.default); +} + export function applyFont(fontName) { const body = $('body'); @@ -1255,12 +1259,15 @@ export function windowHeight() { } export function openDirectChannelToUser(user, successCb, errorCb) { + AsyncClient.savePreference( + Constants.Preferences.CATEGORY_DIRECT_CHANNEL_SHOW, + user.id, + 'true' + ); + const channelName = this.getDirectChannelName(UserStore.getCurrentId(), user.id); let channel = ChannelStore.getByName(channelName); - const preference = PreferenceStore.setPreference(Constants.Preferences.CATEGORY_DIRECT_CHANNEL_SHOW, user.id, 'true'); - AsyncClient.savePreferences([preference]); - if (channel) { if ($.isFunction(successCb)) { successCb(channel, true); |