summaryrefslogtreecommitdiffstats
path: root/webapp/actions
diff options
context:
space:
mode:
authorJoram Wilander <jwawilander@gmail.com>2017-04-26 15:49:15 -0400
committerGitHub <noreply@github.com>2017-04-26 15:49:15 -0400
commit7307156c49b194c4afd946cd9e57715d45b5b21d (patch)
tree1601a0026859ff40e631b4aee9632b022ed6f40f /webapp/actions
parent1fef5bf5fe37f161959fbef5d53deccf0168cced (diff)
downloadchat-7307156c49b194c4afd946cd9e57715d45b5b21d.tar.gz
chat-7307156c49b194c4afd946cd9e57715d45b5b21d.tar.bz2
chat-7307156c49b194c4afd946cd9e57715d45b5b21d.zip
PLT-6213 Move team store and actions over to use redux (#6222)
* Move team store and actions over to user redux * Fix JS error when inviting by email
Diffstat (limited to 'webapp/actions')
-rw-r--r--webapp/actions/global_actions.jsx13
-rw-r--r--webapp/actions/team_actions.jsx168
-rw-r--r--webapp/actions/user_actions.jsx47
-rw-r--r--webapp/actions/websocket_actions.jsx1
4 files changed, 102 insertions, 127 deletions
diff --git a/webapp/actions/global_actions.jsx b/webapp/actions/global_actions.jsx
index bd9178604..9709f5f80 100644
--- a/webapp/actions/global_actions.jsx
+++ b/webapp/actions/global_actions.jsx
@@ -36,6 +36,7 @@ import store from 'stores/redux_store.jsx';
const dispatch = store.dispatch;
const getState = store.getState;
import {ChannelTypes} from 'mattermost-redux/action_types';
+import {removeUserFromTeam} from 'mattermost-redux/actions/teams';
export function emitChannelClickEvent(channel) {
function userVisitedFakeChannel(chan, success, fail) {
@@ -189,16 +190,7 @@ export function emitPostFocusRightHandSideFromSearch(post, isMentionSearch) {
}
export function emitLeaveTeam() {
- Client.removeUserFromTeam(
- TeamStore.getCurrentId(),
- UserStore.getCurrentId(),
- () => {
- // DO nothing. The websocket should cause a re-direct
- },
- (err) => {
- AsyncClient.dispatchError(err, 'removeUserFromTeam');
- }
- );
+ removeUserFromTeam(TeamStore.getCurrentId(), UserStore.getCurrentId())(dispatch, getState);
}
export function emitLoadMorePostsEvent() {
@@ -467,7 +459,6 @@ export function emitUserLoggedOutEvent(redirectTo = '/', shouldSignalLogout = tr
export function clientLogout(redirectTo = '/') {
BrowserStore.clear();
ErrorStore.clearLastError();
- TeamStore.clear();
ChannelStore.clear();
stopPeriodicStatusUpdates();
WebsocketActions.close();
diff --git a/webapp/actions/team_actions.jsx b/webapp/actions/team_actions.jsx
index f263108fd..83fbfa0a9 100644
--- a/webapp/actions/team_actions.jsx
+++ b/webapp/actions/team_actions.jsx
@@ -1,15 +1,10 @@
// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.
-import UserStore from 'stores/user_store.jsx';
import TeamStore from 'stores/team_store.jsx';
-import Constants from 'utils/constants.jsx';
-const ActionTypes = Constants.ActionTypes;
-
import * as AsyncClient from 'utils/async_client.jsx';
import Client from 'client/web_client.jsx';
-import AppDispatcher from 'dispatcher/app_dispatcher.jsx';
import {browserHistory} from 'react-router/es6';
@@ -19,85 +14,84 @@ const dispatch = store.dispatch;
const getState = store.getState;
import {getUser} from 'mattermost-redux/actions/users';
+import {
+ createTeam as createTeamRedux,
+ updateTeam as updateTeamRedux,
+ removeUserFromTeam as removeUserFromTeamRedux,
+ getTeamStats,
+ checkIfTeamExists as checkIfTeamExistsRedux,
+ updateTeamMemberRoles as updateTeamMemberRolesRedux,
+ addUsersToTeam as addUsersToTeamRedux,
+ sendEmailInvitesToTeam,
+ getTeamsForUser as getTeamsForUserRedux,
+ getTeamMembersForUser as getTeamMembersForUserRedux
+} from 'mattermost-redux/actions/teams';
export function checkIfTeamExists(teamName, onSuccess, onError) {
- Client.findTeamByName(teamName, onSuccess, onError);
+ checkIfTeamExistsRedux(teamName)(dispatch, getState).then(
+ (exists) => {
+ if (exists != null && onSuccess) {
+ onSuccess(exists);
+ } else if (exists == null && onError) {
+ const serverError = getState().requests.teams.getTeam.error;
+ onError({id: serverError.server_error_id, ...serverError});
+ }
+ }
+ );
}
export function createTeam(team, onSuccess, onError) {
- Client.createTeam(team,
+ createTeamRedux(team)(dispatch, getState).then(
(rteam) => {
- AppDispatcher.handleServerAction({
- type: ActionTypes.CREATED_TEAM,
- team: rteam,
- member: {team_id: rteam.id, user_id: UserStore.getCurrentId(), roles: 'team_admin team_user'}
- });
-
- browserHistory.push('/' + rteam.name + '/channels/town-square');
-
- if (onSuccess) {
+ if (rteam && onSuccess) {
+ browserHistory.push('/' + rteam.name + '/channels/town-square');
onSuccess(rteam);
+ } else if (rteam == null && onError) {
+ const serverError = getState().requests.teams.createTeam.error;
+ onError({id: serverError.server_error_id, ...serverError});
}
- },
- onError
+ }
);
}
export function updateTeam(team, onSuccess, onError) {
- Client.updateTeam(team,
+ updateTeamRedux(team)(dispatch, getState).then(
(rteam) => {
- AppDispatcher.handleServerAction({
- type: ActionTypes.UPDATE_TEAM,
- team: rteam
- });
-
- browserHistory.push('/' + rteam.name + '/channels/town-square');
-
- if (onSuccess) {
+ if (rteam && onSuccess) {
+ browserHistory.push('/' + rteam.name + '/channels/town-square');
onSuccess(rteam);
+ } else if (rteam == null && onError) {
+ const serverError = getState().requests.teams.updateTeam.error;
+ onError({id: serverError.server_error_id, ...serverError});
}
},
- onError
);
}
export function removeUserFromTeam(teamId, userId, success, error) {
- Client.removeUserFromTeam(
- teamId,
- userId,
- () => {
- TeamStore.removeMemberInTeam(teamId, userId);
- UserStore.removeProfileFromTeam(teamId, userId);
- UserStore.emitInTeamChange();
+ removeUserFromTeamRedux(teamId, userId)(dispatch, getState).then(
+ (data) => {
getUser(userId)(dispatch, getState);
- AsyncClient.getTeamStats(teamId);
+ getTeamStats(teamId)(dispatch, getState);
- if (success) {
+ if (data && success) {
success();
+ } else if (data == null && error) {
+ const serverError = getState().requests.teams.removeUserFromTeam.error;
+ error({id: serverError.server_error_id, ...serverError});
}
},
- (err) => {
- AsyncClient.dispatchError(err, 'removeUserFromTeam');
-
- if (error) {
- error(err);
- }
- }
);
}
export function updateTeamMemberRoles(teamId, userId, newRoles, success, error) {
- Client.updateTeamMemberRoles(teamId, userId, newRoles,
- () => {
- AsyncClient.getTeamMember(teamId, userId);
-
- if (success) {
+ updateTeamMemberRolesRedux(teamId, userId, newRoles)(dispatch, getState).then(
+ (data) => {
+ if (data && success) {
success();
- }
- },
- (err) => {
- if (error) {
- error(err);
+ } else if (data == null && error) {
+ const serverError = getState().requests.teams.updateTeamMember.error;
+ error({id: serverError.server_error_id, ...serverError});
}
}
);
@@ -122,25 +116,13 @@ export function addUserToTeamFromInvite(data, hash, inviteId, success, error) {
}
export function addUsersToTeam(teamId, userIds, success, error) {
- Client.addUsersToTeam(
- teamId,
- userIds,
+ addUsersToTeamRedux(teamId, userIds)(dispatch, getState).then(
(teamMembers) => {
- teamMembers.forEach((member) => {
- TeamStore.removeMemberNotInTeam(teamId, member.user_id);
- UserStore.removeProfileNotInTeam(teamId, member.user_id);
- });
- UserStore.emitNotInTeamChange();
-
- if (success) {
+ if (teamMembers && success) {
success(teamMembers);
- }
- },
- (err) => {
- AsyncClient.dispatchError(err, 'addUsersToTeam');
-
- if (error) {
- error(err);
+ } else if (teamMembers == null && error) {
+ const serverError = getState().requests.teams.addUserToTeam.error;
+ error({id: serverError.server_error_id, ...serverError});
}
}
);
@@ -163,16 +145,20 @@ export function getInviteInfo(inviteId, success, error) {
}
export function inviteMembers(data, success, error) {
- Client.inviteMembers(
- data,
- () => {
- if (success) {
+ if (!data.invites) {
+ success();
+ }
+ const emails = [];
+ data.invites.forEach((i) => {
+ emails.push(i.email);
+ });
+ sendEmailInvitesToTeam(TeamStore.getCurrentId(), emails)(dispatch, getState).then(
+ (result) => {
+ if (result && success) {
success();
- }
- },
- (err) => {
- if (err) {
- error(err);
+ } else if (result == null && error) {
+ const serverError = getState().requests.teams.emailInvite.error;
+ error({id: serverError.server_error_id, ...serverError});
}
}
);
@@ -184,9 +170,27 @@ export function switchTeams(url) {
}
export function getTeamsForUser(userId, success, error) {
- Client.getTeamsForUser(userId, success, error);
+ getTeamsForUserRedux(userId)(dispatch, getState).then(
+ (result) => {
+ if (result && success) {
+ success(result);
+ } else if (result == null && error) {
+ const serverError = getState().requests.teams.getTeams.error;
+ error({id: serverError.server_error_id, ...serverError});
+ }
+ }
+ );
}
export function getTeamMembersForUser(userId, success, error) {
- Client.getTeamMembersForUser(userId, success, error);
+ getTeamMembersForUserRedux(userId)(dispatch, getState).then(
+ (result) => {
+ if (result && success) {
+ success(result);
+ } else if (result == null && error) {
+ const serverError = getState().requests.teams.getTeamMembers.error;
+ error({id: serverError.server_error_id, ...serverError});
+ }
+ }
+ );
}
diff --git a/webapp/actions/user_actions.jsx b/webapp/actions/user_actions.jsx
index d810b4c2e..c4e0f4fc6 100644
--- a/webapp/actions/user_actions.jsx
+++ b/webapp/actions/user_actions.jsx
@@ -39,10 +39,12 @@ import {
updateUserPassword,
createUser,
login,
- loadMe as loadMeRedux
+ loadMe as loadMeRedux,
+ updateUserRoles as updateUserRolesRedux
} from 'mattermost-redux/actions/users';
import {getClientConfig, getLicenseConfig} from 'mattermost-redux/actions/general';
+import {getTeamMembersByIds, getMyTeamMembers} from 'mattermost-redux/actions/teams';
export function loadMe(callback) {
loadMeRedux()(dispatch, getState).then(
@@ -169,30 +171,13 @@ export function loadProfilesWithoutTeam(page, perPage, success) {
}
function loadTeamMembersForProfiles(userIds, teamId, success, error) {
- Client.getTeamMembersByIds(
- teamId,
- userIds,
+ getTeamMembersByIds(teamId, userIds)(dispatch, getState).then(
(data) => {
- const memberMap = {};
- for (let i = 0; i < data.length; i++) {
- memberMap[data[i].user_id] = data[i];
- }
-
- AppDispatcher.handleServerAction({
- type: ActionTypes.RECEIVED_MEMBERS_IN_TEAM,
- team_id: teamId,
- team_members: memberMap
- });
-
- if (success) {
+ if (data && success) {
success(data);
- }
- },
- (err) => {
- AsyncClient.dispatchError(err, 'getTeamMembersByIds');
-
- if (error) {
- error(err);
+ } else if (data == null && error) {
+ const serverError = getState().requests.teams.getTeamMembers.error;
+ error({id: serverError.server_error_id, ...serverError});
}
}
);
@@ -585,7 +570,7 @@ export function updateUserNotifyProps(props, success, error) {
}
export function updateUserRoles(userId, newRoles, success, error) {
- updateUserRoles(userId, newRoles)(dispatch, getState).then(
+ updateUserRolesRedux(userId, newRoles)(dispatch, getState).then(
(data) => {
if (data && success) {
success(data);
@@ -852,13 +837,9 @@ export function getMissingProfiles(ids) {
}
export function loadMyTeamMembers() {
- Client.getMyTeamMembers((data) => {
- AppDispatcher.handleServerAction({
- type: ActionTypes.RECEIVED_MY_TEAM_MEMBERS,
- team_members: data
- });
- AsyncClient.getMyTeamsUnread();
- }, (err) => {
- AsyncClient.dispatchError(err, 'getMyTeamMembers');
- });
+ getMyTeamMembers()(dispatch, getState).then(
+ () => {
+ AsyncClient.getMyTeamsUnread();
+ }
+ );
}
diff --git a/webapp/actions/websocket_actions.jsx b/webapp/actions/websocket_actions.jsx
index bd220947a..9ed17c21d 100644
--- a/webapp/actions/websocket_actions.jsx
+++ b/webapp/actions/websocket_actions.jsx
@@ -280,7 +280,6 @@ function handleLeaveTeamEvent(msg) {
// if they are on the team being removed redirect them to default team
if (TeamStore.getCurrentId() === msg.data.team_id) {
- TeamStore.setCurrentId('');
Client.setTeamId('');
BrowserStore.removeGlobalItem('team');
BrowserStore.removeGlobalItem(msg.data.team_id);