UNPKG

mattermost-redux

Version:

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

57 lines (56 loc) 3.11 kB
"use strict"; // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See LICENSE.txt for license information. Object.defineProperty(exports, "__esModule", { value: true }); exports.getChannelIdsForAccessControlPolicy = exports.getAccessControlSettings = void 0; exports.getAccessControlPolicy = getAccessControlPolicy; exports.makeGetChannelsInAccessControlPolicy = makeGetChannelsInAccessControlPolicy; exports.searchChannelsInheritsPolicy = searchChannelsInheritsPolicy; const general_1 = require("mattermost-redux/selectors/entities/general"); const channel_utils_1 = require("mattermost-redux/utils/channel_utils"); const channels_1 = require("./channels"); const create_selector_1 = require("../create_selector"); exports.getAccessControlSettings = (0, create_selector_1.createSelector)('getAccessControlSettings', (state) => state.entities.admin.config.AccessControlSettings, (state) => (0, general_1.getConfig)(state), (adminConfig, config) => { // First try to get from admin config (for admin console pages) if (adminConfig) { return adminConfig; } // Otherwise, build from client config (for regular users/channel admins) return { EnableAttributeBasedAccessControl: config?.EnableAttributeBasedAccessControl === 'true', EnableUserManagedAttributes: config?.EnableUserManagedAttributes === 'true', }; }); function getAccessControlPolicy(state, id) { return state.entities.admin.accessControlPolicies[id]; } exports.getChannelIdsForAccessControlPolicy = (0, create_selector_1.createSelector)('getChannelIdsForAccessControlPolicy', (state, parentId) => state.entities.admin.channelsForAccessControlPolicy[parentId], (channelIds) => (Array.isArray(channelIds) ? channelIds : [])); function makeGetChannelsInAccessControlPolicy() { return (0, create_selector_1.createSelector)('getChannelsInAccessControlPolicy', (state) => state.entities.channels.channels, (state, props) => (0, exports.getChannelIdsForAccessControlPolicy)(state, props.policyId), (state) => state.entities.teams.teams, (channels, ids, teams) => { if (!ids) { return []; } const policyChannels = []; ids.forEach((channelId) => { const channel = channels[channelId]; if (channel) { const team = teams[channel.team_id] || {}; policyChannels.push({ ...channel, team_id: channel.team_id, team_display_name: team.display_name || '', team_name: team.name || '', team_update_at: team.update_at || 0, }); } }); return policyChannels; }); } function searchChannelsInheritsPolicy(state, policyId, term, filters) { const channelsInPolicy = makeGetChannelsInAccessControlPolicy(); const channelArray = channelsInPolicy(state, { policyId }); let channels = (0, channels_1.filterChannelList)(channelArray, filters); channels = (0, channel_utils_1.filterChannelsMatchingTerm)(channels, term); return channels; }