diff options
| author | Fuwn <[email protected]> | 2026-05-29 23:05:37 +0000 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2026-05-29 23:05:37 +0000 |
| commit | be151fd6f7e7860cc60bee67bab815c155e86fcd (patch) | |
| tree | 47dcfe80450479efe722f4b59c58f934d07f3618 /src/lib/List/MediaRoulette.svelte | |
| parent | feat(lists): animate list-title count with NumberTicker (diff) | |
| download | due.moe-be151fd6f7e7860cc60bee67bab815c155e86fcd.tar.xz due.moe-be151fd6f7e7860cc60bee67bab815c155e86fcd.zip | |
feat(analytics): track umami events across core actions
Add a guarded track() wrapper (src/lib/analytics.ts) so programmatic
events no-op instead of throwing when umami is absent (localhost),
lazily loaded, or ad-blocked. Instrument the core loop (progress
increment, roulette, list filter, force refresh), the auth funnel
(log in/out, command palette), settings toggles/selects at the wrapper
level, sync/debug/feed actions, and tool/sharing actions.
Diffstat (limited to 'src/lib/List/MediaRoulette.svelte')
| -rw-r--r-- | src/lib/List/MediaRoulette.svelte | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/src/lib/List/MediaRoulette.svelte b/src/lib/List/MediaRoulette.svelte index dc9a2269..64c585df 100644 --- a/src/lib/List/MediaRoulette.svelte +++ b/src/lib/List/MediaRoulette.svelte @@ -5,6 +5,7 @@ import { outboundLink } from "$lib/Media/links"; import settings from "$stores/settings"; import locale from "$stores/locale"; import { mediaTitle } from "./mediaTitle"; +import { track } from "$lib/analytics"; interface Props { media: Media[]; @@ -25,6 +26,8 @@ let currentMedia = $derived(media[displayIndex]); const startRoulette = () => { if (media.length === 0 || isSpinning) return; + track("Spin Roulette", { type }); + isSpinning = true; showResult = false; selectedIndex = Math.floor(Math.random() * media.length); @@ -131,6 +134,7 @@ const handleOverlayClick = (e: MouseEvent) => { href={outboundLink(currentMedia, type, $settings.displayOutboundLinksTo)} target="_blank" class="view-link" + data-umami-event="Roulette View Media" > {$locale({ values: { |