aboutsummaryrefslogtreecommitdiff
path: root/src/frontend/app/contexts
diff options
context:
space:
mode:
authorAriel Costas Guerrero <ariel@costas.dev>2025-12-25 02:37:21 +0100
committerAriel Costas Guerrero <ariel@costas.dev>2025-12-25 02:37:21 +0100
commit0197a19973940d40a373b8aa68b2791391149cef (patch)
tree36ac440484dabaebd8b17089c56f984e64601f45 /src/frontend/app/contexts
parent843cfb208849d652da16e943247057cf5a251254 (diff)
Implement selecting stop layers to display
Diffstat (limited to 'src/frontend/app/contexts')
-rw-r--r--src/frontend/app/contexts/SettingsContext.tsx64
1 files changed, 64 insertions, 0 deletions
diff --git a/src/frontend/app/contexts/SettingsContext.tsx b/src/frontend/app/contexts/SettingsContext.tsx
index 6a64b67..1833818 100644
--- a/src/frontend/app/contexts/SettingsContext.tsx
+++ b/src/frontend/app/contexts/SettingsContext.tsx
@@ -23,6 +23,13 @@ interface SettingsContextProps {
setShowTraffic: (show: boolean) => void;
showCameras: boolean;
setShowCameras: (show: boolean) => void;
+
+ showBusStops: boolean;
+ setShowBusStops: (show: boolean) => void;
+ showCoachStops: boolean;
+ setShowCoachStops: (show: boolean) => void;
+ showTrainStops: boolean;
+ setShowTrainStops: (show: boolean) => void;
}
const SettingsContext = createContext<SettingsContextProps | undefined>(
@@ -141,6 +148,56 @@ export const SettingsProvider = ({ children }: { children: ReactNode }) => {
useEffect(() => {
localStorage.setItem("showCameras", showCameras.toString());
}, [showCameras]);
+
+ const [showBusStops, setShowBusStops] = useState<boolean>(() => {
+ const saved = localStorage.getItem("stopsLayers");
+ if (saved) {
+ try {
+ const parsed = JSON.parse(saved);
+ return parsed.bus ?? true;
+ } catch {
+ return true;
+ }
+ }
+ return true;
+ });
+
+ const [showCoachStops, setShowCoachStops] = useState<boolean>(() => {
+ const saved = localStorage.getItem("stopsLayers");
+ if (saved) {
+ try {
+ const parsed = JSON.parse(saved);
+ return parsed.coach ?? true;
+ } catch {
+ return true;
+ }
+ }
+ return true;
+ });
+
+ const [showTrainStops, setShowTrainStops] = useState<boolean>(() => {
+ const saved = localStorage.getItem("stopsLayers");
+ if (saved) {
+ try {
+ const parsed = JSON.parse(saved);
+ return parsed.train ?? true;
+ } catch {
+ return true;
+ }
+ }
+ return true;
+ });
+
+ useEffect(() => {
+ localStorage.setItem(
+ "stopsLayers",
+ JSON.stringify({
+ bus: showBusStops,
+ coach: showCoachStops,
+ train: showTrainStops,
+ })
+ );
+ }, [showBusStops, showCoachStops, showTrainStops]);
//#endregion
return (
@@ -156,6 +213,13 @@ export const SettingsProvider = ({ children }: { children: ReactNode }) => {
setShowTraffic,
showCameras,
setShowCameras,
+
+ showBusStops,
+ setShowBusStops,
+ showCoachStops,
+ setShowCoachStops,
+ showTrainStops,
+ setShowTrainStops,
}}
>
{children}