UNPKG

mattermost-redux

Version:

Common code (API client, Redux stores, logic, utility functions) for building a Mattermost client

112 lines (111 loc) 3.96 kB
"use strict"; // 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, });