From 820d9b4d3374d959ef49b28c005784f334f4c965 Mon Sep 17 00:00:00 2001 From: AlexSserb Date: Tue, 7 Oct 2025 11:14:06 +0400 Subject: [PATCH] fix: fixed redirecting on project select --- src/app/deals/contexts/ProjectsContext.tsx | 16 +++++++++++++--- .../layout/Navbar/components/NavbarLinks.tsx | 13 ++----------- 2 files changed, 15 insertions(+), 14 deletions(-) diff --git a/src/app/deals/contexts/ProjectsContext.tsx b/src/app/deals/contexts/ProjectsContext.tsx index eb79b10..c3ad53a 100644 --- a/src/app/deals/contexts/ProjectsContext.tsx +++ b/src/app/deals/contexts/ProjectsContext.tsx @@ -1,14 +1,16 @@ "use client"; -import React, { useMemo, useState } from "react"; +import { useMemo, useState } from "react"; +import { usePathname, useRouter } from "next/navigation"; import { ProjectsCrud, useProjectsCrud } from "@/hooks/cruds/useProjectsCrud"; import useProjectsList from "@/hooks/lists/useProjectsList"; +import useIsMobile from "@/hooks/utils/useIsMobile"; import { ProjectSchema } from "@/lib/client"; import makeContext from "@/lib/contextFactory/contextFactory"; type ProjectsContextState = { selectedProject: ProjectSchema | null; - setSelectedProjectId: React.Dispatch>; + setSelectedProjectId: (id: number | null) => void; refetchProjects: () => void; projects: ProjectSchema[]; projectsCrud: ProjectsCrud; @@ -17,6 +19,9 @@ type ProjectsContextState = { const useProjectsContextState = (): ProjectsContextState => { const { projects, refetch: refetchProjects, queryKey } = useProjectsList(); + const isMobile = useIsMobile(); + const pathname = usePathname(); + const router = useRouter(); const [selectedProjectId, setSelectedProjectId] = useState( null @@ -38,11 +43,16 @@ const useProjectsContextState = (): ProjectsContextState => { const projectsCrud = useProjectsCrud({ queryKey }); + const handleSetSelectedProjectId = (id: number | null) => { + if (!isMobile && pathname !== "/deals") router.push("/deals"); + setSelectedProjectId(id); + }; + return { projects, selectedProject, refetchProjects, - setSelectedProjectId, + setSelectedProjectId: handleSetSelectedProjectId, projectsCrud, modulesSet, }; diff --git a/src/components/layout/Navbar/components/NavbarLinks.tsx b/src/components/layout/Navbar/components/NavbarLinks.tsx index e9810ce..b70f32f 100644 --- a/src/components/layout/Navbar/components/NavbarLinks.tsx +++ b/src/components/layout/Navbar/components/NavbarLinks.tsx @@ -1,19 +1,14 @@ "use client"; -import { useEffect, useMemo } from "react"; -import { usePathname, useRouter } from "next/navigation"; +import { useMemo } from "react"; import { Group, Stack, Text } from "@mantine/core"; import { useProjectsContext } from "@/app/deals/contexts/ProjectsContext"; import ThemeIcon from "@/components/ui/ThemeIcon/ThemeIcon"; -import useIsMobile from "@/hooks/utils/useIsMobile"; import linksData from "../data/linksData"; import NavbarClickable from "./NavbarClickable"; const NavbarLinks = () => { - const isMobile = useIsMobile(); - const pathname = usePathname(); - const router = useRouter(); - const { modulesSet, selectedProject } = useProjectsContext(); + const { modulesSet } = useProjectsContext(); const filteredLinks = useMemo( () => linksData.filter( @@ -22,10 +17,6 @@ const NavbarLinks = () => { [modulesSet] ); - useEffect(() => { - if (!isMobile && pathname !== "/deals") router.push("/deals"); - }, [selectedProject]); - return ( {filteredLinks.map((linkData, index) => (