Skip to content

Commit

Permalink
device params
Browse files Browse the repository at this point in the history
  • Loading branch information
alexanderkirtzel committed Jul 17, 2024
1 parent 94405a6 commit 22b33ab
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 5 deletions.
13 changes: 13 additions & 0 deletions packages/destinations/web/etag/src/index.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -206,6 +206,19 @@ describe('Destination etag', () => {

expect(requestedUrl(mockSend)).toContain('_dbg=1');
});

test('device params', () => {
push({
event: 'entity action',
user: {
language: 'de-DE',
screenSize: '800x600',
},
});

expect(requestedUrl(mockSend)).toContain('ul=de-de');
expect(requestedUrl(mockSend)).toContain('sr=800x600');
});
});

function requestedUrl(mockSend: jest.Mock, i = 0) {
Expand Down
19 changes: 14 additions & 5 deletions packages/destinations/web/etag/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import type {
CustomConfig,
Destination,
Parameters,
ParametersDevice,
ParametersEvent,
ParametersSession,
} from './types';
Expand Down Expand Up @@ -33,15 +34,14 @@ export const destinationEtag: Destination = {

// @TODOs
// key event parameter flags
// ul: User language
// sr: Screen Resolution

const params: Parameters = {
v: '2',
tid: custom.measurementId,
_p: getId(), // Cache buster
...getConsentMode(), // Consent mode
...getClientId(user), // Client ID
...getDeviceParams(user), // User parameters
...getDocumentParams(event), // Document parameters
...getSessionParams(event, custom, instance), // Session parameters
...custom.params, // Custom parameters override defaults
Expand Down Expand Up @@ -93,7 +93,7 @@ export const destinationEtag: Destination = {
};

function getClientId(
user: WalkerOS.AnyObject = {},
user: WalkerOS.User = {},
instance?: WebClient.Instance,
): { cid: string } {
const userId = getUser(user);
Expand All @@ -113,6 +113,15 @@ function getConsentMode(): { gcs: string; gcd?: string } {
};
}

function getDeviceParams(user: WalkerOS.User = {}): ParametersDevice {
const params: ParametersDevice = {};

if (user.language) params.ul = String(user.language).toLocaleLowerCase(); // User language
if (user.screenSize) params.sr = user.screenSize; // Screen resolution

return params;
}

function getDocumentParams(event: Partial<WalkerOS.Event>): WalkerOS.AnyObject {
const { source } = event;
const params: WalkerOS.AnyObject = {};
Expand Down Expand Up @@ -193,7 +202,7 @@ function getEventData(events: WalkerOS.Events, custom: CustomConfig): string {
return data.join('\r\n');
}

function getSessionId(user: WalkerOS.AnyObject = {}): number {
function getSessionId(user: WalkerOS.User = {}): number {
return valueToNumber(getUser(user) + user.session); // Combine user and session
}

Expand Down Expand Up @@ -239,7 +248,7 @@ function getSessionParams(
return params;
}

function getUser(user: WalkerOS.AnyObject = {}) {
function getUser(user: WalkerOS.User = {}) {
return String(user.device || user.session || user.hash);
}

Expand Down
5 changes: 5 additions & 0 deletions packages/destinations/web/etag/src/types/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,11 @@ export interface ParametersEvent extends WalkerOS.AnyObject {
[key: `epn.${string}`]: number; // number parameters
}

export interface ParametersDevice extends WalkerOS.AnyObject {
ul?: string; // User language
sr?: string; // Screen resolution
}

export interface ParametersSession {
sid: number; // Session ID
_nsi?: 1; // New to site
Expand Down

0 comments on commit 22b33ab

Please sign in to comment.