From a6731167b0d3de072314ae96745a0bbef207067b Mon Sep 17 00:00:00 2001 From: Nicole Abramowski Date: Tue, 14 Jan 2025 18:59:40 -0800 Subject: [PATCH 1/7] Fix pagination not being reset --- app/web/features/search/MapWrapper.tsx | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/app/web/features/search/MapWrapper.tsx b/app/web/features/search/MapWrapper.tsx index dd96580f97..da0acfa0af 100644 --- a/app/web/features/search/MapWrapper.tsx +++ b/app/web/features/search/MapWrapper.tsx @@ -240,11 +240,7 @@ export default function MapWrapper({ * Re-renders users list on map (when results array changed) */ useEffect(() => { - if ( - isMapStyleLoaded && - isMapSourceLoaded && - (wasSearchPerformed || areFiltersCleared) - ) { + if (isMapStyleLoaded && isMapSourceLoaded && wasSearchPerformed) { if (results) { const usersToRender = filterData(results); reRenderUsersOnMap(map.current!, usersToRender, handleMapUserClick); @@ -257,7 +253,6 @@ export default function MapWrapper({ isMapStyleLoaded, isMapSourceLoaded, wasSearchPerformed, - areFiltersCleared, ]); /** @@ -289,6 +284,11 @@ export default function MapWrapper({ */ const handleClearFiltersClick = () => { onClearFiltersClick(); + + if (results) { + const usersToRender = filterData(results); + reRenderUsersOnMap(map.current!, usersToRender, handleMapUserClick); + } }; const initializeMap = (newMap: MaplibreMap) => { From 9cffb4f5ad4a721c5cfcb91158fd8f0011381f5d Mon Sep 17 00:00:00 2001 From: Nicole Abramowski Date: Tue, 14 Jan 2025 19:02:16 -0800 Subject: [PATCH 2/7] Test fix --- .../features/communities/events/EventTimeChanger.test.tsx | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/app/web/features/communities/events/EventTimeChanger.test.tsx b/app/web/features/communities/events/EventTimeChanger.test.tsx index 4986eff41c..48146fbeba 100644 --- a/app/web/features/communities/events/EventTimeChanger.test.tsx +++ b/app/web/features/communities/events/EventTimeChanger.test.tsx @@ -146,8 +146,10 @@ it("should show proper error if startDate is today but startTime is in the past" const startTimeErrorText = await screen.findByTestId("startTime-helper-text"); - expect(startTimeErrorText).toHaveTextContent( - t("communities:past_time_error") + await waitFor(() => + expect(startTimeErrorText).toHaveTextContent( + t("communities:past_time_error") + ) ); user.click(screen.getByTestId("submit")); From 16812d03063202f620021294bacd71835a1e374c Mon Sep 17 00:00:00 2001 From: Nicole Abramowski Date: Tue, 14 Jan 2025 19:27:53 -0800 Subject: [PATCH 3/7] Try again --- app/web/features/search/SearchPage.tsx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/app/web/features/search/SearchPage.tsx b/app/web/features/search/SearchPage.tsx index 855cb04f76..8adb2d7a22 100644 --- a/app/web/features/search/SearchPage.tsx +++ b/app/web/features/search/SearchPage.tsx @@ -163,7 +163,7 @@ export default function SearchPage({ completeProfileFilter !== false || queryName !== "" || locationResult.name !== "" || - wasSearchPerformed !== false; + (locationResult.location.lng !== 0 && locationResult.location.lat !== 0); if (!wasSearchPerformed && filtersApplied) { setWasSearchPerformed(true); @@ -177,6 +177,8 @@ export default function SearchPage({ completeProfileFilter, wasSearchPerformed, queryName, + locationResult.location.lng, + locationResult.location.lat, locationResult.name, ]); From 68c6ba880807cc822b9d0739f97408cfb87b8112 Mon Sep 17 00:00:00 2001 From: Nicole Abramowski Date: Tue, 14 Jan 2025 19:37:13 -0800 Subject: [PATCH 4/7] WIP --- app/web/features/search/MapWrapper.tsx | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/app/web/features/search/MapWrapper.tsx b/app/web/features/search/MapWrapper.tsx index da0acfa0af..ea82434d6a 100644 --- a/app/web/features/search/MapWrapper.tsx +++ b/app/web/features/search/MapWrapper.tsx @@ -240,7 +240,11 @@ export default function MapWrapper({ * Re-renders users list on map (when results array changed) */ useEffect(() => { - if (isMapStyleLoaded && isMapSourceLoaded && wasSearchPerformed) { + if ( + isMapStyleLoaded && + isMapSourceLoaded && + wasSearchPerformed + ) { if (results) { const usersToRender = filterData(results); reRenderUsersOnMap(map.current!, usersToRender, handleMapUserClick); @@ -252,6 +256,7 @@ export default function MapWrapper({ map, isMapStyleLoaded, isMapSourceLoaded, + areFiltersCleared, wasSearchPerformed, ]); @@ -284,11 +289,6 @@ export default function MapWrapper({ */ const handleClearFiltersClick = () => { onClearFiltersClick(); - - if (results) { - const usersToRender = filterData(results); - reRenderUsersOnMap(map.current!, usersToRender, handleMapUserClick); - } }; const initializeMap = (newMap: MaplibreMap) => { From dd4cc2dc23e9da3b6d27e94cbd9a0eafe4ef485a Mon Sep 17 00:00:00 2001 From: Nicole Abramowski Date: Tue, 14 Jan 2025 19:55:21 -0800 Subject: [PATCH 5/7] WIP --- app/web/features/search/MapWrapper.tsx | 16 ++++++++++------ app/web/features/search/SearchPage.tsx | 4 ++-- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/app/web/features/search/MapWrapper.tsx b/app/web/features/search/MapWrapper.tsx index ea82434d6a..8d7c86c720 100644 --- a/app/web/features/search/MapWrapper.tsx +++ b/app/web/features/search/MapWrapper.tsx @@ -13,6 +13,7 @@ import { import { Point } from "geojson"; import { useTranslation } from "i18n"; import { SEARCH } from "i18n/namespaces"; +import { use } from "i18next"; import { LngLat, Map as MaplibreMap, @@ -31,6 +32,7 @@ import { } from "react"; import { InfiniteData } from "react-query"; import { theme } from "theme"; +import { isMap } from "util/types"; import { GeocodeResult, usePrevious } from "utils/hooks"; import makeStyles from "utils/makeStyles"; @@ -240,11 +242,7 @@ export default function MapWrapper({ * Re-renders users list on map (when results array changed) */ useEffect(() => { - if ( - isMapStyleLoaded && - isMapSourceLoaded && - wasSearchPerformed - ) { + if (isMapStyleLoaded && isMapSourceLoaded && wasSearchPerformed) { if (results) { const usersToRender = filterData(results); reRenderUsersOnMap(map.current!, usersToRender, handleMapUserClick); @@ -256,10 +254,16 @@ export default function MapWrapper({ map, isMapStyleLoaded, isMapSourceLoaded, - areFiltersCleared, wasSearchPerformed, ]); + useEffect(() => { + if (isMapStyleLoaded && isMapSourceLoaded && results) { + const usersToRender = filterData(results); + reRenderUsersOnMap(map.current!, usersToRender, handleMapUserClick); + } + }, [isMapStyleLoaded, isMapSourceLoaded, areFiltersCleared]); + /** * Clicks on 'search here' button */ diff --git a/app/web/features/search/SearchPage.tsx b/app/web/features/search/SearchPage.tsx index 8adb2d7a22..09b424b85c 100644 --- a/app/web/features/search/SearchPage.tsx +++ b/app/web/features/search/SearchPage.tsx @@ -165,10 +165,10 @@ export default function SearchPage({ locationResult.name !== "" || (locationResult.location.lng !== 0 && locationResult.location.lat !== 0); - if (!wasSearchPerformed && filtersApplied) { + if (!wasSearchPerformed) { setWasSearchPerformed(true); } - + setAreFiltersCleared(!filtersApplied); }, [ lastActiveFilter, From f394bf1d53b4a485d51dc630850c8c76884a1ed8 Mon Sep 17 00:00:00 2001 From: Nicole Abramowski Date: Tue, 14 Jan 2025 20:05:13 -0800 Subject: [PATCH 6/7] Clean up --- app/web/features/search/MapWrapper.tsx | 16 ++++++---------- app/web/features/search/SearchPage.tsx | 2 +- 2 files changed, 7 insertions(+), 11 deletions(-) diff --git a/app/web/features/search/MapWrapper.tsx b/app/web/features/search/MapWrapper.tsx index 8d7c86c720..e73bd40463 100644 --- a/app/web/features/search/MapWrapper.tsx +++ b/app/web/features/search/MapWrapper.tsx @@ -13,7 +13,6 @@ import { import { Point } from "geojson"; import { useTranslation } from "i18n"; import { SEARCH } from "i18n/namespaces"; -import { use } from "i18next"; import { LngLat, Map as MaplibreMap, @@ -32,7 +31,6 @@ import { } from "react"; import { InfiniteData } from "react-query"; import { theme } from "theme"; -import { isMap } from "util/types"; import { GeocodeResult, usePrevious } from "utils/hooks"; import makeStyles from "utils/makeStyles"; @@ -242,7 +240,11 @@ export default function MapWrapper({ * Re-renders users list on map (when results array changed) */ useEffect(() => { - if (isMapStyleLoaded && isMapSourceLoaded && wasSearchPerformed) { + if ( + isMapStyleLoaded && + isMapSourceLoaded && + (wasSearchPerformed || areFiltersCleared) + ) { if (results) { const usersToRender = filterData(results); reRenderUsersOnMap(map.current!, usersToRender, handleMapUserClick); @@ -254,16 +256,10 @@ export default function MapWrapper({ map, isMapStyleLoaded, isMapSourceLoaded, + areFiltersCleared, wasSearchPerformed, ]); - useEffect(() => { - if (isMapStyleLoaded && isMapSourceLoaded && results) { - const usersToRender = filterData(results); - reRenderUsersOnMap(map.current!, usersToRender, handleMapUserClick); - } - }, [isMapStyleLoaded, isMapSourceLoaded, areFiltersCleared]); - /** * Clicks on 'search here' button */ diff --git a/app/web/features/search/SearchPage.tsx b/app/web/features/search/SearchPage.tsx index 09b424b85c..a0b9872863 100644 --- a/app/web/features/search/SearchPage.tsx +++ b/app/web/features/search/SearchPage.tsx @@ -168,7 +168,7 @@ export default function SearchPage({ if (!wasSearchPerformed) { setWasSearchPerformed(true); } - + setAreFiltersCleared(!filtersApplied); }, [ lastActiveFilter, From b8fe902f0b4f1bdcadbdd522e7b8d0b0f3b61502 Mon Sep 17 00:00:00 2001 From: Gracee Gallivan Date: Thu, 16 Jan 2025 17:48:18 -0800 Subject: [PATCH 7/7] Updated state names to be more clear and fixed minor bug --- app/web/features/search/MapWrapper.tsx | 16 +++++----------- app/web/features/search/SearchPage.tsx | 26 ++++++++++++-------------- 2 files changed, 17 insertions(+), 25 deletions(-) diff --git a/app/web/features/search/MapWrapper.tsx b/app/web/features/search/MapWrapper.tsx index e73bd40463..a3a93fd2d1 100644 --- a/app/web/features/search/MapWrapper.tsx +++ b/app/web/features/search/MapWrapper.tsx @@ -94,9 +94,8 @@ interface mapWrapperProps { SetStateAction | undefined> >; map: MutableRefObject; - setWasSearchPerformed: Dispatch>; - wasSearchPerformed: boolean; areFiltersCleared: boolean; + setMapPositionFilterActive: Dispatch>; onClearFiltersClick: () => void; } @@ -109,9 +108,8 @@ export default function MapWrapper({ results, setSelectedResult, setIsFiltersOpen, - wasSearchPerformed, - setWasSearchPerformed, areFiltersCleared, + setMapPositionFilterActive, onClearFiltersClick, }: mapWrapperProps) { const { t } = useTranslation([SEARCH]); @@ -240,11 +238,7 @@ export default function MapWrapper({ * Re-renders users list on map (when results array changed) */ useEffect(() => { - if ( - isMapStyleLoaded && - isMapSourceLoaded && - (wasSearchPerformed || areFiltersCleared) - ) { + if (isMapStyleLoaded && isMapSourceLoaded && areFiltersCleared) { if (results) { const usersToRender = filterData(results); reRenderUsersOnMap(map.current!, usersToRender, handleMapUserClick); @@ -257,7 +251,7 @@ export default function MapWrapper({ isMapStyleLoaded, isMapSourceLoaded, areFiltersCleared, - wasSearchPerformed, + // wasSearchPerformed, (FIXME: revisit whether I'll need mapPositionFilterActive here or not) ]); /** @@ -280,7 +274,7 @@ export default function MapWrapper({ ], }); } - setWasSearchPerformed(true); + setMapPositionFilterActive(true); } }; diff --git a/app/web/features/search/SearchPage.tsx b/app/web/features/search/SearchPage.tsx index a0b9872863..795f45714c 100644 --- a/app/web/features/search/SearchPage.tsx +++ b/app/web/features/search/SearchPage.tsx @@ -81,9 +81,8 @@ export default function SearchPage({ const isMobile = useMediaQuery(theme.breakpoints.down("md")); // State - const [wasSearchPerformed, setWasSearchPerformed] = useState( - locationName !== "" - ); + + const [mapPositionFilterActive, setMapPositionFilterActive] = useState(false); const [locationResult, setLocationResult] = useState({ bbox: bbox, isRegion: false, @@ -107,6 +106,7 @@ export default function SearchPage({ >(); const [isFiltersOpen, setIsFiltersOpen] = useState(false); + // Filters = mapPosition, locationResult, queryName, lastActive, hostingStatus, numberOfGuest & completeProfile const [areFiltersCleared, setAreFiltersCleared] = useState( locationName === "" ); @@ -163,11 +163,12 @@ export default function SearchPage({ completeProfileFilter !== false || queryName !== "" || locationResult.name !== "" || - (locationResult.location.lng !== 0 && locationResult.location.lat !== 0); + mapPositionFilterActive === true; + // (locationResult.location.lng !== 0 && locationResult.location.lat !== 0); - if (!wasSearchPerformed) { - setWasSearchPerformed(true); - } + // if (!wasSearchPerformed) { + // setWasSearchPerformed(true); + // } setAreFiltersCleared(!filtersApplied); }, [ @@ -175,11 +176,9 @@ export default function SearchPage({ hostingStatusFilter, numberOfGuestFilter, completeProfileFilter, - wasSearchPerformed, queryName, - locationResult.location.lng, - locationResult.location.lat, locationResult.name, + mapPositionFilterActive, ]); /** @@ -198,8 +197,8 @@ export default function SearchPage({ setHostingStatusFilter([]); setNumberOfGuestFilter(undefined); setCompleteProfileFilter(false); + setMapPositionFilterActive(false); setAreFiltersCleared(true); - setWasSearchPerformed(false); }; const errorMessage = error?.message; @@ -228,7 +227,7 @@ export default function SearchPage({ {/* Mobile */} {isMobile && ( @@ -273,9 +272,8 @@ export default function SearchPage({ setLocationResult={setLocationResult} setSelectedResult={setSelectedResult} isLoading={isLoading || isFetching} - setWasSearchPerformed={setWasSearchPerformed} - wasSearchPerformed={wasSearchPerformed} areFiltersCleared={areFiltersCleared} + setMapPositionFilterActive={setMapPositionFilterActive} onClearFiltersClick={handleClearFilters} />