diff --git a/src/pages/MainFeed.jsx b/src/pages/MainFeed.jsx index 347624d..ec034cb 100644 --- a/src/pages/MainFeed.jsx +++ b/src/pages/MainFeed.jsx @@ -15,6 +15,7 @@ import FeedTopBar from "../components/feed/FeedTopBar"; import FeedSearchBar from "../components/feed/FeedSearchBar"; import FeedContent from "../components/feed/FeedContent"; +import MapView from "../components/MapView"; import { useAuthContext } from "../context/AuthContext"; import { useCities } from "../hooks/useCities"; import { useFeedPosts } from "../hooks/useFeedPosts"; @@ -50,6 +51,7 @@ export default function MainFeed() { const feedRef = useRef(null); const isSearchView = new URLSearchParams(location.search).get("view") === "search"; + const isMapView = new URLSearchParams(location.search).get("view") === "map"; const hasActiveFilters = searchQuery.trim().length > 0 || selectedCities.length > 0; const hasSearchParams = searchQuery.trim().length > 0 || selectedCities.length > 0; const searchPrompt = isSearchView && !hasSearchParams; @@ -163,20 +165,25 @@ export default function MainFeed() { const handleHomeClick = useCallback(() => { setActiveNav("home"); - if (isSearchView) navigate("/feed"); + if (isSearchView || isMapView) navigate("/feed"); feedRef.current?.scrollTo({ top: 0, behavior: "smooth" }); - }, [isSearchView, navigate]); + }, [isSearchView, isMapView, navigate]); const handleSearchClick = useCallback(() => { setActiveNav("home"); setSearchQuery(""); setSelectedCities([]); if (!isSearchView) navigate("/feed?view=search"); + else if (isMapView) navigate("/feed?view=search"); feedRef.current?.scrollTo({ top: 0, behavior: "smooth" }); - }, [isSearchView, navigate]); + }, [isSearchView, isMapView, navigate]); - // Карта с объявлениями — иконка добавлена, функционал ещё не реализован - const handleMapClick = useCallback(() => {}, []); + // Карта с объявлениями + const handleMapClick = useCallback(() => { + setActiveNav("map"); + if (!isMapView) navigate("/feed?view=map"); + feedRef.current?.scrollTo({ top: 0, behavior: "smooth" }); + }, [isMapView, navigate]); const handleProfileClick = useCallback(() => { if (!isAuthenticated) modals.open("auth"); @@ -209,7 +216,7 @@ export default function MainFeed() { const listError = activeNav === "myads" ? myPosts.error : feed.error; return ( -
+
-
+ {isMapView ? ( + + ) : ( + <> +
modals.open("auth")} onNavClick={setActiveNav} /> + + )}
@@ -311,7 +324,7 @@ export default function MainFeed() { )}