Feat: Geolocation
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user