1
0
mirror of synced 2025-12-21 02:46:50 -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 { sendEvent, EventType } from './events'
const supportedPlatforms = ['mac', 'windows', 'linux']
const detectedPlatforms = new Set()
@@ -35,6 +38,18 @@ export default function displayPlatformSpecificContent() {
const target = event.target as HTMLElement
setActiveSwitcherLinks(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() {
if (Cookies.get('osPreferred')) return Cookies.get('osPreferred')
const el = document.querySelector('[data-default-platform]') as HTMLElement
if (el) return el.dataset.defaultPlatform
}

View File

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

View File

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