web/state/settings: add "disable analytics" option

This commit is contained in:
dumbmoron 2024-07-14 15:22:42 +00:00
parent 578150e40e
commit ee9421b831
No known key found for this signature in database
3 changed files with 18 additions and 1 deletions

View file

@ -3,7 +3,7 @@ import { defaultLocale } from "$lib/i18n/translations";
import type { CobaltSettings } from "$lib/types/settings"; import type { CobaltSettings } from "$lib/types/settings";
const defaultSettings: CobaltSettings = { const defaultSettings: CobaltSettings = {
schemaVersion: 1, schemaVersion: 2,
advanced: { advanced: {
debug: false, debug: false,
}, },
@ -27,6 +27,9 @@ const defaultSettings: CobaltSettings = {
youtubeVideoCodec: "h264", youtubeVideoCodec: "h264",
youtubeDubBrowserLang: false, youtubeDubBrowserLang: false,
}, },
privacy: {
disableAnalytics: false
}
} }
const defaultSettingsPage = () => { const defaultSettingsPage = () => {

View file

@ -9,6 +9,14 @@ import defaultSettings from '../settings/defaults';
type PartialSettings = RecursivePartial<CobaltSettings>; type PartialSettings = RecursivePartial<CobaltSettings>;
type PartialSettingsWithSchema = RecursivePartial<CobaltSettings> & { schemaVersion: number }; type PartialSettingsWithSchema = RecursivePartial<CobaltSettings> & { schemaVersion: number };
const updatePlausiblePreference = (settings: PartialSettings) => {
if (settings.privacy?.disableAnalytics) {
localStorage.setItem('plausible_ignore', 'true');
} else if (localStorage.getItem('plausible_ignore') !== null) {
localStorage.removeItem('plausible_ignore');
}
}
const writeToStorage = (settings: PartialSettings) => { const writeToStorage = (settings: PartialSettings) => {
localStorage.setItem( localStorage.setItem(
"settings", "settings",
@ -69,6 +77,7 @@ export function updateSetting(partial: PartialSettings) {
) )
); );
updatePlausiblePreference(partial);
return updated; return updated;
}); });
} }

View file

@ -19,6 +19,10 @@ type CobaltSettingsAdvanced = {
debug: boolean, debug: boolean,
}; };
type CobaltSettingsPrivacy = {
disableAnalytics: boolean
};
type CobaltSettingsSave = { type CobaltSettingsSave = {
audioFormat: typeof audioFormatOptions[number], audioFormat: typeof audioFormatOptions[number],
disableMetadata: boolean, disableMetadata: boolean,
@ -38,6 +42,7 @@ export type CobaltSettings = {
advanced: CobaltSettingsAdvanced, advanced: CobaltSettingsAdvanced,
appearance: CobaltSettingsAppearance, appearance: CobaltSettingsAppearance,
save: CobaltSettingsSave, save: CobaltSettingsSave,
privacy: CobaltSettingsPrivacy
}; };
export type DownloadModeOption = CobaltSettings['save']['downloadMode']; export type DownloadModeOption = CobaltSettings['save']['downloadMode'];