-
Notifications
You must be signed in to change notification settings - Fork 325
/
Copy pathtelemetry.js
45 lines (40 loc) · 1.44 KB
/
telemetry.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
import browser from 'webextension-polyfill'
import MetricsProvider from '@ipfs-shipyard/ignite-metrics/vanilla'
import debug from 'debug'
const log = debug('ipfs-companion:telemetry')
const metricsProvider = new MetricsProvider({
appKey: '393f72eb264c28a1b59973da1e0a3938d60dc38a',
autoTrack: false,
storageProvider: null
})
/**
*
* @param {import('../types.js').CompanionState} state
* @returns {void}
*/
export function handleConsentFromState (state) {
const telemetryGroups = {
minimal: state?.telemetryGroupMinimal || false,
performance: state?.telemetryGroupPerformance || false,
ux: state?.telemetryGroupUx || false,
feedback: state?.telemetryGroupFeedback || false,
location: state?.telemetryGroupLocation || false
}
for (const [groupName, isEnabled] of Object.entries(telemetryGroups)) {
if (isEnabled) {
log(`Adding consent for '${groupName}'`)
metricsProvider.addConsent(groupName)
} else {
log(`Removing consent for '${groupName}'`)
metricsProvider.removeConsent(groupName)
}
}
}
const ignoredViewsRegex = []
export function trackView (view, segments) {
log('trackView called for view: ', view)
const { version } = browser.runtime.getManifest()
metricsProvider.trackView(view, ignoredViewsRegex, { ...segments, version })
}
export const startSession = (...args) => metricsProvider.startSession(...args)
export const endSession = (...args) => metricsProvider.endSession(...args)