diff --git a/src/seqta/ui/themes/disableTheme.ts b/src/seqta/ui/themes/disableTheme.ts index 4876c201..f033571f 100644 --- a/src/seqta/ui/themes/disableTheme.ts +++ b/src/seqta/ui/themes/disableTheme.ts @@ -8,11 +8,10 @@ const mutex = new Mutex(); let isDisabling = false; export const disableTheme = async () => { - console.log('Disabling theme', isDisabling) if (isDisabling) return; if (!settingsState.selectedTheme || settingsState.selectedTheme === '') { - console.log('Theme is already disabled, exit early') + console.debug('Theme is already disabled, exit early') // Theme is already disabled, exit early return; } @@ -20,7 +19,7 @@ export const disableTheme = async () => { const unlock = await mutex.lock(); try { if (settingsState.selectedTheme) { - console.log('Disabling theme:', settingsState.selectedTheme); + console.debug('Disabling theme:', settingsState.selectedTheme); const theme = await localforage.getItem(settingsState.selectedTheme) as CustomTheme; if (theme) { await removeTheme(theme); diff --git a/src/svelte-interface/components/themes/ThemeSelector.svelte b/src/svelte-interface/components/themes/ThemeSelector.svelte index 5ddf9c33..6c6c9457 100644 --- a/src/svelte-interface/components/themes/ThemeSelector.svelte +++ b/src/svelte-interface/components/themes/ThemeSelector.svelte @@ -1,7 +1,7 @@ diff --git a/src/svelte-interface/hooks/ThemeUpdates.ts b/src/svelte-interface/hooks/ThemeUpdates.ts new file mode 100644 index 00000000..548da9cc --- /dev/null +++ b/src/svelte-interface/hooks/ThemeUpdates.ts @@ -0,0 +1,29 @@ +type ThemeUpdateCallback = () => void; + +class ThemeUpdates { + private static instance: ThemeUpdates; + private listeners: Set = new Set(); + + private constructor() {} + + public static getInstance(): ThemeUpdates { + if (!ThemeUpdates.instance) { + ThemeUpdates.instance = new ThemeUpdates(); + } + return ThemeUpdates.instance; + } + + public addListener(callback: ThemeUpdateCallback): void { + this.listeners.add(callback); + } + + public removeListener(callback: ThemeUpdateCallback): void { + this.listeners.delete(callback); + } + + public triggerUpdate(): void { + this.listeners.forEach(callback => callback()); + } +} + +export const themeUpdates = ThemeUpdates.getInstance(); diff --git a/src/svelte-interface/pages/store.svelte b/src/svelte-interface/pages/store.svelte index 41d5f133..6b0699de 100644 --- a/src/svelte-interface/pages/store.svelte +++ b/src/svelte-interface/pages/store.svelte @@ -14,6 +14,7 @@ import Header from '../components/store/Header.svelte' import { deleteTheme } from '@/seqta/ui/themes/deleteTheme' import { getAvailableThemes } from '@/seqta/ui/themes/getAvailableThemes' + import { themeUpdates } from '../hooks/ThemeUpdates' // State variables let searchTerm = $state(''); @@ -97,12 +98,14 @@ await StoreDownloadTheme({themeContent: displayTheme}) // @ts-ignore setTheme(displayTheme.id); + themeUpdates.triggerUpdate(); await fetchCurrentThemes(); } }} onRemove={async () => { if (displayTheme?.id) { - console.log('deleting theme', displayTheme.id); + console.debug('deleting theme', displayTheme.id); deleteTheme(displayTheme.id) + themeUpdates.triggerUpdate(); await fetchCurrentThemes(); } }} />