Add src/components/demo/ useDemoControls.jsx

This commit is contained in:
Eric Lay 2026-03-11 08:42:11 -05:00
parent db54a34613
commit 4e184a1878
1 changed files with 51 additions and 0 deletions

View File

@ -0,0 +1,51 @@
import { useState, useEffect } from "react";
const STORAGE_KEY = "demo_controls";
const DEFAULTS = {
userActivated: true,
activationCodeValid: true,
};
function load() {
try {
const stored = localStorage.getItem(STORAGE_KEY);
return stored ? { ...DEFAULTS, ...JSON.parse(stored) } : { ...DEFAULTS };
} catch {
return { ...DEFAULTS };
}
}
function save(state) {
localStorage.setItem(STORAGE_KEY, JSON.stringify(state));
}
export function useDemoControls() {
const [controls, setControls] = useState(load);
const update = (key, value) => {
setControls((prev) => {
const next = { ...prev, [key]: value };
save(next);
return next;
});
};
const reset = () => {
save(DEFAULTS);
setControls({ ...DEFAULTS });
sessionStorage.removeItem("demo_user");
};
return { controls, update, reset };
}
// Read-only helper for pages that just need to check values
export function getDemoControls() {
try {
const stored = localStorage.getItem(STORAGE_KEY);
return stored ? { ...DEFAULTS, ...JSON.parse(stored) } : { ...DEFAULTS };
} catch {
return { ...DEFAULTS };
}
}