diff --git a/index.html b/index.html index b4d59f27..b02d769f 100644 --- a/index.html +++ b/index.html @@ -8,6 +8,7 @@ function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'G-S982VZS08T', { + send_page_view: false, theme: localStorage.getItem('theme') || 'default', version: localStorage.getItem('schema_version') || '1.21.2', locale: localStorage.getItem('language') || 'en', diff --git a/src/app/Analytics.ts b/src/app/Analytics.ts index ca171ce4..53991397 100644 --- a/src/app/Analytics.ts +++ b/src/app/Analytics.ts @@ -4,6 +4,13 @@ import type { VersionId } from './services/index.js' export type Method = 'menu' | 'hotkey' export namespace Analytics { + export function pageview(url: string) { + gtag('event', 'page_view', { + page_location: url, + page_title: document.title, + }) + } + export function setLocale(locale: string) { gtag('set', { locale, diff --git a/src/app/App.tsx b/src/app/App.tsx index c18faef1..cfbd32be 100644 --- a/src/app/App.tsx +++ b/src/app/App.tsx @@ -1,13 +1,22 @@ +import type { RouterOnChangeArgs } from 'preact-router' import { Router } from 'preact-router' import '../styles/global.css' import '../styles/nodes.css' +import { Analytics } from './Analytics.js' import { Header } from './components/index.js' import { Changelog, Convert, Customized, Generator, Generators, Guide, Guides, Home, LegacyPartners, Partners, Sounds, Transformation, Versions, WhatsNew, Worldgen } from './pages/index.js' +import { cleanUrl } from './Utils.js' export function App() { + const changeRoute = (e: RouterOnChangeArgs) => { + window.dispatchEvent(new CustomEvent('replacestate')) + // Needs a timeout to ensure the title is set correctly + setTimeout(() => Analytics.pageview(cleanUrl(e.url))) + } + return <>
- + diff --git a/src/app/Utils.ts b/src/app/Utils.ts index c2f73657..41d70eca 100644 --- a/src/app/Utils.ts +++ b/src/app/Utils.ts @@ -64,7 +64,7 @@ export function hashString(s: string) { } export function cleanUrl(url: string) { - return `/${url}/`.replaceAll('//', '/') + return `/${url}/`.replaceAll(/\/\/+/g, '/') } export function getPath(url: string) {