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";
const defaultSettings: CobaltSettings = {
schemaVersion: 1,
schemaVersion: 2,
advanced: {
debug: false,
},
@ -27,6 +27,9 @@ const defaultSettings: CobaltSettings = {
youtubeVideoCodec: "h264",
youtubeDubBrowserLang: false,
},
privacy: {
disableAnalytics: false
}
}
const defaultSettingsPage = () => {

View file

@ -9,6 +9,14 @@ import defaultSettings from '../settings/defaults';
type PartialSettings = RecursivePartial<CobaltSettings>;
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) => {
localStorage.setItem(
"settings",
@ -69,6 +77,7 @@ export function updateSetting(partial: PartialSettings) {
)
);
updatePlausiblePreference(partial);
return updated;
});
}

View file

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