diff --git a/src/components/demo/ useDemoControls.jsx b/src/components/demo/ useDemoControls.jsx new file mode 100644 index 0000000..94c49c1 --- /dev/null +++ b/src/components/demo/ useDemoControls.jsx @@ -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 }; + } +} \ No newline at end of file