diff --git a/index.html b/index.html index e06ec89..464d340 100644 --- a/index.html +++ b/index.html @@ -36,14 +36,32 @@ diff --git a/src/App.vue b/src/App.vue index e544f45..93dfee1 100644 --- a/src/App.vue +++ b/src/App.vue @@ -18,7 +18,7 @@ export default { sortMethod: 'score', topics: [], isMobile: false, - currentTheme: 'auto', + currentTheme: typeof localStorage !== 'undefined' ? (localStorage.getItem('theme') || 'auto') : 'auto', mediaQueryListener: null, vuetifyTheme: null, darkModeQuery: null, @@ -31,11 +31,9 @@ export default { this.fetchDeals(); // Initialize sort method from local storage this.initializeSortMethod(); - // Initialize theme on next tick - this.$nextTick(() => { - this.initializeTheme(); - this.setupThemeListener(); - }); + // Initialize theme immediately to prevent flash + this.initializeTheme(); + this.setupThemeListener(); }, beforeUnmount() { window.removeEventListener("keydown", this.handleKeyDown); @@ -50,11 +48,11 @@ export default { const savedTheme = localStorage.getItem('theme'); if (!savedTheme) { this.currentTheme = 'auto'; - this.applyTheme('auto'); + this.applyTheme('auto', true); // skipSave=true to avoid redundant write } else { this.currentTheme = savedTheme; - // Apply saved theme - this.applyTheme(savedTheme); + // Apply saved theme (skipSave=true since it's already saved) + this.applyTheme(savedTheme, true); } }, setupThemeListener() {