generated from ipfs/ipfs-repository-template
-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathCountlyMetrics.ts
59 lines (49 loc) · 1.62 KB
/
CountlyMetrics.ts
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
import Countly from 'countly-sdk-web'
export const InitCountlyMetrics = (appKey: string, url: string) => {
Countly.init({
app_key: appKey,
url: url,
require_consent: true
})
const necessaryFeatures = ['sessions', 'views']
const marketingFeatures = ['attribution', 'users', 'location']
const performanceFeatures = ['events', 'crashes', 'apm']
const trackingFeatures = ['scrolls', 'clicks', 'forms', 'star-rating', 'feedback']
Countly.group_features({
all: [...necessaryFeatures, ...marketingFeatures, ...performanceFeatures, ...trackingFeatures],
necessary: necessaryFeatures,
marketing: marketingFeatures,
tracking: trackingFeatures,
performance: performanceFeatures
})
/**
* we can call all the helper methods we want, they won't record until consent is provided for specific features
*/
//
Countly.track_clicks()
Countly.track_errors()
Countly.track_forms()
Countly.track_links()
Countly.track_pageview()
Countly.track_scrolls()
Countly.track_sessions()
Countly.track_view()
}
export const updateMetricsConsent = (consent: string[]) => {
Countly.add_consent(consent)
if (Array.isArray(consent)) {
localStorage.setItem('metrics_consent', JSON.stringify(consent))
} else {
localStorage.setItem('metrics_consent', JSON.stringify([consent]))
}
}
export const acceptMetricsConsent = () => {
updateMetricsConsent(['all'])
}
export const declineMetricsConsent = () => {
updateMetricsConsent(['necessary'])
}
export const getMetricsConsent = (): string | null => {
const metricsConsent = localStorage.getItem('metrics_consent')
return metricsConsent
}