mattermost-redux
Version:
Common code (API client, Redux stores, logic, utility functions) for building a Mattermost client
60 lines (59 loc) • 2.5 kB
JavaScript
;
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See LICENSE.txt for license information.
Object.defineProperty(exports, "__esModule", { value: true });
exports.getSchemes = getSchemes;
exports.getScheme = getScheme;
exports.makeGetSchemeChannels = makeGetSchemeChannels;
exports.makeGetSchemeTeams = makeGetSchemeTeams;
const schemes_1 = require("mattermost-redux/constants/schemes");
const create_selector_1 = require("mattermost-redux/selectors/create_selector");
const channels_1 = require("mattermost-redux/selectors/entities/channels");
const teams_1 = require("mattermost-redux/selectors/entities/teams");
function getSchemes(state) {
return state.entities.schemes.schemes;
}
function getScheme(state, id) {
const schemes = getSchemes(state);
return schemes[id];
}
function makeGetSchemeChannels() {
return (0, create_selector_1.createSelector)('makeGetSchemeChannels', channels_1.getAllChannels, (state, props) => getScheme(state, props.schemeId), (allChannels, scheme) => {
if (!scheme) {
return [];
}
if (scheme.scope === schemes_1.ScopeTypes.TEAM) {
const msg = `Not implemented: scheme '${scheme.id}' is team-scope but 'getSchemeChannels' only accepts channel-scoped schemes.`;
console.log(msg); // eslint-disable-line no-console
return [];
}
const schemeChannels = [];
Object.entries(allChannels).forEach((item) => {
const [, channel] = item;
if (channel.scheme_id === scheme.id) {
schemeChannels.push(channel);
}
});
return schemeChannels;
});
}
function makeGetSchemeTeams() {
return (0, create_selector_1.createSelector)('makeGetSchemeTeams', teams_1.getTeams, (state, props) => getScheme(state, props.schemeId), (allTeams, scheme) => {
if (!scheme) {
return [];
}
if (scheme.scope === schemes_1.ScopeTypes.CHANNEL) {
const msg = `Error: scheme '${scheme.id}' is channel-scoped but 'getSchemeChannels' only accepts team-scoped schemes.`;
console.log(msg); // eslint-disable-line no-console
return [];
}
const schemeTeams = [];
Object.entries(allTeams).forEach((item) => {
const [, team] = item;
if (team.scheme_id === scheme.id) {
schemeTeams.push(team);
}
});
return schemeTeams;
});
}