diff --git a/webapp/actions/channel_actions.jsx b/webapp/actions/channel_actions.jsx index c9c4e68835018..5003d65308140 100644 --- a/webapp/actions/channel_actions.jsx +++ b/webapp/actions/channel_actions.jsx @@ -186,3 +186,8 @@ export function unmarkFavorite(channelId) { AsyncClient.deletePreferences([pref]); } + +export function loadChannelsForCurrentUser() { + AsyncClient.getChannels(); + AsyncClient.getMyChannelMembers(); +} diff --git a/webapp/actions/global_actions.jsx b/webapp/actions/global_actions.jsx index a2c7c341d43af..6a63b56302e5a 100644 --- a/webapp/actions/global_actions.jsx +++ b/webapp/actions/global_actions.jsx @@ -14,6 +14,7 @@ import SearchStore from 'stores/search_store.jsx'; import {handleNewPost, loadPosts, loadPostsBefore, loadPostsAfter} from 'actions/post_actions.jsx'; import {loadProfilesAndTeamMembersForDMSidebar} from 'actions/user_actions.jsx'; +import {loadChannelsForCurrentUser} from 'actions/channel_actions.jsx'; import Constants from 'utils/constants.jsx'; const ActionTypes = Constants.ActionTypes; @@ -42,7 +43,7 @@ export function emitChannelClickEvent(channel) { ); } function switchToChannel(chan) { - AsyncClient.getChannelStats(chan.id); + AsyncClient.getChannelStats(chan.id, true); AsyncClient.updateLastViewedAt(chan.id); loadPosts(chan.id); trackPage(); @@ -140,7 +141,7 @@ export function doFocusPost(channelId, postId, data) { channelId, post_list: data }); - AsyncClient.getChannels(true); + loadChannelsForCurrentUser(); AsyncClient.getMoreChannels(true); AsyncClient.getChannelStats(channelId); loadPostsBefore(postId, 0, Constants.POST_FOCUS_CONTEXT_RADIUS, true); @@ -148,7 +149,7 @@ export function doFocusPost(channelId, postId, data) { } export function emitPostFocusEvent(postId, onSuccess) { - AsyncClient.getChannels(true); + loadChannelsForCurrentUser(); Client.getPermalinkTmp( postId, (data) => { diff --git a/webapp/actions/websocket_actions.jsx b/webapp/actions/websocket_actions.jsx index e58bded0d5bf5..55df5105f72d0 100644 --- a/webapp/actions/websocket_actions.jsx +++ b/webapp/actions/websocket_actions.jsx @@ -20,6 +20,7 @@ import * as AsyncClient from 'utils/async_client.jsx'; import * as GlobalActions from 'actions/global_actions.jsx'; import {handleNewPost, loadPosts} from 'actions/post_actions.jsx'; import {loadProfilesAndTeamMembersForDMSidebar} from 'actions/user_actions.jsx'; +import {loadChannelsForCurrentUser} from 'actions/channel_actions.jsx'; import * as StatusActions from 'actions/status_actions.jsx'; import {Constants, SocketEvents, UserStatuses} from 'utils/constants.jsx'; @@ -75,8 +76,7 @@ function handleFirstConnect() { function handleReconnect() { if (Client.teamId) { - AsyncClient.getChannels(); - AsyncClient.getMyChannelMembers(); + loadChannelsForCurrentUser(); loadPosts(ChannelStore.getCurrentId()); } @@ -234,7 +234,7 @@ function handleUserAddedEvent(msg) { function handleUserRemovedEvent(msg) { if (UserStore.getCurrentId() === msg.broadcast.user_id) { - AsyncClient.getChannels(); + loadChannelsForCurrentUser(); if (msg.data.remover_id !== msg.broadcast.user_id && msg.data.channel_id === ChannelStore.getCurrentId() && @@ -273,7 +273,7 @@ function handleChannelDeletedEvent(msg) { const teamUrl = TeamStore.getCurrentTeamRelativeUrl(); browserHistory.push(teamUrl + '/channels/' + Constants.DEFAULT_CHANNEL); } - AsyncClient.getChannels(); + loadChannelsForCurrentUser(); } function handlePreferenceChangedEvent(msg) { diff --git a/webapp/components/delete_channel_modal.jsx b/webapp/components/delete_channel_modal.jsx index 7ec6fde442283..315a3cd5e1af1 100644 --- a/webapp/components/delete_channel_modal.jsx +++ b/webapp/components/delete_channel_modal.jsx @@ -13,6 +13,8 @@ import {browserHistory} from 'react-router/es6'; import React from 'react'; +import {loadChannelsForCurrentUser} from 'actions/channel_actions.jsx'; + export default class DeleteChannelModal extends React.Component { constructor(props) { super(props); @@ -29,7 +31,7 @@ export default class DeleteChannelModal extends React.Component { Client.deleteChannel( this.props.channel.id, () => { - AsyncClient.getChannels(true); + loadChannelsForCurrentUser(); }, (err) => { AsyncClient.dispatchError(err, 'handleDelete'); diff --git a/webapp/components/navbar.jsx b/webapp/components/navbar.jsx index cf671e64f82fc..4a06d8914d751 100644 --- a/webapp/components/navbar.jsx +++ b/webapp/components/navbar.jsx @@ -115,7 +115,8 @@ export default class Navbar extends React.Component { Client.leaveChannel(channelId, () => { - AsyncClient.getChannels(true); + ChannelActions.loadChannelsForCurrentUser(); + if (this.state.isFavorite) { ChannelActions.unmarkFavorite(channelId); } diff --git a/webapp/utils/async_client.jsx b/webapp/utils/async_client.jsx index c232702164dfd..1149c565f0898 100644 --- a/webapp/utils/async_client.jsx +++ b/webapp/utils/async_client.jsx @@ -63,7 +63,7 @@ export function checkVersion() { } } -export function getChannels(doVersionCheck) { +export function getChannels() { if (isCallInProgress('getChannels')) { return null; } @@ -74,10 +74,6 @@ export function getChannels(doVersionCheck) { (data) => { callTracker.getChannels = 0; - if (doVersionCheck) { - checkVersion(); - } - AppDispatcher.handleServerAction({ type: ActionTypes.RECEIVED_CHANNELS, channels: data @@ -114,7 +110,7 @@ export function getChannel(id) { ); } -export function getMyChannelMembers(doVersionCheck) { +export function getMyChannelMembers() { if (isCallInProgress('getMyChannelMembers')) { return; } @@ -125,10 +121,6 @@ export function getMyChannelMembers(doVersionCheck) { (data) => { callTracker.getMyChannelMembers = 0; - if (doVersionCheck) { - checkVersion(); - } - AppDispatcher.handleServerAction({ type: ActionTypes.RECEIVED_MY_CHANNEL_MEMBERS, members: data @@ -242,7 +234,7 @@ export function getMoreChannels(force) { } } -export function getChannelStats(channelId = ChannelStore.getCurrentId()) { +export function getChannelStats(channelId = ChannelStore.getCurrentId(), doVersionCheck = false) { if (isCallInProgress('getChannelStats' + channelId) || channelId == null) { return; } @@ -254,6 +246,10 @@ export function getChannelStats(channelId = ChannelStore.getCurrentId()) { (data) => { callTracker['getChannelStats' + channelId] = 0; + if (doVersionCheck) { + checkVersion(); + } + AppDispatcher.handleServerAction({ type: ActionTypes.RECEIVED_CHANNEL_STATS, stats: data