Setup usage metrics

This commit is contained in:
Kieran 2023-09-12 22:53:32 +01:00
parent 377dfd5d30
commit 6745786e9f
Signed by: Kieran
GPG Key ID: DE71CEB3925BE941
4 changed files with 40 additions and 0 deletions

View File

@ -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;

View File

@ -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");
}

View File

@ -128,6 +128,23 @@ const PreferencesPage = () => {
</select>
</div>
</div>
<div className="flex f-space w-max">
<div className="flex-column g8">
<h4>
<FormattedMessage defaultMessage="Send usage metrics" />
</h4>
<small>
<FormattedMessage defaultMessage="Send anonymous usage metrics" />
</small>
</div>
<div>
<input
type="checkbox"
checked={perf.telemetry ?? true}
onChange={e => updatePreferences(login, { ...perf, telemetry: e.target.checked })}
/>
</div>
</div>
<div className="flex w-max">
<div className="flex-column g8">
<h4>

View File

@ -115,6 +115,16 @@ async function initSite() {
} catch (e) {
console.error("Failed to register protocol handler", e);
}
// inject analytics script
// <script defer data-domain="snort.social" src="http://analytics.v0l.io/js/script.js"></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;
}