Thread viewer for Bluesky
at master 59 lines 1.1 kB view raw
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;