diff --git a/packages/app/src/Login/Preferences.ts b/packages/app/src/Login/Preferences.ts index ea12eee5..6bb1181f 100644 --- a/packages/app/src/Login/Preferences.ts +++ b/packages/app/src/Login/Preferences.ts @@ -71,6 +71,11 @@ export interface UserPreferences { * Proof-of-Work to apply to all events */ pow?: number; + + /** + * Collect usage metrics + */ + telemetry?: boolean; } export const DefaultPreferences = { @@ -87,4 +92,5 @@ export const DefaultPreferences = { defaultRootTab: "notes", defaultZapAmount: 50, autoZap: false, + telemetry: true, } as UserPreferences; diff --git a/packages/app/src/Pages/LoginPage.tsx b/packages/app/src/Pages/LoginPage.tsx index ba004d7b..66befb99 100644 --- a/packages/app/src/Pages/LoginPage.tsx +++ b/packages/app/src/Pages/LoginPage.tsx @@ -20,6 +20,12 @@ import QrCode from "Element/QrCode"; import Copy from "Element/Copy"; import { delay } from "SnortUtils"; +declare global { + interface Window { + plausible?: (tag: string) => void + } +} + interface ArtworkEntry { name: string; pubkey: HexKey; @@ -112,6 +118,7 @@ export default function LoginPage() { async function makeRandomKey() { await generateNewLogin(); + window.plausible?.("Generate Account") navigate("/new"); } diff --git a/packages/app/src/Pages/settings/Preferences.tsx b/packages/app/src/Pages/settings/Preferences.tsx index 1e6bb236..51e015ae 100644 --- a/packages/app/src/Pages/settings/Preferences.tsx +++ b/packages/app/src/Pages/settings/Preferences.tsx @@ -128,6 +128,23 @@ const PreferencesPage = () => { +
+
+

+ +

+ + + +
+
+ updatePreferences(login, { ...perf, telemetry: e.target.checked })} + /> +
+

diff --git a/packages/app/src/index.tsx b/packages/app/src/index.tsx index 691e08cd..b0885162 100644 --- a/packages/app/src/index.tsx +++ b/packages/app/src/index.tsx @@ -115,6 +115,16 @@ async function initSite() { } catch (e) { console.error("Failed to register protocol handler", e); } + + // inject analytics script + // + if (login.preferences.telemetry ?? true) { + const sc = document.createElement("script"); + sc.src = "http://analytics.v0l.io/js/script.js"; + sc.defer = true; + sc.setAttribute("data-domain", "snort.social"); + document.head.appendChild(sc); + } return null; }