diff --git a/apps/playground/package.json b/apps/playground/package.json index afd93f5ee..e2a9fe5a4 100644 --- a/apps/playground/package.json +++ b/apps/playground/package.json @@ -17,6 +17,7 @@ "client-zip": "catalog:", "fflate": "catalog:", "pinia": "catalog:", + "swetrix": "catalog:", "vue": "catalog:" }, "devDependencies": { diff --git a/apps/playground/src/main.ts b/apps/playground/src/main.ts index 039609667..4fbc8a1e0 100644 --- a/apps/playground/src/main.ts +++ b/apps/playground/src/main.ts @@ -99,6 +99,7 @@ export const createApp = ViteSSG( pinia.state.value = initialState.pinia || {} if (!import.meta.env.SSR) { + await import('./plugins/analytics') const { useAuthStore } = await import('@vuetify/auth') useAuthStore().verify() } diff --git a/apps/playground/src/plugins/analytics.ts b/apps/playground/src/plugins/analytics.ts new file mode 100644 index 000000000..98a6446a5 --- /dev/null +++ b/apps/playground/src/plugins/analytics.ts @@ -0,0 +1,20 @@ +// Framework +import { IN_BROWSER } from '@vuetify/v0/constants' + +async function initAnalytics () { + const Swetrix = await import('swetrix') + Swetrix.init('NYQnHCV4oCFA', { + apiURL: 'https://swetrix-api.vuetifyjs.com/log', + }) + Swetrix.trackViews() + Swetrix.trackErrors() +} + +if (IN_BROWSER) { + const timeout = 2000 + if (typeof requestIdleCallback === 'function') { + requestIdleCallback(() => initAnalytics(), { timeout }) + } else { + setTimeout(initAnalytics, timeout) + } +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0ce8b56aa..9d48a55b5 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -532,6 +532,9 @@ importers: pinia: specifier: 'catalog:' version: 3.0.4(typescript@6.0.3)(vue@3.5.39(typescript@6.0.3)) + swetrix: + specifier: 'catalog:' + version: 4.4.0 vue: specifier: 'catalog:' version: 3.5.39(typescript@6.0.3)