fix: selected colour being lost if page is reloaded with themecreator

This commit is contained in:
SethBurkart123
2025-03-28 00:36:28 +11:00
parent dc4499e8a2
commit 1f023574b8
2 changed files with 32 additions and 2 deletions
@@ -2,6 +2,7 @@ import renderSvelte from "@/interface/main"
import themeCreator from "@/interface/pages/themeCreator.svelte" import themeCreator from "@/interface/pages/themeCreator.svelte"
import { unmount } from "svelte" import { unmount } from "svelte"
import { ThemeManager } from "@/plugins/built-in/themes/theme-manager" import { ThemeManager } from "@/plugins/built-in/themes/theme-manager"
import { settingsState } from '@/seqta/utils/listeners/SettingsState'
let themeCreatorSvelteApp: any = null let themeCreatorSvelteApp: any = null
const themeManager = ThemeManager.getInstance(); const themeManager = ThemeManager.getInstance();
@@ -14,6 +15,10 @@ const themeManager = ThemeManager.getInstance();
export function OpenThemeCreator(themeID: string = "") { export function OpenThemeCreator(themeID: string = "") {
CloseThemeCreator() CloseThemeCreator()
// Store that theme creator is open and save original color
localStorage.setItem('themeCreatorOpen', 'true');
localStorage.setItem('originalPreviewColor', settingsState.selectedColor);
const width = "310px" const width = "310px"
const themeCreatorDiv: HTMLDivElement = document.createElement("div") const themeCreatorDiv: HTMLDivElement = document.createElement("div")
@@ -83,6 +88,9 @@ export function OpenThemeCreator(themeID: string = "") {
* @returns void * @returns void
*/ */
export function CloseThemeCreator() { export function CloseThemeCreator() {
// Remove the stored flag
localStorage.removeItem('themeCreatorOpen');
const themeCreator = document.getElementById("themeCreator") const themeCreator = document.getElementById("themeCreator")
const closeButton = document.querySelector( const closeButton = document.querySelector(
".themeCloseButton", ".themeCloseButton",
+24 -2
View File
@@ -2,6 +2,7 @@ import localforage from 'localforage';
import type { CustomTheme, LoadedCustomTheme } from '@/types/CustomThemes'; import type { CustomTheme, LoadedCustomTheme } from '@/types/CustomThemes';
import { settingsState } from '@/seqta/utils/listeners/SettingsState'; import { settingsState } from '@/seqta/utils/listeners/SettingsState';
import debounce from '@/seqta/utils/debounce'; import debounce from '@/seqta/utils/debounce';
import browser from 'webextension-polyfill';
type ThemeContent = { type ThemeContent = {
id: string; id: string;
@@ -90,6 +91,15 @@ export class ThemeManager {
public async initialize(): Promise<void> { public async initialize(): Promise<void> {
console.debug('[ThemeManager] Starting initialization'); console.debug('[ThemeManager] Starting initialization');
try { try {
// Check if theme creator was open during reload
const themeCreatorOpen = localStorage.getItem('themeCreatorOpen');
if (themeCreatorOpen === 'true') {
console.debug('[ThemeManager] Theme creator was open, clearing preview state');
this.clearPreview();
// Clean up the flag
localStorage.removeItem('themeCreatorOpen');
}
if (settingsState.selectedTheme) { if (settingsState.selectedTheme) {
console.debug('[ThemeManager] Found selected theme, restoring:', settingsState.selectedTheme); console.debug('[ThemeManager] Found selected theme, restoring:', settingsState.selectedTheme);
await this.setTheme(settingsState.selectedTheme); await this.setTheme(settingsState.selectedTheme);
@@ -416,6 +426,7 @@ export class ThemeManager {
// Store original settings if not already stored // Store original settings if not already stored
if (this.originalPreviewColor === null) { if (this.originalPreviewColor === null) {
this.originalPreviewColor = settingsState.selectedColor; this.originalPreviewColor = settingsState.selectedColor;
localStorage.setItem('originalPreviewColor', settingsState.selectedColor);
} }
if (this.originalPreviewTheme === null) { if (this.originalPreviewTheme === null) {
this.originalPreviewTheme = settingsState.DarkMode; this.originalPreviewTheme = settingsState.DarkMode;
@@ -548,11 +559,22 @@ export class ThemeManager {
} }
// Restore original settings // Restore original settings
if (this.originalPreviewColor !== null) { const storedColor = localStorage.getItem('originalPreviewColor');
if (storedColor) {
settingsState.selectedColor = storedColor;
localStorage.removeItem('originalPreviewColor');
} else if (this.originalPreviewColor !== null) {
console.debug('[ThemeManager] Restoring color from memory:', this.originalPreviewColor);
settingsState.selectedColor = this.originalPreviewColor; settingsState.selectedColor = this.originalPreviewColor;
this.originalPreviewColor = null; console.debug('[ThemeManager] Color after restore:', settingsState.selectedColor);
} else {
console.debug('[ThemeManager] No color to restore found');
} }
this.originalPreviewColor = null;
if (this.originalPreviewTheme !== null) { if (this.originalPreviewTheme !== null) {
console.debug('[ThemeManager] Restoring dark mode:', this.originalPreviewTheme);
settingsState.DarkMode = this.originalPreviewTheme; settingsState.DarkMode = this.originalPreviewTheme;
this.originalPreviewTheme = null; this.originalPreviewTheme = null;
} }