UNPKG

mattermost-redux

Version:

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

138 lines (124 loc) 3.71 kB
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See LICENSE.txt for license information. import {combineReducers} from 'redux'; import {GeneralTypes, UserTypes} from 'action_types'; import {GenericAction} from 'types/actions'; import {ClientLicense, ClientConfig} from 'types/config'; function config(state: Partial<ClientConfig> = {}, action: GenericAction) { switch (action.type) { case GeneralTypes.CLIENT_CONFIG_RECEIVED: return Object.assign({}, state, action.data); case UserTypes.LOGIN: // Used by the mobile app case GeneralTypes.SET_CONFIG_AND_LICENSE: return Object.assign({}, state, action.data.config); case GeneralTypes.CLIENT_CONFIG_RESET: case UserTypes.LOGOUT_SUCCESS: return {}; default: return state; } } function appState(state = false, action: GenericAction) { switch (action.type) { case GeneralTypes.RECEIVED_APP_STATE: return action.data; default: return state; } } function credentials(state: any = {}, action: GenericAction) { switch (action.type) { case GeneralTypes.RECEIVED_APP_CREDENTIALS: return Object.assign({}, state, action.data); case UserTypes.LOGIN: // Used by the mobile app return { url: action.data.url, }; case UserTypes.LOGOUT_SUCCESS: return {}; default: return state; } } function dataRetentionPolicy(state: any = {}, action: GenericAction) { switch (action.type) { case GeneralTypes.RECEIVED_DATA_RETENTION_POLICY: return action.data; case UserTypes.LOGOUT_SUCCESS: return {}; default: return state; } } function deviceToken(state = '', action: GenericAction) { switch (action.type) { case GeneralTypes.RECEIVED_APP_DEVICE_TOKEN: return action.data; default: return state; } } function license(state: ClientLicense = {}, action: GenericAction) { switch (action.type) { case GeneralTypes.CLIENT_LICENSE_RECEIVED: return action.data; case GeneralTypes.SET_CONFIG_AND_LICENSE: return Object.assign({}, state, action.data.license); case GeneralTypes.CLIENT_LICENSE_RESET: case UserTypes.LOGOUT_SUCCESS: return {}; default: return state; } } function timezones(state: string[] = [], action: GenericAction) { switch (action.type) { case GeneralTypes.SUPPORTED_TIMEZONES_RECEIVED: return action.data; case UserTypes.LOGOUT_SUCCESS: return []; default: return state; } } function serverVersion(state = '', action: GenericAction) { switch (action.type) { case GeneralTypes.RECEIVED_SERVER_VERSION: return action.data; case UserTypes.LOGOUT_SUCCESS: return ''; default: return state; } } function warnMetricsStatus(state: any = {}, action: GenericAction) { switch (action.type) { case GeneralTypes.WARN_METRICS_STATUS_RECEIVED: return action.data; case GeneralTypes.WARN_METRIC_STATUS_RECEIVED: { const nextState = {...state}; nextState[action.data.id] = action.data; return nextState; } case GeneralTypes.WARN_METRIC_STATUS_REMOVED: { const nextState = {...state}; const newParams = Object.assign({}, nextState[action.data.id]); newParams.acked = true; nextState[action.data.id] = newParams; return nextState; } default: return state; } } export default combineReducers({ appState, credentials, config, dataRetentionPolicy, deviceToken, license, serverVersion, timezones, warnMetricsStatus, });