dashboard/shell/utils/banners.js

59 lines
1.5 KiB
JavaScript

/**
*
* Helper utilities for the fixed banners that can be configured to show on pages
*
*/
import { MANAGEMENT } from '@shell/config/types';
const BANNER_HEADER = 'bannerHeader';
const BANNER_FOOTER = 'bannerFooter';
const BANNER_LOGIN = 'bannerConsent';
const INDIVIDUAL_BANNERS = {
'ui-banner-header': BANNER_HEADER,
'ui-banner-footer': BANNER_FOOTER,
'ui-banner-login-consent': BANNER_LOGIN,
};
const BANNER_SHOW_KEY_MAP = {
[BANNER_HEADER]: 'showHeader',
[BANNER_FOOTER]: 'showFooter',
[BANNER_LOGIN]: 'showConsent',
};
/**
* Get the individual banner settings
*/
export function getIndividualBanners(store) {
const banners = {};
// Go through all settings looking for the individual settings
const allSettings = store.getters['management/all'](MANAGEMENT.SETTING);
allSettings.forEach((setting) => {
if (setting.value && !!INDIVIDUAL_BANNERS[setting.id]) {
const settingId = INDIVIDUAL_BANNERS[setting.id];
banners[settingId] = setting;
}
});
return banners;
}
/**
* Overlay settings from the individual banner settings onto the single banner setting
*/
export function overlayIndividualBanners(parsedBanner, banners) {
Object.keys(banners).forEach((id) => {
try {
const parsedIndividualBanner = JSON.parse(banners[id].value);
const shownID = BANNER_SHOW_KEY_MAP[id];
parsedBanner[id] = parsedIndividualBanner;
parsedBanner[shownID] = 'true'; // If there is an individual banner setting, then banner is shown
} catch {}
});
}