From ea6282460da5408b10e6e7f692792d4b07969e3b Mon Sep 17 00:00:00 2001 From: SethBurkart123 Date: Fri, 5 Apr 2024 10:30:23 +1100 Subject: [PATCH] save selectedColor for non-destructive theme viewing --- src/background.ts | 1 + src/seqta/ui/themes/removeTheme.ts | 8 +++++--- src/seqta/ui/themes/setTheme.ts | 8 +++++++- src/types/storage.ts | 1 + 4 files changed, 14 insertions(+), 4 deletions(-) diff --git a/src/background.ts b/src/background.ts index 94e615de..c148e250 100644 --- a/src/background.ts +++ b/src/background.ts @@ -173,6 +173,7 @@ const DefaultValues: SettingsState = { subjectfilters: {}, selectedTheme: '', selectedColor: 'linear-gradient(40deg, rgba(201,61,0,1) 0%, RGBA(170, 5, 58, 1) 100%)', + originalSelectedColor: '', DarkMode: true, shortcuts: [ { diff --git a/src/seqta/ui/themes/removeTheme.ts b/src/seqta/ui/themes/removeTheme.ts index 6aeb2282..b77c946a 100644 --- a/src/seqta/ui/themes/removeTheme.ts +++ b/src/seqta/ui/themes/removeTheme.ts @@ -1,7 +1,7 @@ import { CustomTheme } from '../../../interface/types/CustomThemes'; +import browser from 'webextension-polyfill'; - -export const removeTheme = (theme: CustomTheme) => { +export const removeTheme = async (theme: CustomTheme) => { // Remove custom CSS const styleElement = document.getElementById('custom-theme'); if (styleElement) { @@ -9,7 +9,9 @@ export const removeTheme = (theme: CustomTheme) => { } // Reset default color - //browser.storage.local.set({ selectedColor: '' }); + const originalSelectedColor = await browser.storage.local.get('originalSelectedColor') as { originalSelectedColor: string; }; + await browser.storage.local.set({ selectedColor: originalSelectedColor.originalSelectedColor }); + // Remove custom images const customImageVariables = theme.CustomImages.map((image) => image.variableName); customImageVariables.forEach((variableName) => { diff --git a/src/seqta/ui/themes/setTheme.ts b/src/seqta/ui/themes/setTheme.ts index 4b06dfa8..6aea0d42 100644 --- a/src/seqta/ui/themes/setTheme.ts +++ b/src/seqta/ui/themes/setTheme.ts @@ -20,8 +20,14 @@ export const setTheme = async (themeId: string) => { } } + const originalSelectedColor = await browser.storage.local.get('selectedColor') as { selectedColor: string; }; await applyTheme(theme); - await browser.storage.local.set({ selectedTheme: themeId }); + + await browser.storage.local.set({ + selectedTheme: themeId, + selectedColor: theme.defaultColour, + originalSelectedColor: originalSelectedColor.selectedColor + }); } catch (error) { console.error('Error setting theme:', error); diff --git a/src/types/storage.ts b/src/types/storage.ts index 98cadeb7..defbf4f7 100644 --- a/src/types/storage.ts +++ b/src/types/storage.ts @@ -29,6 +29,7 @@ export interface SettingsState { telemetry: boolean; onoff: boolean; selectedColor: string; + originalSelectedColor: string; shortcuts: Shortcut[]; subjectfilters: Record; transparencyEffects: boolean;