import CookieConsent from "./CookieConsent.js"; export interface ITrackActivity { e: string; r?: string; p?: string; q?: string; x?: number; y?: number; u?: string; }; export default class Reporting { static last: number; // lets visit a page... static track({ e: event, ... a }: ITrackActivity) { const now = Date.now(); const { last } = this; if (last) { if ((now - last) <= 15000) { return; } } this.last = Date.now(); const url = new URL(`/social-mail/reports/api/track/${event}`, location.href); const sp = url.searchParams; for (const key in a) { if (a.hasOwnProperty(key)) { const element = a[key]; sp.append(key, element); } } sp.append("t", (new Date()).toJSON()); fetch(url).catch(console.error); } } CookieConsent.show().then(() => { Reporting.track({ e: "page-load", r: document.referrer }); document.addEventListener("visibilitychange", () => { setTimeout(() => { if (document.hidden) { return; } Reporting.track({ e: "active"}); }); }); });