mattermost-redux
Version:
Common code (API client, Redux stores, logic, utility functions) for building a Mattermost client
59 lines (58 loc) • 3.85 kB
JavaScript
;
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See LICENSE.txt for license information.
Object.defineProperty(exports, "__esModule", { value: true });
exports.getAppRHSCommandForm = exports.getAppCommandForm = exports.makeRHSAppBindingSelector = exports.getAppBarAppBindings = exports.getChannelHeaderAppBindings = exports.makeAppBindingsSelector = exports.appBarEnabled = exports.appsEnabled = exports.appsFeatureFlagEnabled = exports.appsPluginIsEnabled = void 0;
const apps_1 = require("mattermost-redux/constants/apps");
const create_selector_1 = require("mattermost-redux/selectors/create_selector");
const general_1 = require("mattermost-redux/selectors/entities/general");
const appsPluginIsEnabled = (state) => state.entities.apps.pluginEnabled;
exports.appsPluginIsEnabled = appsPluginIsEnabled;
exports.appsFeatureFlagEnabled = (0, create_selector_1.createSelector)('appsConfiguredAsEnabled', (state) => (0, general_1.getConfig)(state), (config) => {
return config?.['FeatureFlagAppsEnabled'] === 'true';
});
exports.appsEnabled = (0, create_selector_1.createSelector)('appsEnabled', exports.appsFeatureFlagEnabled, exports.appsPluginIsEnabled, (featureFlagEnabled, pluginEnabled) => {
return featureFlagEnabled && pluginEnabled;
});
exports.appBarEnabled = (0, create_selector_1.createSelector)('appBarEnabled', (state) => (0, general_1.getConfig)(state), (config) => {
return config?.DisableAppBar === 'false';
});
const makeAppBindingsSelector = (location) => {
return (0, create_selector_1.createSelector)('makeAppBindingsSelector', (state) => state.entities.apps.main.bindings, (state) => (0, exports.appsEnabled)(state), (bindings, areAppsEnabled) => {
if (!areAppsEnabled || !bindings) {
return [];
}
const headerBindings = bindings.filter((b) => b.location === location);
return headerBindings.reduce((accum, current) => accum.concat(current.bindings || []), []);
});
};
exports.makeAppBindingsSelector = makeAppBindingsSelector;
exports.getChannelHeaderAppBindings = (0, create_selector_1.createSelector)('getChannelHeaderAppBindings', exports.appBarEnabled, (0, exports.makeAppBindingsSelector)(apps_1.AppBindingLocations.CHANNEL_HEADER_ICON), (enabled, channelHeaderBindings) => {
return enabled ? [] : channelHeaderBindings;
});
exports.getAppBarAppBindings = (0, create_selector_1.createSelector)('getAppBarAppBindings', exports.appBarEnabled, (0, exports.makeAppBindingsSelector)(apps_1.AppBindingLocations.CHANNEL_HEADER_ICON), (0, exports.makeAppBindingsSelector)(apps_1.AppBindingLocations.APP_BAR), (enabled, channelHeaderBindings, appBarBindings) => {
if (!enabled) {
return [];
}
const appIds = appBarBindings.map((b) => b.app_id);
const backwardsCompatibleBindings = channelHeaderBindings.filter((b) => !appIds.includes(b.app_id));
return appBarBindings.concat(backwardsCompatibleBindings);
});
const makeRHSAppBindingSelector = (location) => {
return (0, create_selector_1.createSelector)('makeRHSAppBindingSelector', (state) => state.entities.apps.rhs.bindings, (state) => (0, exports.appsEnabled)(state), (bindings, areAppsEnabled) => {
if (!areAppsEnabled || !bindings) {
return [];
}
const headerBindings = bindings.filter((b) => b.location === location);
return headerBindings.reduce((accum, current) => accum.concat(current.bindings || []), []);
});
};
exports.makeRHSAppBindingSelector = makeRHSAppBindingSelector;
const getAppCommandForm = (state, location) => {
return state.entities.apps.main.forms[location];
};
exports.getAppCommandForm = getAppCommandForm;
const getAppRHSCommandForm = (state, location) => {
return state.entities.apps.rhs.forms[location];
};
exports.getAppRHSCommandForm = getAppRHSCommandForm;