diff options
Diffstat (limited to 'app/assets/javascripts/tracking/utils.js')
-rw-r--r-- | app/assets/javascripts/tracking/utils.js | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/app/assets/javascripts/tracking/utils.js b/app/assets/javascripts/tracking/utils.js index 1189b2168ad..3507872b511 100644 --- a/app/assets/javascripts/tracking/utils.js +++ b/app/assets/javascripts/tracking/utils.js @@ -6,6 +6,8 @@ import { LOAD_ACTION_ATTR_SELECTOR, DEPRECATED_EVENT_ATTR_SELECTOR, DEPRECATED_LOAD_EVENT_ATTR_SELECTOR, + URLS_CACHE_STORAGE_KEY, + REFERRER_TTL, } from './constants'; export const addExperimentContext = (opts) => { @@ -100,3 +102,25 @@ export const renameKey = (o, oldKey, newKey) => { return ret; }; + +export const filterOldReferrersCacheEntries = (cache) => { + const now = Date.now(); + + return cache.filter((entry) => entry.timestamp && entry.timestamp > now - REFERRER_TTL); +}; + +export const getReferrersCache = () => { + try { + const referrers = JSON.parse(window.localStorage.getItem(URLS_CACHE_STORAGE_KEY) || '[]'); + + return filterOldReferrersCacheEntries(referrers); + } catch { + return []; + } +}; + +export const addReferrersCacheEntry = (cache, entry) => { + const referrers = JSON.stringify([{ ...entry, timestamp: Date.now() }, ...cache]); + + window.localStorage.setItem(URLS_CACHE_STORAGE_KEY, referrers); +}; |