|
1 | 1 | <script lang="ts"> |
2 | | - import { onMount } from 'svelte'; |
3 | | - import { browser } from '$app/environment'; |
| 2 | + import { env } from '$env/dynamic/public'; |
| 3 | + import { onMount, setContext, getContext } from 'svelte'; |
| 4 | + import { browser, dev } from '$app/environment'; |
4 | 5 | import { beforeNavigate, afterNavigate } from '$app/navigation'; |
5 | 6 | import NProgress from 'nprogress'; |
6 | 7 | import '../app.css'; |
7 | 8 | import 'overlayscrollbars/overlayscrollbars.css'; |
8 | 9 | import '@fontsource-variable/roboto-flex'; |
| 10 | + import { key, Tracker, type TrackerContext } from '$lib/tracker'; |
9 | 11 | import { showDock, showRightDock, preferredTheme, activeOrganization } from '$globalStore'; |
10 | 12 |
|
11 | 13 | import * as Tooltip from '$lib/components/ui/tooltip'; |
|
70 | 72 | // }); |
71 | 73 |
|
72 | 74 | onMount(() => { |
| 75 | + if (env.PUBLIC_OPENREPLAY_INGEST_URL && env.PUBLIC_OPENREPLAY_PROJECT_KEY) { |
| 76 | + const tracker = new Tracker({ |
| 77 | + ingestPoint: env.PUBLIC_OPENREPLAY_INGEST_URL, |
| 78 | + projectKey: env.PUBLIC_OPENREPLAY_PROJECT_KEY, |
| 79 | + __DISABLE_SECURE_MODE: dev |
| 80 | + }); |
| 81 | +
|
| 82 | + setContext<TrackerContext>(key, { |
| 83 | + getTracker: () => tracker |
| 84 | + }); |
| 85 | +
|
| 86 | + tracker.start(); |
| 87 | + } |
| 88 | +
|
73 | 89 | //* Reflect changes to user preference for immediately |
74 | 90 | window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', (event) => { |
75 | 91 | if ($preferredTheme == 'SYSTEM') { |
|
82 | 98 | }); |
83 | 99 | }); |
84 | 100 |
|
| 101 | + $effect(() => { |
| 102 | + const tracker = getContext<TrackerContext>(key)?.getTracker(); |
| 103 | + if (tracker) { |
| 104 | + if (data.user) { |
| 105 | + tracker?.setUserID(data.user.id); |
| 106 | + tracker?.setMetadata('email', data.user.email); |
| 107 | + tracker?.setMetadata('name', data.user.name); |
| 108 | + } else { |
| 109 | + tracker?.setUserID(''); |
| 110 | + tracker?.setMetadata('email', ''); |
| 111 | + tracker?.setMetadata('name', ''); |
| 112 | + } |
| 113 | + } |
| 114 | + }); |
| 115 | +
|
85 | 116 | // function switchTheme(e: KeyboardEvent) { |
86 | 117 | // const target = e.target as HTMLElement; |
87 | 118 | // if ( |
|
0 commit comments