mattermost-redux
Version:
Common code (API client, Redux stores, logic, utility functions) for building a Mattermost client
257 lines • 9.88 kB
JavaScript
"use strict";
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See LICENSE.txt for license information.
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
var redux_1 = require("redux");
var action_types_1 = require("../../action_types");
function incomingHooks(state, action) {
var e_1, _a;
if (state === void 0) { state = {}; }
switch (action.type) {
case action_types_1.IntegrationTypes.RECEIVED_INCOMING_HOOK: {
var nextState = tslib_1.__assign({}, state);
nextState[action.data.id] = action.data;
return nextState;
}
case action_types_1.IntegrationTypes.RECEIVED_INCOMING_HOOKS: {
var nextState = tslib_1.__assign({}, state);
try {
for (var _b = tslib_1.__values(action.data), _c = _b.next(); !_c.done; _c = _b.next()) {
var hook = _c.value;
nextState[hook.id] = hook;
}
}
catch (e_1_1) { e_1 = { error: e_1_1 }; }
finally {
try {
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
}
finally { if (e_1) throw e_1.error; }
}
return nextState;
}
case action_types_1.IntegrationTypes.DELETED_INCOMING_HOOK: {
var nextState = tslib_1.__assign({}, state);
Reflect.deleteProperty(nextState, action.data.id);
return nextState;
}
case action_types_1.ChannelTypes.RECEIVED_CHANNEL_DELETED: {
var nextState_1 = tslib_1.__assign({}, state);
var deleted_1 = false;
Object.keys(nextState_1).forEach(function (id) {
if (nextState_1[id].channel_id === action.data.id) {
deleted_1 = true;
Reflect.deleteProperty(nextState_1, id);
}
});
if (deleted_1) {
return nextState_1;
}
return state;
}
case action_types_1.UserTypes.LOGOUT_SUCCESS:
return {};
default:
return state;
}
}
function outgoingHooks(state, action) {
var e_2, _a;
if (state === void 0) { state = {}; }
switch (action.type) {
case action_types_1.IntegrationTypes.RECEIVED_OUTGOING_HOOK: {
var nextState = tslib_1.__assign({}, state);
nextState[action.data.id] = action.data;
return nextState;
}
case action_types_1.IntegrationTypes.RECEIVED_OUTGOING_HOOKS: {
var nextState = tslib_1.__assign({}, state);
try {
for (var _b = tslib_1.__values(action.data), _c = _b.next(); !_c.done; _c = _b.next()) {
var hook = _c.value;
nextState[hook.id] = hook;
}
}
catch (e_2_1) { e_2 = { error: e_2_1 }; }
finally {
try {
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
}
finally { if (e_2) throw e_2.error; }
}
return nextState;
}
case action_types_1.IntegrationTypes.DELETED_OUTGOING_HOOK: {
var nextState = tslib_1.__assign({}, state);
Reflect.deleteProperty(nextState, action.data.id);
return nextState;
}
case action_types_1.ChannelTypes.RECEIVED_CHANNEL_DELETED: {
var nextState_2 = tslib_1.__assign({}, state);
var deleted_2 = false;
Object.keys(nextState_2).forEach(function (id) {
if (nextState_2[id].channel_id === action.data.id) {
deleted_2 = true;
Reflect.deleteProperty(nextState_2, id);
}
});
if (deleted_2) {
return nextState_2;
}
return state;
}
case action_types_1.UserTypes.LOGOUT_SUCCESS:
return {};
default:
return state;
}
}
function commands(state, action) {
var e_3, _a, _b, _c;
if (state === void 0) { state = {}; }
switch (action.type) {
case action_types_1.IntegrationTypes.RECEIVED_COMMANDS:
case action_types_1.IntegrationTypes.RECEIVED_CUSTOM_TEAM_COMMANDS: {
var nextState = tslib_1.__assign({}, state);
try {
for (var _d = tslib_1.__values(action.data), _e = _d.next(); !_e.done; _e = _d.next()) {
var command = _e.value;
if (command.id) {
var id = command.id;
nextState[id] = command;
}
}
}
catch (e_3_1) { e_3 = { error: e_3_1 }; }
finally {
try {
if (_e && !_e.done && (_a = _d.return)) _a.call(_d);
}
finally { if (e_3) throw e_3.error; }
}
return nextState;
}
case action_types_1.IntegrationTypes.RECEIVED_COMMAND:
if (action.data.id) {
return tslib_1.__assign(tslib_1.__assign({}, state), (_b = {}, _b[action.data.id] = action.data, _b));
}
return state;
case action_types_1.IntegrationTypes.RECEIVED_COMMAND_TOKEN: {
var _f = action.data, id = _f.id, token = _f.token;
return tslib_1.__assign(tslib_1.__assign({}, state), (_c = {}, _c[id] = tslib_1.__assign(tslib_1.__assign({}, state[id]), { token: token }), _c));
}
case action_types_1.IntegrationTypes.DELETED_COMMAND: {
var nextState = tslib_1.__assign({}, state);
Reflect.deleteProperty(nextState, action.data.id);
return nextState;
}
case action_types_1.UserTypes.LOGOUT_SUCCESS:
return {};
default:
return state;
}
}
function systemCommands(state, action) {
var e_4, _a, _b;
if (state === void 0) { state = {}; }
switch (action.type) {
case action_types_1.IntegrationTypes.RECEIVED_COMMANDS: {
var nextCommands = {};
try {
for (var _c = tslib_1.__values(action.data), _d = _c.next(); !_d.done; _d = _c.next()) {
var command = _d.value;
if (!command.id) {
nextCommands[command.trigger] = command;
}
}
}
catch (e_4_1) { e_4 = { error: e_4_1 }; }
finally {
try {
if (_d && !_d.done && (_a = _c.return)) _a.call(_c);
}
finally { if (e_4) throw e_4.error; }
}
return nextCommands;
}
case action_types_1.IntegrationTypes.RECEIVED_COMMAND:
if (!action.data.id) {
return tslib_1.__assign(tslib_1.__assign({}, state), (_b = {}, _b[action.data.trigger] = action.data, _b));
}
return state;
case action_types_1.UserTypes.LOGOUT_SUCCESS:
return {};
default:
return state;
}
}
function oauthApps(state, action) {
var e_5, _a, _b;
if (state === void 0) { state = {}; }
switch (action.type) {
case action_types_1.IntegrationTypes.RECEIVED_OAUTH_APPS: {
var nextState = tslib_1.__assign({}, state);
try {
for (var _c = tslib_1.__values(action.data), _d = _c.next(); !_d.done; _d = _c.next()) {
var app = _d.value;
nextState[app.id] = app;
}
}
catch (e_5_1) { e_5 = { error: e_5_1 }; }
finally {
try {
if (_d && !_d.done && (_a = _c.return)) _a.call(_c);
}
finally { if (e_5) throw e_5.error; }
}
return nextState;
}
case action_types_1.IntegrationTypes.RECEIVED_OAUTH_APP:
return tslib_1.__assign(tslib_1.__assign({}, state), (_b = {}, _b[action.data.id] = action.data, _b));
case action_types_1.IntegrationTypes.DELETED_OAUTH_APP: {
var nextState = tslib_1.__assign({}, state);
Reflect.deleteProperty(nextState, action.data.id);
return nextState;
}
case action_types_1.UserTypes.LOGOUT_SUCCESS:
return {};
default:
return state;
}
}
function dialogTriggerId(state, action) {
if (state === void 0) { state = ''; }
switch (action.type) {
case action_types_1.IntegrationTypes.RECEIVED_DIALOG_TRIGGER_ID:
return action.data;
default:
return state;
}
}
function dialog(state, action) {
if (state === void 0) { state = ''; }
switch (action.type) {
case action_types_1.IntegrationTypes.RECEIVED_DIALOG:
return action.data;
default:
return state;
}
}
exports.default = redux_1.combineReducers({
// object where every key is the hook id and has an object with the incoming hook details
incomingHooks: incomingHooks,
// object where every key is the hook id and has an object with the outgoing hook details
outgoingHooks: outgoingHooks,
// object to represent installed slash commands for a current team
commands: commands,
// object to represent registered oauth apps with app id as the key
oauthApps: oauthApps,
// object to represent built-in slash commands
systemCommands: systemCommands,
// trigger ID for interactive dialogs
dialogTriggerId: dialogTriggerId,
// data for an interactive dialog to display
dialog: dialog,
});
//# sourceMappingURL=integrations.js.map