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();
}
}} />