diff --git a/src/app/analytics.ts b/src/app/analytics.ts index e4d5443..2eb1e02 100644 --- a/src/app/analytics.ts +++ b/src/app/analytics.ts @@ -1,6 +1,7 @@ /* eslint prefer-rest-params: 0 */ import {page} from "$app/stores" +import {getSetting} from "@app/state" const w = window as any @@ -12,7 +13,7 @@ w.plausible = export const setupAnalytics = () => { page.subscribe($page => { - if ($page.route) { + if ($page.route && getSetting("report_usage")) { w.plausible("pageview", {u: $page.route.id}) } }) diff --git a/src/app/state.ts b/src/app/state.ts index 1f5702a..1862bfa 100644 --- a/src/app/state.ts +++ b/src/app/state.ts @@ -305,6 +305,8 @@ export type Settings = { values: { show_media: boolean hide_sensitive: boolean + report_usage: boolean + report_errors: boolean send_delay: number upload_type: "nip96" | "blossom" nip96_urls: string[] @@ -315,6 +317,8 @@ export type Settings = { export const defaultSettings = { show_media: true, hide_sensitive: true, + report_usage: true, + report_errors: false, send_delay: 3000, upload_type: "nip96", nip96_urls: ["https://nostr.build"], diff --git a/src/app/tracking.ts b/src/app/tracking.ts index d63ca09..bc393b4 100644 --- a/src/app/tracking.ts +++ b/src/app/tracking.ts @@ -1,10 +1,17 @@ import * as Sentry from "@sentry/browser" +import {getSetting} from "@app/state" export const setupTracking = () => { if (import.meta.env.VITE_GLITCHTIP_API_KEY) { Sentry.init({ dsn: import.meta.env.VITE_GLITCHTIP_API_KEY, - tracesSampleRate: 0.01, + beforeSend(event: any) { + if (!getSetting("report_errors")) { + return null + } + + return event + }, integrations(integrations) { return integrations.filter(integration => integration.name !== "Breadcrumbs") }, diff --git a/src/routes/settings/+page.svelte b/src/routes/settings/+page.svelte index 78c525e..b204e29 100644 --- a/src/routes/settings/+page.svelte +++ b/src/routes/settings/+page.svelte @@ -39,7 +39,7 @@
-

Content Settings

+ Content Settings {#snippet label()}

Hide sensitive content?

@@ -77,7 +77,37 @@
{/snippet} -

Editor Settings

+ Privacy Settings + + {#snippet label()} +

Report errors?

+ {/snippet} + {#snippet input()} + + {/snippet} + {#snippet info()} +

+ Allow {PLATFORM_NAME} to send error reports to help improve the app. +

+ {/snippet} +
+ + {#snippet label()} +

Report usage?

+ {/snippet} + {#snippet input()} + + {/snippet} + {#snippet info()} +

+ Allow {PLATFORM_NAME} to collect anonymous usage data. +

+ {/snippet} +
+ Editor Settings {#snippet label()}

Send Delay

@@ -119,7 +149,7 @@ {/snippet} {#snippet info()} -

Choose a media server type and url for files you upload to flotilla.

+

Choose a media server type and url for files you upload to {PLATFORM_NAME}.

{/snippet}
diff --git a/src/routes/settings/profile/+page.svelte b/src/routes/settings/profile/+page.svelte index 69175ea..214e01d 100644 --- a/src/routes/settings/profile/+page.svelte +++ b/src/routes/settings/profile/+page.svelte @@ -3,6 +3,7 @@ import {hexToBytes} from "@noble/hashes/utils" import {displayPubkey, displayProfile} from "@welshman/util" import {pubkey, session, displayNip05, deriveProfile} from "@welshman/app" + import {slideAndFade} from "@lib/transition" import Icon from "@lib/components/Icon.svelte" import FieldInline from "@lib/components/FieldInline.svelte" import Button from "@lib/components/Button.svelte" @@ -29,6 +30,8 @@ const startEject = () => pushModal(InfoKeys) const startDelete = () => pushModal(ProfileDelete) + + let showAdvanced = false
@@ -122,10 +125,24 @@ {/if}
-
- +
+
+ Advanced + +
+ {#if showAdvanced} +
+ +
+ {/if}