mattermost-redux
Version:
Common code (API client, Redux stores, logic, utility functions) for building a Mattermost client
910 lines • 39.6 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.updateNoticesAsViewed = exports.getInProductNotices = exports.membersMinusGroupMembers = exports.invalidateAllEmailInvites = exports.updateTeamMemberSchemeRoles = exports.updateTeamScheme = exports.removeTeamIcon = exports.setTeamIcon = exports.joinTeam = exports.checkIfTeamExists = exports.getTeamInviteInfo = exports.sendEmailGuestInvitesToChannelsGracefully = exports.sendEmailInvitesToTeamGracefully = exports.sendEmailGuestInvitesToChannels = exports.sendEmailInvitesToTeam = exports.updateTeamMemberRoles = exports.removeUserFromTeam = exports.addUsersToTeamGracefully = exports.addUsersToTeam = exports.addUserToTeam = exports.addUserToTeamFromInvite = exports.getTeamStats = exports.getTeamMembersForUser = exports.getTeamsForUser = exports.getTeamMembersByIds = exports.getTeamMember = exports.getTeamMembers = exports.getMyTeamMembers = exports.regenerateTeamInviteId = exports.patchTeam = exports.updateTeam = exports.deleteTeam = exports.createTeam = exports.searchTeams = exports.getTeams = exports.getTeamByName = exports.getTeam = exports.getMyTeamUnreads = exports.getMyTeams = exports.selectTeam = void 0;
var tslib_1 = require("tslib");
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See LICENSE.txt for license information.
var client_1 = require("../client");
var constants_1 = require("../constants");
var action_types_1 = require("../action_types");
var event_emitter_1 = tslib_1.__importDefault(require("../utils/event_emitter"));
var general_1 = require("../selectors/entities/general");
var teams_1 = require("../selectors/entities/teams");
var users_1 = require("../selectors/entities/users");
var actions_1 = require("../types/actions");
var channels_1 = require("./channels");
var errors_1 = require("./errors");
var helpers_1 = require("./helpers");
var users_2 = require("./users");
var roles_1 = require("./roles");
function getProfilesAndStatusesForMembers(userIds, dispatch, getState) {
return tslib_1.__awaiter(this, void 0, void 0, function () {
var _a, currentUserId, profiles, statuses, profilesToLoad, statusesToLoad, requests;
return tslib_1.__generator(this, function (_b) {
switch (_b.label) {
case 0:
_a = getState().entities.users, currentUserId = _a.currentUserId, profiles = _a.profiles, statuses = _a.statuses;
profilesToLoad = [];
statusesToLoad = [];
userIds.forEach(function (userId) {
if (!profiles[userId] && !profilesToLoad.includes(userId) && userId !== currentUserId) {
profilesToLoad.push(userId);
}
if (!statuses[userId] && !statusesToLoad.includes(userId) && userId !== currentUserId) {
statusesToLoad.push(userId);
}
});
requests = [];
if (profilesToLoad.length) {
requests.push(dispatch(users_2.getProfilesByIds(profilesToLoad)));
}
if (statusesToLoad.length) {
requests.push(dispatch(users_2.getStatusesByIds(statusesToLoad)));
}
return [4 /*yield*/, Promise.all(requests)];
case 1:
_b.sent();
return [2 /*return*/];
}
});
});
}
function selectTeam(team) {
var _this = this;
return function (dispatch) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
var teamId;
return tslib_1.__generator(this, function (_a) {
teamId = (typeof team === 'string') ? team : team.id;
dispatch({
type: action_types_1.TeamTypes.SELECT_TEAM,
data: teamId,
});
return [2 /*return*/, { data: true }];
});
}); };
}
exports.selectTeam = selectTeam;
function getMyTeams() {
return helpers_1.bindClientFunc({
clientFunc: client_1.Client4.getMyTeams,
onRequest: action_types_1.TeamTypes.MY_TEAMS_REQUEST,
onSuccess: [action_types_1.TeamTypes.RECEIVED_TEAMS_LIST, action_types_1.TeamTypes.MY_TEAMS_SUCCESS],
onFailure: action_types_1.TeamTypes.MY_TEAMS_FAILURE,
});
}
exports.getMyTeams = getMyTeams;
function getMyTeamUnreads() {
return helpers_1.bindClientFunc({
clientFunc: client_1.Client4.getMyTeamUnreads,
onSuccess: action_types_1.TeamTypes.RECEIVED_MY_TEAM_UNREADS,
});
}
exports.getMyTeamUnreads = getMyTeamUnreads;
function getTeam(teamId) {
return helpers_1.bindClientFunc({
clientFunc: client_1.Client4.getTeam,
onSuccess: action_types_1.TeamTypes.RECEIVED_TEAM,
params: [
teamId,
],
});
}
exports.getTeam = getTeam;
function getTeamByName(teamName) {
return helpers_1.bindClientFunc({
clientFunc: client_1.Client4.getTeamByName,
onSuccess: action_types_1.TeamTypes.RECEIVED_TEAM,
params: [
teamName,
],
});
}
exports.getTeamByName = getTeamByName;
function getTeams(page, perPage, includeTotalCount) {
var _this = this;
if (page === void 0) { page = 0; }
if (perPage === void 0) { perPage = constants_1.General.TEAMS_CHUNK_SIZE; }
if (includeTotalCount === void 0) { includeTotalCount = false; }
return function (dispatch, getState) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
var data, error_1, actions;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0:
dispatch({ type: action_types_1.TeamTypes.GET_TEAMS_REQUEST, data: data });
_a.label = 1;
case 1:
_a.trys.push([1, 3, , 4]);
return [4 /*yield*/, client_1.Client4.getTeams(page, perPage, includeTotalCount)];
case 2:
data = (_a.sent());
return [3 /*break*/, 4];
case 3:
error_1 = _a.sent();
helpers_1.forceLogoutIfNecessary(error_1, dispatch, getState);
dispatch({ type: action_types_1.TeamTypes.GET_TEAMS_FAILURE, data: data });
dispatch(errors_1.logError(error_1));
return [2 /*return*/, { error: error_1 }];
case 4:
actions = [
{
type: action_types_1.TeamTypes.RECEIVED_TEAMS_LIST,
data: includeTotalCount ? data.teams : data,
},
{
type: action_types_1.TeamTypes.GET_TEAMS_SUCCESS,
data: data,
},
];
if (includeTotalCount) {
actions.push({
type: action_types_1.TeamTypes.RECEIVED_TOTAL_TEAM_COUNT,
data: data.total_count,
});
}
dispatch(actions_1.batchActions(actions));
return [2 /*return*/, { data: data }];
}
});
}); };
}
exports.getTeams = getTeams;
function searchTeams(term, opts) {
var _this = this;
if (opts === void 0) { opts = {}; }
return function (dispatch, getState) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
var response, error_2, teams;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0:
dispatch({ type: action_types_1.TeamTypes.GET_TEAMS_REQUEST, data: null });
_a.label = 1;
case 1:
_a.trys.push([1, 3, , 4]);
return [4 /*yield*/, client_1.Client4.searchTeams(term, opts)];
case 2:
response = _a.sent();
return [3 /*break*/, 4];
case 3:
error_2 = _a.sent();
helpers_1.forceLogoutIfNecessary(error_2, dispatch, getState);
dispatch(actions_1.batchActions([
{ type: action_types_1.TeamTypes.GET_TEAMS_FAILURE, error: error_2 },
errors_1.logError(error_2),
]));
return [2 /*return*/, { error: error_2 }];
case 4:
if (!opts.page || !opts.per_page) {
teams = response;
}
else {
teams = response.teams;
}
dispatch(actions_1.batchActions([
{
type: action_types_1.TeamTypes.RECEIVED_TEAMS_LIST,
data: teams,
},
{
type: action_types_1.TeamTypes.GET_TEAMS_SUCCESS,
},
]));
return [2 /*return*/, { data: response }];
}
});
}); };
}
exports.searchTeams = searchTeams;
function createTeam(team) {
var _this = this;
return function (dispatch, getState) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
var created, error_3, member;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0:
_a.trys.push([0, 2, , 3]);
return [4 /*yield*/, client_1.Client4.createTeam(team)];
case 1:
created = _a.sent();
return [3 /*break*/, 3];
case 2:
error_3 = _a.sent();
helpers_1.forceLogoutIfNecessary(error_3, dispatch, getState);
dispatch(errors_1.logError(error_3));
return [2 /*return*/, { error: error_3 }];
case 3:
member = {
team_id: created.id,
user_id: getState().entities.users.currentUserId,
roles: constants_1.General.TEAM_ADMIN_ROLE + " " + constants_1.General.TEAM_USER_ROLE,
delete_at: 0,
msg_count: 0,
mention_count: 0,
};
dispatch(actions_1.batchActions([
{
type: action_types_1.TeamTypes.CREATED_TEAM,
data: created,
},
{
type: action_types_1.TeamTypes.RECEIVED_MY_TEAM_MEMBER,
data: member,
},
{
type: action_types_1.TeamTypes.SELECT_TEAM,
data: created.id,
},
]));
dispatch(roles_1.loadRolesIfNeeded(member.roles.split(' ')));
return [2 /*return*/, { data: created }];
}
});
}); };
}
exports.createTeam = createTeam;
function deleteTeam(teamId) {
var _this = this;
return function (dispatch, getState) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
var error_4, entities, currentTeamId, actions;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0:
_a.trys.push([0, 2, , 3]);
return [4 /*yield*/, client_1.Client4.deleteTeam(teamId)];
case 1:
_a.sent();
return [3 /*break*/, 3];
case 2:
error_4 = _a.sent();
helpers_1.forceLogoutIfNecessary(error_4, dispatch, getState);
dispatch(errors_1.logError(error_4));
return [2 /*return*/, { error: error_4 }];
case 3:
entities = getState().entities;
currentTeamId = entities.teams.currentTeamId;
actions = [];
if (teamId === currentTeamId) {
event_emitter_1.default.emit('leave_team');
actions.push({ type: action_types_1.ChannelTypes.SELECT_CHANNEL, data: '' });
}
actions.push({
type: action_types_1.TeamTypes.RECEIVED_TEAM_DELETED,
data: { id: teamId },
});
dispatch(actions_1.batchActions(actions));
return [2 /*return*/, { data: true }];
}
});
}); };
}
exports.deleteTeam = deleteTeam;
function updateTeam(team) {
return helpers_1.bindClientFunc({
clientFunc: client_1.Client4.updateTeam,
onSuccess: action_types_1.TeamTypes.UPDATED_TEAM,
params: [
team,
],
});
}
exports.updateTeam = updateTeam;
function patchTeam(team) {
return helpers_1.bindClientFunc({
clientFunc: client_1.Client4.patchTeam,
onSuccess: action_types_1.TeamTypes.PATCHED_TEAM,
params: [
team,
],
});
}
exports.patchTeam = patchTeam;
function regenerateTeamInviteId(teamId) {
return helpers_1.bindClientFunc({
clientFunc: client_1.Client4.regenerateTeamInviteId,
onSuccess: action_types_1.TeamTypes.REGENERATED_TEAM_INVITE_ID,
params: [
teamId,
],
});
}
exports.regenerateTeamInviteId = regenerateTeamInviteId;
function getMyTeamMembers() {
var _this = this;
return function (dispatch, getState) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
var getMyTeamMembersFunc, teamMembers, roles, _a, _b, teamMember, _c, _d, role;
var e_1, _e, e_2, _f;
return tslib_1.__generator(this, function (_g) {
switch (_g.label) {
case 0:
getMyTeamMembersFunc = helpers_1.bindClientFunc({
clientFunc: client_1.Client4.getMyTeamMembers,
onSuccess: action_types_1.TeamTypes.RECEIVED_MY_TEAM_MEMBERS,
});
return [4 /*yield*/, getMyTeamMembersFunc(dispatch, getState)];
case 1:
teamMembers = (_g.sent());
if ('data' in teamMembers && teamMembers.data) {
roles = new Set();
try {
for (_a = tslib_1.__values(teamMembers.data), _b = _a.next(); !_b.done; _b = _a.next()) {
teamMember = _b.value;
try {
for (_c = (e_2 = void 0, tslib_1.__values(teamMember.roles.split(' '))), _d = _c.next(); !_d.done; _d = _c.next()) {
role = _d.value;
roles.add(role);
}
}
catch (e_2_1) { e_2 = { error: e_2_1 }; }
finally {
try {
if (_d && !_d.done && (_f = _c.return)) _f.call(_c);
}
finally { if (e_2) throw e_2.error; }
}
}
}
catch (e_1_1) { e_1 = { error: e_1_1 }; }
finally {
try {
if (_b && !_b.done && (_e = _a.return)) _e.call(_a);
}
finally { if (e_1) throw e_1.error; }
}
if (roles.size > 0) {
dispatch(roles_1.loadRolesIfNeeded(tslib_1.__spread(roles)));
}
}
return [2 /*return*/, teamMembers];
}
});
}); };
}
exports.getMyTeamMembers = getMyTeamMembers;
function getTeamMembers(teamId, page, perPage, options) {
if (page === void 0) { page = 0; }
if (perPage === void 0) { perPage = constants_1.General.TEAMS_CHUNK_SIZE; }
return helpers_1.bindClientFunc({
clientFunc: client_1.Client4.getTeamMembers,
onRequest: action_types_1.TeamTypes.GET_TEAM_MEMBERS_REQUEST,
onSuccess: [action_types_1.TeamTypes.RECEIVED_MEMBERS_IN_TEAM, action_types_1.TeamTypes.GET_TEAM_MEMBERS_SUCCESS],
onFailure: action_types_1.TeamTypes.GET_TEAM_MEMBERS_FAILURE,
params: [
teamId,
page,
perPage,
options,
],
});
}
exports.getTeamMembers = getTeamMembers;
function getTeamMember(teamId, userId) {
var _this = this;
return function (dispatch, getState) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
var member, memberRequest, error_5;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0:
_a.trys.push([0, 2, , 3]);
memberRequest = client_1.Client4.getTeamMember(teamId, userId);
getProfilesAndStatusesForMembers([userId], dispatch, getState);
return [4 /*yield*/, memberRequest];
case 1:
member = _a.sent();
return [3 /*break*/, 3];
case 2:
error_5 = _a.sent();
helpers_1.forceLogoutIfNecessary(error_5, dispatch, getState);
dispatch(errors_1.logError(error_5));
return [2 /*return*/, { error: error_5 }];
case 3:
dispatch({
type: action_types_1.TeamTypes.RECEIVED_MEMBERS_IN_TEAM,
data: [member],
});
return [2 /*return*/, { data: member }];
}
});
}); };
}
exports.getTeamMember = getTeamMember;
function getTeamMembersByIds(teamId, userIds) {
var _this = this;
return function (dispatch, getState) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
var members, membersRequest, error_6;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0:
_a.trys.push([0, 2, , 3]);
membersRequest = client_1.Client4.getTeamMembersByIds(teamId, userIds);
getProfilesAndStatusesForMembers(userIds, dispatch, getState);
return [4 /*yield*/, membersRequest];
case 1:
members = _a.sent();
return [3 /*break*/, 3];
case 2:
error_6 = _a.sent();
helpers_1.forceLogoutIfNecessary(error_6, dispatch, getState);
dispatch(errors_1.logError(error_6));
return [2 /*return*/, { error: error_6 }];
case 3:
dispatch({
type: action_types_1.TeamTypes.RECEIVED_MEMBERS_IN_TEAM,
data: members,
});
return [2 /*return*/, { data: members }];
}
});
}); };
}
exports.getTeamMembersByIds = getTeamMembersByIds;
function getTeamsForUser(userId) {
return helpers_1.bindClientFunc({
clientFunc: client_1.Client4.getTeamsForUser,
onRequest: action_types_1.TeamTypes.GET_TEAMS_REQUEST,
onSuccess: [action_types_1.TeamTypes.RECEIVED_TEAMS_LIST, action_types_1.TeamTypes.GET_TEAMS_SUCCESS],
onFailure: action_types_1.TeamTypes.GET_TEAMS_FAILURE,
params: [
userId,
],
});
}
exports.getTeamsForUser = getTeamsForUser;
function getTeamMembersForUser(userId) {
return helpers_1.bindClientFunc({
clientFunc: client_1.Client4.getTeamMembersForUser,
onSuccess: action_types_1.TeamTypes.RECEIVED_TEAM_MEMBERS,
params: [
userId,
],
});
}
exports.getTeamMembersForUser = getTeamMembersForUser;
function getTeamStats(teamId) {
return helpers_1.bindClientFunc({
clientFunc: client_1.Client4.getTeamStats,
onSuccess: action_types_1.TeamTypes.RECEIVED_TEAM_STATS,
params: [
teamId,
],
});
}
exports.getTeamStats = getTeamStats;
function addUserToTeamFromInvite(token, inviteId) {
return helpers_1.bindClientFunc({
clientFunc: client_1.Client4.addToTeamFromInvite,
onRequest: action_types_1.TeamTypes.ADD_TO_TEAM_FROM_INVITE_REQUEST,
onSuccess: action_types_1.TeamTypes.ADD_TO_TEAM_FROM_INVITE_SUCCESS,
onFailure: action_types_1.TeamTypes.ADD_TO_TEAM_FROM_INVITE_FAILURE,
params: [
token,
inviteId,
],
});
}
exports.addUserToTeamFromInvite = addUserToTeamFromInvite;
function addUserToTeam(teamId, userId) {
var _this = this;
return function (dispatch, getState) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
var member, error_7;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0:
_a.trys.push([0, 2, , 3]);
return [4 /*yield*/, client_1.Client4.addToTeam(teamId, userId)];
case 1:
member = _a.sent();
return [3 /*break*/, 3];
case 2:
error_7 = _a.sent();
helpers_1.forceLogoutIfNecessary(error_7, dispatch, getState);
dispatch(errors_1.logError(error_7));
return [2 /*return*/, { error: error_7 }];
case 3:
dispatch(actions_1.batchActions([
{
type: action_types_1.UserTypes.RECEIVED_PROFILE_IN_TEAM,
data: { id: teamId, user_id: userId },
},
{
type: action_types_1.TeamTypes.RECEIVED_MEMBER_IN_TEAM,
data: member,
},
]));
return [2 /*return*/, { data: member }];
}
});
}); };
}
exports.addUserToTeam = addUserToTeam;
function addUsersToTeam(teamId, userIds) {
var _this = this;
return function (dispatch, getState) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
var members, error_8, profiles;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0:
_a.trys.push([0, 2, , 3]);
return [4 /*yield*/, client_1.Client4.addUsersToTeam(teamId, userIds)];
case 1:
members = _a.sent();
return [3 /*break*/, 3];
case 2:
error_8 = _a.sent();
helpers_1.forceLogoutIfNecessary(error_8, dispatch, getState);
dispatch(errors_1.logError(error_8));
return [2 /*return*/, { error: error_8 }];
case 3:
profiles = [];
members.forEach(function (m) { return profiles.push({ id: m.user_id }); });
dispatch(actions_1.batchActions([
{
type: action_types_1.UserTypes.RECEIVED_PROFILES_LIST_IN_TEAM,
data: profiles,
id: teamId,
},
{
type: action_types_1.TeamTypes.RECEIVED_MEMBERS_IN_TEAM,
data: members,
},
]));
return [2 /*return*/, { data: members }];
}
});
}); };
}
exports.addUsersToTeam = addUsersToTeam;
function addUsersToTeamGracefully(teamId, userIds) {
var _this = this;
return function (dispatch, getState) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
var result, error_9, addedMembers, profiles, members;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0:
_a.trys.push([0, 2, , 3]);
return [4 /*yield*/, client_1.Client4.addUsersToTeamGracefully(teamId, userIds)];
case 1:
result = _a.sent();
return [3 /*break*/, 3];
case 2:
error_9 = _a.sent();
helpers_1.forceLogoutIfNecessary(error_9, dispatch, getState);
dispatch(errors_1.logError(error_9));
return [2 /*return*/, { error: error_9 }];
case 3:
addedMembers = result ? result.filter(function (m) { return !m.error; }) : [];
profiles = addedMembers.map(function (m) { return ({ id: m.user_id }); });
members = addedMembers.map(function (m) { return m.member; });
dispatch(actions_1.batchActions([
{
type: action_types_1.UserTypes.RECEIVED_PROFILES_LIST_IN_TEAM,
data: profiles,
id: teamId,
},
{
type: action_types_1.TeamTypes.RECEIVED_MEMBERS_IN_TEAM,
data: members,
},
]));
return [2 /*return*/, { data: result }];
}
});
}); };
}
exports.addUsersToTeamGracefully = addUsersToTeamGracefully;
function removeUserFromTeam(teamId, userId) {
var _this = this;
return function (dispatch, getState) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
var error_10, member, actions, state, currentUserId, _a, channels, myMembers, _b, _c, channelMember, channel;
var e_3, _d;
return tslib_1.__generator(this, function (_e) {
switch (_e.label) {
case 0:
_e.trys.push([0, 2, , 3]);
return [4 /*yield*/, client_1.Client4.removeFromTeam(teamId, userId)];
case 1:
_e.sent();
return [3 /*break*/, 3];
case 2:
error_10 = _e.sent();
helpers_1.forceLogoutIfNecessary(error_10, dispatch, getState);
dispatch(errors_1.logError(error_10));
return [2 /*return*/, { error: error_10 }];
case 3:
member = {
team_id: teamId,
user_id: userId,
};
actions = [
{
type: action_types_1.UserTypes.RECEIVED_PROFILE_NOT_IN_TEAM,
data: { id: teamId, user_id: userId },
},
{
type: action_types_1.TeamTypes.REMOVE_MEMBER_FROM_TEAM,
data: member,
},
];
state = getState();
currentUserId = users_1.getCurrentUserId(state);
if (userId === currentUserId) {
_a = state.entities.channels, channels = _a.channels, myMembers = _a.myMembers;
try {
for (_b = tslib_1.__values(Object.values(myMembers)), _c = _b.next(); !_c.done; _c = _b.next()) {
channelMember = _c.value;
channel = channels[channelMember.channel_id];
if (channel && channel.team_id === teamId) {
actions.push({
type: action_types_1.ChannelTypes.LEAVE_CHANNEL,
data: channel,
});
}
}
}
catch (e_3_1) { e_3 = { error: e_3_1 }; }
finally {
try {
if (_c && !_c.done && (_d = _b.return)) _d.call(_b);
}
finally { if (e_3) throw e_3.error; }
}
if (teamId === teams_1.getCurrentTeamId(state)) {
actions.push(channels_1.selectChannel(''));
}
}
dispatch(actions_1.batchActions(actions));
return [2 /*return*/, { data: true }];
}
});
}); };
}
exports.removeUserFromTeam = removeUserFromTeam;
function updateTeamMemberRoles(teamId, userId, roles) {
var _this = this;
return function (dispatch, getState) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
var error_11, membersInTeam;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0:
_a.trys.push([0, 2, , 3]);
return [4 /*yield*/, client_1.Client4.updateTeamMemberRoles(teamId, userId, roles)];
case 1:
_a.sent();
return [3 /*break*/, 3];
case 2:
error_11 = _a.sent();
helpers_1.forceLogoutIfNecessary(error_11, dispatch, getState);
dispatch(errors_1.logError(error_11));
return [2 /*return*/, { error: error_11 }];
case 3:
membersInTeam = getState().entities.teams.membersInTeam[teamId];
if (membersInTeam && membersInTeam[userId]) {
dispatch({
type: action_types_1.TeamTypes.RECEIVED_MEMBER_IN_TEAM,
data: tslib_1.__assign(tslib_1.__assign({}, membersInTeam[userId]), { roles: roles }),
});
}
return [2 /*return*/, { data: true }];
}
});
}); };
}
exports.updateTeamMemberRoles = updateTeamMemberRoles;
function sendEmailInvitesToTeam(teamId, emails) {
return helpers_1.bindClientFunc({
clientFunc: client_1.Client4.sendEmailInvitesToTeam,
params: [
teamId,
emails,
],
});
}
exports.sendEmailInvitesToTeam = sendEmailInvitesToTeam;
function sendEmailGuestInvitesToChannels(teamId, channelIds, emails, message) {
return helpers_1.bindClientFunc({
clientFunc: client_1.Client4.sendEmailGuestInvitesToChannels,
params: [
teamId,
channelIds,
emails,
message,
],
});
}
exports.sendEmailGuestInvitesToChannels = sendEmailGuestInvitesToChannels;
function sendEmailInvitesToTeamGracefully(teamId, emails) {
return helpers_1.bindClientFunc({
clientFunc: client_1.Client4.sendEmailInvitesToTeamGracefully,
params: [
teamId,
emails,
],
});
}
exports.sendEmailInvitesToTeamGracefully = sendEmailInvitesToTeamGracefully;
function sendEmailGuestInvitesToChannelsGracefully(teamId, channelIds, emails, message) {
return helpers_1.bindClientFunc({
clientFunc: client_1.Client4.sendEmailGuestInvitesToChannelsGracefully,
params: [
teamId,
channelIds,
emails,
message,
],
});
}
exports.sendEmailGuestInvitesToChannelsGracefully = sendEmailGuestInvitesToChannelsGracefully;
function getTeamInviteInfo(inviteId) {
return helpers_1.bindClientFunc({
clientFunc: client_1.Client4.getTeamInviteInfo,
onRequest: action_types_1.TeamTypes.TEAM_INVITE_INFO_REQUEST,
onSuccess: action_types_1.TeamTypes.TEAM_INVITE_INFO_SUCCESS,
onFailure: action_types_1.TeamTypes.TEAM_INVITE_INFO_FAILURE,
params: [
inviteId,
],
});
}
exports.getTeamInviteInfo = getTeamInviteInfo;
function checkIfTeamExists(teamName) {
var _this = this;
return function (dispatch, getState) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
var data, error_12;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0:
_a.trys.push([0, 2, , 3]);
return [4 /*yield*/, client_1.Client4.checkIfTeamExists(teamName)];
case 1:
data = _a.sent();
return [3 /*break*/, 3];
case 2:
error_12 = _a.sent();
helpers_1.forceLogoutIfNecessary(error_12, dispatch, getState);
dispatch(errors_1.logError(error_12));
return [2 /*return*/, { error: error_12 }];
case 3: return [2 /*return*/, { data: data.exists }];
}
});
}); };
}
exports.checkIfTeamExists = checkIfTeamExists;
function joinTeam(inviteId, teamId) {
var _this = this;
return function (dispatch, getState) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
var state, currentUserId, error_13;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0:
dispatch({ type: action_types_1.TeamTypes.JOIN_TEAM_REQUEST, data: null });
state = getState();
_a.label = 1;
case 1:
_a.trys.push([1, 6, , 7]);
if (!general_1.isCompatibleWithJoinViewTeamPermissions(state)) return [3 /*break*/, 3];
currentUserId = state.entities.users.currentUserId;
return [4 /*yield*/, client_1.Client4.addToTeam(teamId, currentUserId)];
case 2:
_a.sent();
return [3 /*break*/, 5];
case 3: return [4 /*yield*/, client_1.Client4.joinTeam(inviteId)];
case 4:
_a.sent();
_a.label = 5;
case 5: return [3 /*break*/, 7];
case 6:
error_13 = _a.sent();
helpers_1.forceLogoutIfNecessary(error_13, dispatch, getState);
dispatch(actions_1.batchActions([
{ type: action_types_1.TeamTypes.JOIN_TEAM_FAILURE, error: error_13 },
errors_1.logError(error_13),
]));
return [2 /*return*/, { error: error_13 }];
case 7:
getMyTeamUnreads()(dispatch, getState);
return [4 /*yield*/, Promise.all([
getTeam(teamId)(dispatch, getState),
getMyTeamMembers()(dispatch, getState),
])];
case 8:
_a.sent();
dispatch({ type: action_types_1.TeamTypes.JOIN_TEAM_SUCCESS, data: null });
return [2 /*return*/, { data: true }];
}
});
}); };
}
exports.joinTeam = joinTeam;
function setTeamIcon(teamId, imageData) {
return helpers_1.bindClientFunc({
clientFunc: client_1.Client4.setTeamIcon,
params: [
teamId,
imageData,
],
});
}
exports.setTeamIcon = setTeamIcon;
function removeTeamIcon(teamId) {
return helpers_1.bindClientFunc({
clientFunc: client_1.Client4.removeTeamIcon,
params: [
teamId,
],
});
}
exports.removeTeamIcon = removeTeamIcon;
function updateTeamScheme(teamId, schemeId) {
var _this = this;
return helpers_1.bindClientFunc({
clientFunc: function () { return tslib_1.__awaiter(_this, void 0, void 0, function () {
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, client_1.Client4.updateTeamScheme(teamId, schemeId)];
case 1:
_a.sent();
return [2 /*return*/, { teamId: teamId, schemeId: schemeId }];
}
});
}); },
onSuccess: action_types_1.TeamTypes.UPDATED_TEAM_SCHEME,
});
}
exports.updateTeamScheme = updateTeamScheme;
function updateTeamMemberSchemeRoles(teamId, userId, isSchemeUser, isSchemeAdmin) {
var _this = this;
return helpers_1.bindClientFunc({
clientFunc: function () { return tslib_1.__awaiter(_this, void 0, void 0, function () {
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, client_1.Client4.updateTeamMemberSchemeRoles(teamId, userId, isSchemeUser, isSchemeAdmin)];
case 1:
_a.sent();
return [2 /*return*/, { teamId: teamId, userId: userId, isSchemeUser: isSchemeUser, isSchemeAdmin: isSchemeAdmin }];
}
});
}); },
onSuccess: action_types_1.TeamTypes.UPDATED_TEAM_MEMBER_SCHEME_ROLES,
});
}
exports.updateTeamMemberSchemeRoles = updateTeamMemberSchemeRoles;
function invalidateAllEmailInvites() {
return helpers_1.bindClientFunc({
clientFunc: client_1.Client4.invalidateAllEmailInvites,
});
}
exports.invalidateAllEmailInvites = invalidateAllEmailInvites;
function membersMinusGroupMembers(teamID, groupIDs, page, perPage) {
if (page === void 0) { page = 0; }
if (perPage === void 0) { perPage = constants_1.General.PROFILE_CHUNK_SIZE; }
return helpers_1.bindClientFunc({
clientFunc: client_1.Client4.teamMembersMinusGroupMembers,
onSuccess: action_types_1.TeamTypes.RECEIVED_TEAM_MEMBERS_MINUS_GROUP_MEMBERS,
params: [
teamID,
groupIDs,
page,
perPage,
],
});
}
exports.membersMinusGroupMembers = membersMinusGroupMembers;
function getInProductNotices(teamId, client, clientVersion) {
return helpers_1.bindClientFunc({
clientFunc: client_1.Client4.getInProductNotices,
params: [
teamId,
client,
clientVersion,
],
});
}
exports.getInProductNotices = getInProductNotices;
function updateNoticesAsViewed(noticeIds) {
return helpers_1.bindClientFunc({
clientFunc: client_1.Client4.updateNoticesAsViewed,
params: [
noticeIds,
],
});
}
exports.updateNoticesAsViewed = updateNoticesAsViewed;
//# sourceMappingURL=teams.js.map