Skip to content

Commit c7ae894

Browse files
jethronmatus-tomlein
authored andcommitted
Add browser-tracker-core default for os_timezone (#1338)
1 parent a2d44d0 commit c7ae894

3 files changed

Lines changed: 25 additions & 0 deletions

File tree

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
{
2+
"changes": [
3+
{
4+
"packageName": "@snowplow/browser-tracker-core",
5+
"comment": "Add browser-tracker-core default for os_timezone",
6+
"type": "none"
7+
}
8+
],
9+
"packageName": "@snowplow/browser-tracker-core"
10+
}

libraries/browser-tracker-core/src/helpers/index.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,18 @@ export function isFunction(func: unknown) {
8181
return false;
8282
}
8383

84+
/**
85+
* Lightweight configured runtime timezone detection
86+
* @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/resolvedOptions#getting_the_users_time_zone_and_locale_preferences
87+
* @returns IANA timezone name of current runtime preference
88+
*/
89+
export function getTimeZone(): string | void {
90+
if (typeof Intl === 'object' && typeof Intl.DateTimeFormat === 'function') {
91+
const systemPreferences = new Intl.DateTimeFormat().resolvedOptions();
92+
return systemPreferences.timeZone;
93+
}
94+
}
95+
8496
/**
8597
* Cleans up the page title
8698
*/

libraries/browser-tracker-core/src/tracker/index.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ import {
2727
attemptGetSessionStorage,
2828
attemptWriteSessionStorage,
2929
createCrossDomainParameterValue,
30+
getTimeZone,
3031
} from '../helpers';
3132
import { BrowserPlugin } from '../plugins';
3233
import { newOutQueue } from './out_queue';
@@ -306,6 +307,7 @@ export function Tracker(
306307
}
307308

308309
const { browserLanguage, resolution, colorDepth, cookiesEnabled } = getBrowserProperties();
310+
const timeZone = getTimeZone();
309311

310312
// Set up unchanging name-value pairs
311313
core.setTrackerVersion(version);
@@ -317,6 +319,7 @@ export function Tracker(
317319
core.addPayloadPair('lang', browserLanguage);
318320
core.addPayloadPair('res', resolution);
319321
core.addPayloadPair('cd', colorDepth);
322+
if (timeZone) core.addPayloadPair('tz', timeZone);
320323

321324
/*
322325
* Initialize tracker

0 commit comments

Comments
 (0)