From 5d6fd75899e96826f8e8aa0c84f7f186cbc7e471 Mon Sep 17 00:00:00 2001 From: Ariel Costas Guerrero Date: Wed, 22 Oct 2025 00:06:52 +0200 Subject: Confirm region change, make app name more consistent --- src/frontend/app/routes/settings.tsx | 72 +++++++++++++++++++++++++++++++++--- 1 file changed, 67 insertions(+), 5 deletions(-) (limited to 'src/frontend/app/routes/settings.tsx') diff --git a/src/frontend/app/routes/settings.tsx b/src/frontend/app/routes/settings.tsx index eae6ad8..cb64f4e 100644 --- a/src/frontend/app/routes/settings.tsx +++ b/src/frontend/app/routes/settings.tsx @@ -2,10 +2,12 @@ import { type Theme, useApp } from "../AppContext"; import "./settings.css"; import { useTranslation } from "react-i18next"; import { useState } from "react"; -import { getAvailableRegions } from "../data/RegionConfig"; +import { getAvailableRegions, REGIONS } from "../data/RegionConfig"; +import { useNavigate } from "react-router"; export default function Settings() { const { t, i18n } = useTranslation(); + const navigate = useNavigate(); const { theme, setTheme, @@ -18,6 +20,29 @@ export default function Settings() { } = useApp(); const regions = getAvailableRegions(); + const [showModal, setShowModal] = useState(false); + const [pendingRegion, setPendingRegion] = useState(null); + + const handleRegionChange = (newRegion: string) => { + if (newRegion !== region) { + setPendingRegion(newRegion); + setShowModal(true); + } + }; + + const confirmRegionChange = () => { + if (pendingRegion) { + setRegion(pendingRegion as any); + setShowModal(false); + setPendingRegion(null); + navigate("/stops"); + } + }; + + const cancelRegionChange = () => { + setShowModal(false); + setPendingRegion(null); + }; return (
@@ -33,7 +58,7 @@ export default function Settings() { id="region" className="form-select-inline" value={region} - onChange={(e) => setRegion(e.target.value as any)} + onChange={(e) => handleRegionChange(e.target.value)} > {regions.map((r) => (
); } -- cgit v1.3