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) {