1
0
mirror of synced 2025-12-21 10:57:10 -05:00

Add os preference tracking (#20740)

* Set cookie on os switch

* Set os based on cookie value

* Add os preference schema details

* Send os preference on page request

* Send os preference on os switch
This commit is contained in:
Robert Sese
2021-08-09 17:07:27 -05:00
committed by GitHub
parent 3904ab7935
commit 6f6cf56c20
3 changed files with 38 additions and 6 deletions

View File

@@ -1,4 +1,7 @@
import Cookies from 'js-cookie'
import parseUserAgent from './user-agent' import parseUserAgent from './user-agent'
import { sendEvent, EventType } from './events'
const supportedPlatforms = ['mac', 'windows', 'linux'] const supportedPlatforms = ['mac', 'windows', 'linux']
const detectedPlatforms = new Set() const detectedPlatforms = new Set()
@@ -35,6 +38,18 @@ export default function displayPlatformSpecificContent() {
const target = event.target as HTMLElement const target = event.target as HTMLElement
setActiveSwitcherLinks(target.dataset.platform || '') setActiveSwitcherLinks(target.dataset.platform || '')
showPlatformSpecificContent(target.dataset.platform || '') showPlatformSpecificContent(target.dataset.platform || '')
Cookies.set('osPreferred', target.dataset.platform || '', {
sameSite: 'strict',
secure: true,
})
// Send event data
sendEvent({
type: EventType.preference,
preference_name: 'os',
preference_value: target.dataset.platform,
})
}) })
}) })
} }
@@ -108,6 +123,8 @@ function detectPlatforms(el: HTMLElement) {
} }
function getDefaultPlatform() { function getDefaultPlatform() {
if (Cookies.get('osPreferred')) return Cookies.get('osPreferred')
const el = document.querySelector('[data-default-platform]') as HTMLElement const el = document.querySelector('[data-default-platform]') as HTMLElement
if (el) return el.dataset.defaultPlatform if (el) return el.dataset.defaultPlatform
} }

View File

@@ -100,6 +100,7 @@ export function sendEvent({ type, version = '1.0.0', ...props }: SendEventProps)
// Preference information // Preference information
application_preference: Cookies.get('toolPreferred'), application_preference: Cookies.get('toolPreferred'),
color_mode_preference: getColorModePreference(), color_mode_preference: getColorModePreference(),
os_preference: Cookies.get('osPreferred'),
}, },
...props, ...props,

View File

@@ -107,10 +107,11 @@ const context = {
}, },
// Preference information // Preference information
/* os_preference: { os_preference: {
type: 'string', type: 'string',
description: 'The os for examples selected by the user.' enum: ['linux', 'mac', 'windows'],
}, */ description: 'The os for examples selected by the user.',
},
application_preference: { application_preference: {
type: 'string', type: 'string',
enum: ['webui', 'cli', 'desktop', 'curl'], enum: ['webui', 'cli', 'desktop', 'curl'],
@@ -360,13 +361,26 @@ const preferenceSchema = {
}, },
preference_name: { preference_name: {
type: 'string', type: 'string',
enum: ['application', 'color_mode'], // os enum: ['application', 'color_mode', 'os'],
description: 'The preference name, such as os, application, or color_mode', description: 'The preference name, such as os, application, or color_mode',
}, },
preference_value: { preference_value: {
type: 'string', type: 'string',
enum: ['webui', 'cli', 'desktop', 'curl', 'dark', 'light', 'auto', 'auto:dark', 'auto:light'], enum: [
description: 'The application or color_mode selected by the user.', 'webui',
'cli',
'desktop',
'curl',
'dark',
'light',
'auto',
'auto:dark',
'auto:light',
'linux',
'mac',
'windows',
],
description: 'The application, color_mode, or os selected by the user.',
}, },
}, },
} }