owlboard-svelte/src/lib/stores/telemetryConsent.ts
Fred Boniface 0011bdb751 Privacy improvements:
- Add telemetry consent modal
 - Conditionally load telemetry script
 - Add telemetry consent to settings
 - Update and clarify privacy policy
 - Bump version number
2025-03-09 22:50:42 +00:00

25 lines
839 B
TypeScript

// src/stores.js
import { writable, type Writable } from "svelte/store";
import { browser } from "$app/environment";
// Initialize the store with a boolean value from local storage
export const telemetry: Writable<boolean> = writable(fromLocalStorage("telemetry", false));
toLocalStorage(telemetry, "telemetry");
function fromLocalStorage(storageKey: string, fallback: boolean): boolean {
if (browser) {
const storedValue = localStorage.getItem(storageKey);
if (storedValue !== null && storedValue !== "undefined") {
return storedValue === "true";
}
}
return fallback;
}
function toLocalStorage(store: Writable<boolean>, storageKey: string) {
if (browser) {
store.subscribe((value: boolean) => {
localStorage.setItem(storageKey, String(value));
});
}
}