Files
console/src/lib/actions/analytics.ts
T
2022-11-16 16:29:51 +01:00

71 lines
1.7 KiB
TypeScript

import Analytics from 'analytics';
import googleAnalytics from '@analytics/google-analytics';
import { get } from 'svelte/store';
import { page } from '$app/stores';
import { user } from '$lib/stores/user';
const analytics = Analytics({
app: 'appwrite',
plugins: [
googleAnalytics({
measurementIds: ['G-R4YJ9JN8L4']
})
]
});
export function trackEvent(name: string, data: object = null): void {
if (!isTrackingAllowed()) {
return;
}
const path = get(page).routeId;
analytics.track(name, { ...data, path });
sendEventToGrowth(name, path, data);
}
export function trackPageView(path: string) {
if (!isTrackingAllowed()) {
return;
}
analytics.page({
path
});
}
function sendEventToGrowth(event: string, path: string, data: object = null): void {
let email: string, name: string;
const userStore = get(user);
if (userStore) {
email = userStore.email;
name = userStore.name;
}
fetch('https://growth.appwrite.io/v1/analytics', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
action: event,
label: event,
url: window.location.origin + path,
data: {
email,
name,
...data
}
})
});
}
function isTrackingAllowed() {
if (window.navigator?.doNotTrack) {
if (navigator.doNotTrack === '1' || navigator.doNotTrack === 'yes') {
return false;
} else {
return true;
}
} else {
return true;
}
}