Thread viewer for Bluesky
1interface SettingsData {
2 dateLocale?: string;
3 incognito?: boolean;
4 biohazard?: boolean;
5}
6
7declare global {
8 interface Window {
9 settings: typeof settings;
10 }
11}
12
13class Settings {
14 data: SettingsData;
15
16 constructor() {
17 let savedData = localStorage.getItem('settings');
18 this.data = $state(savedData ? JSON.parse(savedData) : {});
19 }
20
21 save() {
22 localStorage.setItem('settings', JSON.stringify(this.data));
23 }
24
25 logOut() {
26 delete this.data.incognito;
27 this.save();
28 }
29
30 get dateLocale(): string | undefined {
31 return this.data.dateLocale;
32 }
33
34 set dateLocale(value: string) {
35 this.data.dateLocale = value;
36 this.save();
37 }
38
39 get incognitoMode(): boolean | undefined {
40 return this.data.incognito;
41 }
42
43 set incognitoMode(value: boolean) {
44 this.data.incognito = value;
45 this.save();
46 }
47
48 get biohazardsEnabled(): boolean | undefined {
49 return this.data.biohazard;
50 }
51
52 set biohazardsEnabled(value: boolean) {
53 this.data.biohazard = value;
54 this.save();
55 }
56}
57
58export const settings = new Settings();
59window.settings = settings;