UNPKG

digitalmarketplace-frontend

Version:

Digital Marketplace Frontend contains assets and components used in Digital Marketplace projects

59 lines (56 loc) 2.29 kB
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