2.9.8
Move info boxes to model popups
This commit is contained in:
@@ -297,6 +297,29 @@ export function useAppState() {
|
||||
return next;
|
||||
});
|
||||
|
||||
// ── Welcome / "How it works" popup ───────────────────────────────────
|
||||
// Auto-shows on first visit (no seen flag), can be reopened anytime via
|
||||
// the footer link. Reopening does NOT clear the flag.
|
||||
const [welcomeOpen, setWelcomeOpen] = useState(() => {
|
||||
try { return localStorage.getItem('sunscope_welcome_seen') !== '1'; }
|
||||
catch (e) { return false; }
|
||||
});
|
||||
useEffect(() => {
|
||||
if (welcomeOpen && (() => { try { return localStorage.getItem('sunscope_welcome_seen') !== '1'; } catch (e) { return false; } })()) {
|
||||
track('welcome_shown');
|
||||
}
|
||||
}, []);
|
||||
const closeWelcome = () => {
|
||||
try { localStorage.setItem('sunscope_welcome_seen', '1'); } catch (e) { /* ignore */ }
|
||||
setWelcomeOpen(false);
|
||||
};
|
||||
const openWelcome = () => setWelcomeOpen(true);
|
||||
|
||||
// Restore-access modal ("Already subscribed?").
|
||||
const [restoreOpen, setRestoreOpen] = useState(false);
|
||||
const openRestore = () => setRestoreOpen(true);
|
||||
const closeRestore = () => setRestoreOpen(false);
|
||||
|
||||
const [showUnits, setShowUnits] = useState(() => {
|
||||
try {
|
||||
const s = localStorage.getItem('sunscope_show_units');
|
||||
@@ -631,6 +654,8 @@ export function useAppState() {
|
||||
pollenType, setPollenTypeAndSave,
|
||||
utciEnv, setUtciEnv: setUtciEnvAndSave,
|
||||
showDecimals, toggleShowDecimals,
|
||||
welcomeOpen, closeWelcome, openWelcome,
|
||||
restoreOpen, openRestore, closeRestore,
|
||||
showUnits, toggleShowUnits,
|
||||
tableInterval, setTableInterval,
|
||||
// table refs
|
||||
|
||||
Reference in New Issue
Block a user