mattermost-redux
Version:
Common code (API client, Redux stores, logic, utility functions) for building a Mattermost client
112 lines (111 loc) • 3.96 kB
JavaScript
;
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See LICENSE.txt for license information.
Object.defineProperty(exports, "__esModule", { value: true });
const redux_1 = require("redux");
const action_types_1 = require("mattermost-redux/action_types");
function config(state = {}, action) {
switch (action.type) {
case action_types_1.GeneralTypes.CLIENT_CONFIG_RECEIVED:
return Object.assign({}, state, action.data);
case action_types_1.UserTypes.LOGIN: // Used by the mobile app
case action_types_1.GeneralTypes.SET_CONFIG_AND_LICENSE:
return Object.assign({}, state, action.data.config);
case action_types_1.GeneralTypes.CLIENT_CONFIG_RESET:
case action_types_1.UserTypes.LOGOUT_SUCCESS:
return {};
default:
return state;
}
}
function license(state = {}, action) {
switch (action.type) {
case action_types_1.GeneralTypes.CLIENT_LICENSE_RECEIVED:
return action.data;
case action_types_1.GeneralTypes.SET_CONFIG_AND_LICENSE:
return Object.assign({}, state, action.data.license);
case action_types_1.GeneralTypes.CLIENT_LICENSE_RESET:
case action_types_1.UserTypes.LOGOUT_SUCCESS:
return {};
default:
return state;
}
}
function customProfileAttributes(state = {}, action) {
switch (action.type) {
case action_types_1.GeneralTypes.CUSTOM_PROFILE_ATTRIBUTE_FIELDS_RECEIVED: {
const data = action.data;
return data.reduce((acc, field) => {
acc[field.id] = field;
return acc;
}, {});
}
case action_types_1.GeneralTypes.CUSTOM_PROFILE_ATTRIBUTE_FIELD_DELETED: {
const nextState = { ...state };
const fieldId = action.data;
if (Object.hasOwn(nextState, fieldId)) {
Reflect.deleteProperty(nextState, fieldId);
return nextState;
}
return state;
}
case action_types_1.GeneralTypes.CUSTOM_PROFILE_ATTRIBUTE_FIELD_CREATED:
case action_types_1.GeneralTypes.CUSTOM_PROFILE_ATTRIBUTE_FIELD_PATCHED: {
return {
...state,
[action.data.id]: action.data,
};
}
default:
return state;
}
}
function serverVersion(state = '', action) {
switch (action.type) {
case action_types_1.GeneralTypes.RECEIVED_SERVER_VERSION:
return action.data;
case action_types_1.UserTypes.LOGOUT_SUCCESS:
return '';
default:
return state;
}
}
function firstAdminVisitMarketplaceStatus(state = false, action) {
switch (action.type) {
case action_types_1.GeneralTypes.FIRST_ADMIN_VISIT_MARKETPLACE_STATUS_RECEIVED:
return action.data;
default:
return state;
}
}
function firstAdminCompleteSetup(state = false, action) {
switch (action.type) {
case action_types_1.GeneralTypes.FIRST_ADMIN_COMPLETE_SETUP_RECEIVED:
return action.data;
default:
return state;
}
}
function cwsAvailability(state = 'pending', action) {
switch (action.type) {
case action_types_1.GeneralTypes.CWS_AVAILABILITY_CHECK_REQUEST:
return 'pending';
case action_types_1.GeneralTypes.CWS_AVAILABILITY_CHECK_SUCCESS:
return action.data;
case action_types_1.GeneralTypes.CWS_AVAILABILITY_CHECK_FAILURE:
return 'unavailable';
case action_types_1.UserTypes.LOGOUT_SUCCESS:
return 'pending';
default:
return state;
}
}
exports.default = (0, redux_1.combineReducers)({
config,
license,
customProfileAttributes,
serverVersion,
firstAdminVisitMarketplaceStatus,
firstAdminCompleteSetup,
cwsAvailability,
});