Add src/components/demo/ useDemoControls.jsx
This commit is contained in:
parent
db54a34613
commit
4e184a1878
|
|
@ -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 };
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue