From 6097f93704862215791ce8855c31471e40ef0af1 Mon Sep 17 00:00:00 2001 From: Carlos Tadeu Panato Junior Date: Fri, 20 Jan 2017 15:45:22 +0100 Subject: Move instances of Client.leaveChannel() in components to an action (#5131) * Move instances of Client.leaveChannel() in components to an action * create isFavoriteChannelId --- webapp/actions/channel_actions.jsx | 27 +++++++++++++++++++++++++++ webapp/components/channel_header.jsx | 19 +------------------ webapp/components/navbar.jsx | 22 ++-------------------- webapp/utils/channel_utils.jsx | 4 ++++ 4 files changed, 34 insertions(+), 38 deletions(-) (limited to 'webapp') diff --git a/webapp/actions/channel_actions.jsx b/webapp/actions/channel_actions.jsx index c9c04d462..340f90fc4 100644 --- a/webapp/actions/channel_actions.jsx +++ b/webapp/actions/channel_actions.jsx @@ -6,6 +6,7 @@ import AppDispatcher from 'dispatcher/app_dispatcher.jsx'; import TeamStore from 'stores/team_store.jsx'; import UserStore from 'stores/user_store.jsx'; import ChannelStore from 'stores/channel_store.jsx'; +import * as ChannelUtils from 'utils/channel_utils.jsx'; import PreferenceStore from 'stores/preference_store.jsx'; import {loadProfilesAndTeamMembersForDMSidebar} from 'actions/user_actions.jsx'; @@ -434,3 +435,29 @@ export function getChannelMembersForUserIds(channelId, userIds, success, error) } ); } + +export function leaveChannel(channelId, success, error) { + Client.leaveChannel(channelId, + () => { + loadChannelsForCurrentUser(); + + if (ChannelUtils.isFavoriteChannelId(channelId)) { + unmarkFavorite(channelId); + } + + const townsquare = ChannelStore.getByName('town-square'); + browserHistory.push(TeamStore.getCurrentTeamRelativeUrl() + '/channels/' + townsquare.name); + + if (success) { + success(); + } + }, + (err) => { + AsyncClient.dispatchError(err, 'handleLeave'); + + if (error) { + error(err); + } + } + ); +} diff --git a/webapp/components/channel_header.jsx b/webapp/components/channel_header.jsx index fc0ec132e..12f9fb6c6 100644 --- a/webapp/components/channel_header.jsx +++ b/webapp/components/channel_header.jsx @@ -29,15 +29,12 @@ import * as ChannelActions from 'actions/channel_actions.jsx'; import * as Utils from 'utils/utils.jsx'; import * as ChannelUtils from 'utils/channel_utils.jsx'; import * as TextFormatting from 'utils/text_formatting.jsx'; -import Client from 'client/web_client.jsx'; -import * as AsyncClient from 'utils/async_client.jsx'; import {getFlaggedPosts} from 'actions/post_actions.jsx'; import {Constants, Preferences, UserStatuses} from 'utils/constants.jsx'; import React from 'react'; import {FormattedMessage} from 'react-intl'; -import {browserHistory} from 'react-router/es6'; import {Tooltip, OverlayTrigger, Popover} from 'react-bootstrap'; const PreReleaseFeatures = Constants.PRE_RELEASE_FEATURES; @@ -131,21 +128,7 @@ export default class ChannelHeader extends React.Component { } handleLeave() { - Client.leaveChannel(this.state.channel.id, - () => { - const channelId = this.state.channel.id; - - if (this.state.isFavorite) { - ChannelActions.unmarkFavorite(channelId); - } - - const townsquare = ChannelStore.getByName('town-square'); - browserHistory.push(TeamStore.getCurrentTeamRelativeUrl() + '/channels/' + townsquare.name); - }, - (err) => { - AsyncClient.dispatchError(err, 'handleLeave'); - } - ); + ChannelActions.leaveChannel(this.state.channel.id); } toggleFavorite = (e) => { diff --git a/webapp/components/navbar.jsx b/webapp/components/navbar.jsx index 338d4edd1..b54b8701e 100644 --- a/webapp/components/navbar.jsx +++ b/webapp/components/navbar.jsx @@ -22,8 +22,6 @@ import PreferenceStore from 'stores/preference_store.jsx'; import ChannelSwitchModal from './channel_switch_modal.jsx'; -import Client from 'client/web_client.jsx'; -import * as AsyncClient from 'utils/async_client.jsx'; import * as Utils from 'utils/utils.jsx'; import * as ChannelUtils from 'utils/channel_utils.jsx'; import * as ChannelActions from 'actions/channel_actions.jsx'; @@ -37,7 +35,7 @@ import {FormattedMessage} from 'react-intl'; import {Popover, OverlayTrigger} from 'react-bootstrap'; -import {Link, browserHistory} from 'react-router/es6'; +import {Link} from 'react-router/es6'; import React from 'react'; @@ -111,23 +109,7 @@ export default class Navbar extends React.Component { } handleLeave() { - var channelId = this.state.channel.id; - - Client.leaveChannel(channelId, - () => { - ChannelActions.loadChannelsForCurrentUser(); - - if (this.state.isFavorite) { - ChannelActions.unmarkFavorite(channelId); - } - - const townsquare = ChannelStore.getByName('town-square'); - browserHistory.push(TeamStore.getCurrentTeamRelativeUrl() + '/channels/' + townsquare.name); - }, - (err) => { - AsyncClient.dispatchError(err, 'handleLeave'); - } - ); + ChannelActions.leaveChannel(this.state.channel.id); } hideSidebars(e) { diff --git a/webapp/utils/channel_utils.jsx b/webapp/utils/channel_utils.jsx index 14a0e63b3..2189cd789 100644 --- a/webapp/utils/channel_utils.jsx +++ b/webapp/utils/channel_utils.jsx @@ -43,6 +43,10 @@ export function isFavoriteChannel(channel) { return PreferenceStore.getBool(Preferences.CATEGORY_FAVORITE_CHANNEL, channel.id); } +export function isFavoriteChannelId(channelId) { + return PreferenceStore.getBool(Preferences.CATEGORY_FAVORITE_CHANNEL, channelId); +} + export function isNotDeletedChannel(channel) { return channel.delete_at === 0; } -- cgit v1.2.3-1-g7c22