UNPKG

mattermost-redux

Version:

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

97 lines (84 loc) 2.75 kB
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See LICENSE.txt for license information. import {Client4} from 'client'; import {SchemeTypes} from 'action_types'; import {General} from '../constants'; import {Scheme, SchemeScope, SchemePatch} from 'types/schemes'; import {ActionFunc, DispatchFunc, GetStateFunc} from 'types/actions'; import {bindClientFunc, forceLogoutIfNecessary} from './helpers'; import {logError} from './errors'; export function getScheme(schemeId: string): ActionFunc { return bindClientFunc({ clientFunc: Client4.getScheme, onSuccess: [SchemeTypes.RECEIVED_SCHEME], params: [ schemeId, ], }); } export function getSchemes(scope: SchemeScope, page = 0, perPage: number = General.PAGE_SIZE_DEFAULT): ActionFunc { return bindClientFunc({ clientFunc: Client4.getSchemes, onSuccess: [SchemeTypes.RECEIVED_SCHEMES], params: [ scope, page, perPage, ], }); } export function createScheme(scheme: Scheme): ActionFunc { return bindClientFunc({ clientFunc: Client4.createScheme, onSuccess: [SchemeTypes.CREATED_SCHEME], params: [ scheme, ], }); } export function deleteScheme(schemeId: string): ActionFunc { return async (dispatch: DispatchFunc, getState: GetStateFunc) => { let data = null; try { data = await Client4.deleteScheme(schemeId); } catch (error) { forceLogoutIfNecessary(error, dispatch, getState); dispatch(logError(error)); return {error}; } dispatch({type: SchemeTypes.DELETED_SCHEME, data: {schemeId}}); return {data}; }; } export function patchScheme(schemeId: string, scheme: SchemePatch): ActionFunc { return bindClientFunc({ clientFunc: Client4.patchScheme, onSuccess: [SchemeTypes.PATCHED_SCHEME], params: [ schemeId, scheme, ], }); } export function getSchemeTeams(schemeId: string, page = 0, perPage: number = General.PAGE_SIZE_DEFAULT): ActionFunc { return bindClientFunc({ clientFunc: Client4.getSchemeTeams, onSuccess: [SchemeTypes.RECEIVED_SCHEME_TEAMS], params: [ schemeId, page, perPage, ], }); } export function getSchemeChannels(schemeId: string, page = 0, perPage: number = General.PAGE_SIZE_DEFAULT): ActionFunc { return bindClientFunc({ clientFunc: Client4.getSchemeChannels, onSuccess: [SchemeTypes.RECEIVED_SCHEME_CHANNELS], params: [ schemeId, page, perPage, ], }); }