Setup usage metrics
This commit is contained in:
parent
377dfd5d30
commit
6745786e9f
@ -71,6 +71,11 @@ export interface UserPreferences {
|
|||||||
* Proof-of-Work to apply to all events
|
* Proof-of-Work to apply to all events
|
||||||
*/
|
*/
|
||||||
pow?: number;
|
pow?: number;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Collect usage metrics
|
||||||
|
*/
|
||||||
|
telemetry?: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
export const DefaultPreferences = {
|
export const DefaultPreferences = {
|
||||||
@ -87,4 +92,5 @@ export const DefaultPreferences = {
|
|||||||
defaultRootTab: "notes",
|
defaultRootTab: "notes",
|
||||||
defaultZapAmount: 50,
|
defaultZapAmount: 50,
|
||||||
autoZap: false,
|
autoZap: false,
|
||||||
|
telemetry: true,
|
||||||
} as UserPreferences;
|
} as UserPreferences;
|
||||||
|
@ -20,6 +20,12 @@ import QrCode from "Element/QrCode";
|
|||||||
import Copy from "Element/Copy";
|
import Copy from "Element/Copy";
|
||||||
import { delay } from "SnortUtils";
|
import { delay } from "SnortUtils";
|
||||||
|
|
||||||
|
declare global {
|
||||||
|
interface Window {
|
||||||
|
plausible?: (tag: string) => void
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
interface ArtworkEntry {
|
interface ArtworkEntry {
|
||||||
name: string;
|
name: string;
|
||||||
pubkey: HexKey;
|
pubkey: HexKey;
|
||||||
@ -112,6 +118,7 @@ export default function LoginPage() {
|
|||||||
|
|
||||||
async function makeRandomKey() {
|
async function makeRandomKey() {
|
||||||
await generateNewLogin();
|
await generateNewLogin();
|
||||||
|
window.plausible?.("Generate Account")
|
||||||
navigate("/new");
|
navigate("/new");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -128,6 +128,23 @@ const PreferencesPage = () => {
|
|||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
</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 w-max">
|
||||||
<div className="flex-column g8">
|
<div className="flex-column g8">
|
||||||
<h4>
|
<h4>
|
||||||
|
@ -115,6 +115,16 @@ async function initSite() {
|
|||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.error("Failed to register protocol handler", 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;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user