digitalmarketplace-frontend
Version:
Digital Marketplace Frontend contains assets and components used in Digital Marketplace projects
59 lines (56 loc) • 2.29 kB
JavaScript
import api from '../../node_modules/js-cookie/dist/js.cookie.mjs';
import { updateDataLayer } from '../analytics/data-layer.mjs';
const cookieUpdateOptions = [
{
cookieName: 'usage',
cookiePrefixes: ['_ga', '_gi']
},
{
cookieName: 'glassbox',
cookiePrefixes: ['_cls']
}
];
const DOMAINS = [
'.marketplace.team',
'.digitalmarketplace.service.gov.uk',
'www.applytosupply.digitalmarketplace.service.gov.uk'
];
// When not in production we want to delete cookies in localhost too
const getDomains = () => {
if (window.location.hostname === 'localhost') {
return DOMAINS.concat(['localhost']);
}
return DOMAINS;
};
const getCookiePreferences = () => {
const defaultCookieSettings = '{"usage":false,"glassbox":false}';
return JSON.parse(api.get('cookie_preferences_dmp') ?? defaultCookieSettings);
};
const setCookiePreferences = (usage) => {
const cookiePreferences = getCookiePreferences();
cookiePreferences.usage = usage;
cookiePreferences.settings_viewed = true;
api.set('cookie_preferences_dmp', JSON.stringify(cookiePreferences), { expires: 365 });
updateDataLayer(cookiePreferences);
removeUnwantedCookies();
};
const removeUnwantedCookies = () => {
const cookieList = Object.keys(api.get());
const cookiesToRemove = ['digitalmarketplace_cookie_settings_viewed', 'digitalmarketplace_google_analytics_enabled', 'digitalmarketplace_cookie_options_v1', 'dm_cookies_policy'];
const cookiePreferences = getCookiePreferences();
const cookiePrefixes = [];
cookieUpdateOptions.forEach((cookieUpdateOption) => {
if (!cookiePreferences[cookieUpdateOption.cookieName])
cookiePrefixes.push(...cookieUpdateOption.cookiePrefixes);
});
for (let i = 0; i < cookieList.length; i++) {
const cookieName = cookieList[i];
if (cookiePrefixes.some((cookiePrefix) => cookieName.startsWith(cookiePrefix)))
cookiesToRemove.push(cookieName);
}
getDomains().forEach((domain) => {
cookiesToRemove.forEach((cookieName) => { api.remove(cookieName, { path: '/', domain: domain }); });
});
};
export { getCookiePreferences, removeUnwantedCookies, setCookiePreferences };
//# sourceMappingURL=manage.mjs.map