Skip to content

Commit 5185cb5

Browse files
committed
Persist theme and last screen across page reloads
1 parent ff9c4cc commit 5185cb5

2 files changed

Lines changed: 24 additions & 0 deletions

File tree

app.js

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,20 +12,43 @@ var reviewList=[];
1212
var reviewIdx=0;
1313

1414
/* ── THEME ── */
15+
var LS_THEME = 'quizhub_theme';
1516
var darkMode = false;
17+
try { darkMode = localStorage.getItem(LS_THEME) === 'dark'; } catch(e){}
18+
if (darkMode) document.documentElement.setAttribute('data-theme', 'dark');
1619
function toggleTheme(){
1720
darkMode=!darkMode;
1821
document.documentElement.setAttribute('data-theme', darkMode?'dark':'light');
1922
document.getElementById('theme-toggle').textContent = darkMode?'🌙':'☀️';
23+
try { localStorage.setItem(LS_THEME, darkMode?'dark':'light'); } catch(e){}
2024
}
25+
window.addEventListener('DOMContentLoaded', function(){
26+
var btn = document.getElementById('theme-toggle');
27+
if (btn) btn.textContent = darkMode?'🌙':'☀️';
28+
});
2129

2230
/* ── SCREENS ── */
31+
var LS_SCREEN = 'quizhub_last_screen';
32+
var PERSIST_SCREENS = ['screen-hub','screen-ctfl-home','screen-ctai-version','screen-ctai-home','screen-ctai-home-v2','screen-ctai-blitz-version','screen-genai-home','screen-profile'];
2333
function showScreen(id){
2434
var ss=document.querySelectorAll('.screen');
2535
for(var s=0;s<ss.length;s++) ss[s].classList.remove('active');
2636
document.getElementById(id).classList.add('active');
2737
window.scrollTo(0,0);
38+
try {
39+
if (PERSIST_SCREENS.indexOf(id) >= 0) localStorage.setItem(LS_SCREEN, id);
40+
else localStorage.removeItem(LS_SCREEN);
41+
} catch(e){}
2842
}
43+
window.addEventListener('DOMContentLoaded', function(){
44+
try {
45+
var saved = localStorage.getItem(LS_SCREEN);
46+
if (saved && PERSIST_SCREENS.indexOf(saved) >= 0 && document.getElementById(saved)) {
47+
if (saved === 'screen-profile') openProfile();
48+
else showScreen(saved);
49+
}
50+
} catch(e){}
51+
});
2952

3053
function showComingSoon(name){
3154
document.getElementById('coming-soon-title').textContent=name+' — Coming soon';

index.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
<title>ISTQB® Exam Simulator</title>
77
<link href="https://fonts.googleapis.com/css2?family=Nunito:wght@400;600;700;800&family=Nunito+Sans:wght@400;600&display=swap" rel="stylesheet">
88
<link rel="stylesheet" href="styles.css">
9+
<script>(function(){try{if(localStorage.getItem('quizhub_theme')==='dark')document.documentElement.setAttribute('data-theme','dark');}catch(e){}})();</script>
910
</head>
1011
<body>
1112
<button id="theme-toggle" onclick="toggleTheme()" title="Toggle dark/light mode">☀️</button>

0 commit comments

Comments
 (0)