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