UNPKG

mattermost-redux

Version:

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

63 lines (51 loc) 1.91 kB
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See LICENSE.txt for license information. import {createSelector} from 'reselect'; import {getCurrentTeamId} from 'selectors/entities/teams'; import {OutgoingWebhook, Command} from 'types/integrations'; import {GlobalState} from 'types/store'; import {IDMappedObjects} from 'types/utilities'; export function getIncomingHooks(state: GlobalState) { return state.entities.integrations.incomingHooks; } export function getOutgoingHooks(state: GlobalState) { return state.entities.integrations.outgoingHooks; } export function getCommands(state: GlobalState) { return state.entities.integrations.commands; } export function getOAuthApps(state: GlobalState) { return state.entities.integrations.oauthApps; } export function getSystemCommands(state: GlobalState) { return state.entities.integrations.systemCommands; } /** * get outgoing hooks in current team */ export const getOutgoingHooksInCurrentTeam: (state: GlobalState) => OutgoingWebhook[] = createSelector( getCurrentTeamId, getOutgoingHooks, (teamId, hooks) => { return Object.values(hooks).filter((o) => o.team_id === teamId); }, ); export const getAllCommands: (state: GlobalState) => IDMappedObjects<Command> = createSelector( getCommands, getSystemCommands, (commands, systemCommands) => { return { ...commands, ...systemCommands, }; }, ); export const getAutocompleteCommandsList: (state: GlobalState) => Command[] = createSelector( getAllCommands, getCurrentTeamId, (commands, currentTeamId) => { return Object.values(commands).filter((command) => { return command && (!command.team_id || command.team_id === currentTeamId) && command.auto_complete; }).sort((a, b) => a.display_name.localeCompare(b.display_name)); }, );