diff --git a/frontend/src/pages/LocationMapManager.jsx b/frontend/src/pages/LocationMapManager.jsx index ccf6137..b8b3211 100644 --- a/frontend/src/pages/LocationMapManager.jsx +++ b/frontend/src/pages/LocationMapManager.jsx @@ -66,6 +66,7 @@ export default function LocationMapManager() { const [future, setFuture] = useState([]); const [dragState, setDragState] = useState(null); const [pendingDeleteObject, setPendingDeleteObject] = useState(null); + const [pendingLeave, setPendingLeave] = useState(false); const svgRef = useRef(null); const toastRef = useRef(toast); @@ -402,7 +403,7 @@ export default function LocationMapManager() { setZoom(Number(nextZoom.toFixed(2))); }; - const handleBack = useCallback(() => { + const performBackNavigation = useCallback(() => { if (typeof returnPath === "string" && returnPath.startsWith("/")) { navigate(returnPath, { replace: true }); return; @@ -410,6 +411,14 @@ export default function LocationMapManager() { navigate("/"); }, [navigate, returnPath]); + const handleBack = useCallback(() => { + if (hasUnsavedChanges && canManage) { + setPendingLeave(true); + return; + } + performBackNavigation(); + }, [canManage, hasUnsavedChanges, performBackNavigation]); + if (!hasLoaded || householdLoading || loading) { return (