From 4a9955be7dd6405aa2500d0012f2993db0c11872 Mon Sep 17 00:00:00 2001 From: Jethro Nederhof Date: Fri, 30 Aug 2024 14:18:00 +1000 Subject: [PATCH] Add browser-tracker-core default for os_timezone --- .../ostz_default_2024-08-30-04-14.json | 10 ++++++++++ libraries/browser-tracker-core/src/helpers/index.ts | 12 ++++++++++++ libraries/browser-tracker-core/src/tracker/index.ts | 3 +++ 3 files changed, 25 insertions(+) create mode 100644 common/changes/@snowplow/browser-tracker-core/ostz_default_2024-08-30-04-14.json diff --git a/common/changes/@snowplow/browser-tracker-core/ostz_default_2024-08-30-04-14.json b/common/changes/@snowplow/browser-tracker-core/ostz_default_2024-08-30-04-14.json new file mode 100644 index 000000000..9de6e47f1 --- /dev/null +++ b/common/changes/@snowplow/browser-tracker-core/ostz_default_2024-08-30-04-14.json @@ -0,0 +1,10 @@ +{ + "changes": [ + { + "packageName": "@snowplow/browser-tracker-core", + "comment": "Add browser-tracker-core default for os_timezone", + "type": "none" + } + ], + "packageName": "@snowplow/browser-tracker-core" +} \ No newline at end of file diff --git a/libraries/browser-tracker-core/src/helpers/index.ts b/libraries/browser-tracker-core/src/helpers/index.ts index 817780a86..6c93b2b07 100755 --- a/libraries/browser-tracker-core/src/helpers/index.ts +++ b/libraries/browser-tracker-core/src/helpers/index.ts @@ -81,6 +81,18 @@ export function isFunction(func: unknown) { return false; } +/** + * Lightweight configured runtime timezone detection + * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/resolvedOptions#getting_the_users_time_zone_and_locale_preferences + * @returns IANA timezone name of current runtime preference + */ +export function getTimeZone(): string | void { + if (typeof Intl === 'object' && typeof Intl.DateTimeFormat === 'function') { + const systemPreferences = new Intl.DateTimeFormat().resolvedOptions(); + return systemPreferences.timeZone; + } +} + /** * Cleans up the page title */ diff --git a/libraries/browser-tracker-core/src/tracker/index.ts b/libraries/browser-tracker-core/src/tracker/index.ts index 730972aa9..e4b93a322 100755 --- a/libraries/browser-tracker-core/src/tracker/index.ts +++ b/libraries/browser-tracker-core/src/tracker/index.ts @@ -27,6 +27,7 @@ import { attemptGetSessionStorage, attemptWriteSessionStorage, createCrossDomainParameterValue, + getTimeZone, } from '../helpers'; import { BrowserPlugin } from '../plugins'; import { newOutQueue } from './out_queue'; @@ -306,6 +307,7 @@ export function Tracker( } const { browserLanguage, resolution, colorDepth, cookiesEnabled } = getBrowserProperties(); + const timeZone = getTimeZone(); // Set up unchanging name-value pairs core.setTrackerVersion(version); @@ -317,6 +319,7 @@ export function Tracker( core.addPayloadPair('lang', browserLanguage); core.addPayloadPair('res', resolution); core.addPayloadPair('cd', colorDepth); + if (timeZone) core.addPayloadPair('tz', timeZone); /* * Initialize tracker