diff --git a/src/background.ts b/src/background.ts index c148e250..72bc9d2b 100644 --- a/src/background.ts +++ b/src/background.ts @@ -93,6 +93,16 @@ browser.runtime.onMessage.addListener((request: any, _sender: any, sendResponse: reloadSeqtaPages(); break; + case 'extensionPages': + browser.tabs.query({}).then(function (tabs) { + for (let tab of tabs) { + if (tab.url?.includes('chrome-extension://')) { + browser.tabs.sendMessage(tab.id!, request); + } + } + }); + break; + case 'currentTab': browser.tabs.query({ active: true, currentWindow: true }).then(function (tabs) { browser.tabs.sendMessage(tabs[0].id!, request).then(function (response) { diff --git a/src/interface/components/ThemeSelector.tsx b/src/interface/components/ThemeSelector.tsx index f32bbec4..7e5b2280 100644 --- a/src/interface/components/ThemeSelector.tsx +++ b/src/interface/components/ThemeSelector.tsx @@ -31,19 +31,40 @@ const ThemeSelector: ForwardRefExoticComponent & })); useEffect(() => { - const fetchThemes = async () => { - try { - const { themes, selectedTheme } = await listThemes(); - - setThemes(themes); - setSelectedTheme(selectedTheme ? selectedTheme : ''); - } catch (error) { - console.error('Error fetching themes:', error); - } finally { - setIsLoading(false); - } + const handleThemeChange = async () => { + await new Promise((resolve) => setTimeout(resolve, 500)); + fetchThemes(); }; + Browser.runtime.onMessage.addListener((message) => { + if (message.info === 'themeChanged') { + handleThemeChange(); + } + }); + + return () => { + Browser.runtime.onMessage.removeListener((message) => { + if (message.info === 'themeChanged') { + handleThemeChange(); + } + }); + }; + }, []); + + const fetchThemes = async () => { + try { + const { themes, selectedTheme } = await listThemes(); + + setThemes(themes); + setSelectedTheme(selectedTheme ? selectedTheme : ''); + } catch (error) { + console.error('Error fetching themes:', error); + } finally { + setIsLoading(false); + } + }; + + useEffect(() => { fetchThemes(); }, []); diff --git a/src/interface/hooks/ThemeManagment.ts b/src/interface/hooks/ThemeManagment.ts index 2864a5a0..75ce8d14 100644 --- a/src/interface/hooks/ThemeManagment.ts +++ b/src/interface/hooks/ThemeManagment.ts @@ -112,6 +112,7 @@ export const sendThemeUpdate = (updatedTheme: CustomTheme, saveTheme?: boolean, if (saveTheme) { browser.runtime.sendMessage({ type: 'currentTab', info: 'CloseThemeCreator' }); + browser.runtime.sendMessage({ type: 'extensionPages', info: 'themeChanged' }); } }); }; diff --git a/src/seqta/utils/listeners/MessageListener.ts b/src/seqta/utils/listeners/MessageListener.ts index ea273ad8..613024d6 100644 --- a/src/seqta/utils/listeners/MessageListener.ts +++ b/src/seqta/utils/listeners/MessageListener.ts @@ -87,7 +87,7 @@ export class MessageHandler { break; default: - console.log('Unknown request info:', request.info); + console.debug('Unknown request info:', request.info); } }