From 9c3f000a291b726378e4336c1a4e685db95ec849 Mon Sep 17 00:00:00 2001 From: Meik Date: Mon, 10 Nov 2025 17:24:53 +0100 Subject: [PATCH] Feat: Geolocation --- src/components/StoreWatchPage.js | 85 ++++++++++++++++---------------- 1 file changed, 42 insertions(+), 43 deletions(-) diff --git a/src/components/StoreWatchPage.js b/src/components/StoreWatchPage.js index 1ea417f..181d1b8 100644 --- a/src/components/StoreWatchPage.js +++ b/src/components/StoreWatchPage.js @@ -110,6 +110,48 @@ const StoreWatchPage = ({ authorizedFetch, knownStores = [], userLocation }) => return map; }, [knownStores]); + const handleToggleStore = useCallback( + (store, checked) => { + setWatchList((prev) => { + const storeId = String(store.id || store.storeId); + const existing = prev.find((entry) => entry.storeId === storeId); + if (checked) { + if (existing) { + return prev; + } + setDirty(true); + const regionName = store.region?.name || selectedRegion?.name || existing?.regionName || ''; + return [ + ...prev, + { + storeId, + storeName: store.name || store.storeName || `Store ${storeId}`, + regionId: String(store.region?.id || selectedRegionId || existing?.regionId || ''), + regionName, + lastTeamSearchStatus: existing?.lastTeamSearchStatus ?? null + } + ]; + } + if (!existing) { + return prev; + } + setDirty(true); + return prev.filter((entry) => entry.storeId !== storeId); + }); + }, + [selectedRegion, selectedRegionId] + ); + + const handleRemoveWatch = useCallback((storeId) => { + setWatchList((prev) => { + const next = prev.filter((entry) => entry.storeId !== storeId); + if (next.length !== prev.length) { + setDirty(true); + } + return next; + }); + }, []); + const tableData = useMemo( () => eligibleStores.map((store) => { @@ -469,49 +511,6 @@ const StoreWatchPage = ({ authorizedFetch, knownStores = [], userLocation }) => } }, [selectedRegionId, fetchStoresForRegion, fetchAllRegions]); - const handleToggleStore = useCallback( - (store, checked) => { - setWatchList((prev) => { - const storeId = String(store.id || store.storeId); - const existing = prev.find((entry) => entry.storeId === storeId); - if (checked) { - if (existing) { - return prev; - } - setDirty(true); - const regionName = - store.region?.name || selectedRegion?.name || existing?.regionName || ''; - return [ - ...prev, - { - storeId, - storeName: store.name || store.storeName || `Store ${storeId}`, - regionId: String(store.region?.id || selectedRegionId || existing?.regionId || ''), - regionName, - lastTeamSearchStatus: existing?.lastTeamSearchStatus ?? null - } - ]; - } - if (!existing) { - return prev; - } - setDirty(true); - return prev.filter((entry) => entry.storeId !== storeId); - }); - }, - [selectedRegion, selectedRegionId] - ); - - const handleRemoveWatch = useCallback((storeId) => { - setWatchList((prev) => { - const next = prev.filter((entry) => entry.storeId !== storeId); - if (next.length !== prev.length) { - setDirty(true); - } - return next; - }); - }, []); - const handleSave = useCallback(async () => { if (!authorizedFetch || saving || !dirty) { return;