fix: fixed redirecting on project select

This commit is contained in:
2025-10-07 11:14:06 +04:00
parent 428a6aca82
commit 820d9b4d33
2 changed files with 15 additions and 14 deletions

View File

@ -1,14 +1,16 @@
"use client"; "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 { ProjectsCrud, useProjectsCrud } from "@/hooks/cruds/useProjectsCrud";
import useProjectsList from "@/hooks/lists/useProjectsList"; import useProjectsList from "@/hooks/lists/useProjectsList";
import useIsMobile from "@/hooks/utils/useIsMobile";
import { ProjectSchema } from "@/lib/client"; import { ProjectSchema } from "@/lib/client";
import makeContext from "@/lib/contextFactory/contextFactory"; import makeContext from "@/lib/contextFactory/contextFactory";
type ProjectsContextState = { type ProjectsContextState = {
selectedProject: ProjectSchema | null; selectedProject: ProjectSchema | null;
setSelectedProjectId: React.Dispatch<React.SetStateAction<number | null>>; setSelectedProjectId: (id: number | null) => void;
refetchProjects: () => void; refetchProjects: () => void;
projects: ProjectSchema[]; projects: ProjectSchema[];
projectsCrud: ProjectsCrud; projectsCrud: ProjectsCrud;
@ -17,6 +19,9 @@ type ProjectsContextState = {
const useProjectsContextState = (): ProjectsContextState => { const useProjectsContextState = (): ProjectsContextState => {
const { projects, refetch: refetchProjects, queryKey } = useProjectsList(); const { projects, refetch: refetchProjects, queryKey } = useProjectsList();
const isMobile = useIsMobile();
const pathname = usePathname();
const router = useRouter();
const [selectedProjectId, setSelectedProjectId] = useState<number | null>( const [selectedProjectId, setSelectedProjectId] = useState<number | null>(
null null
@ -38,11 +43,16 @@ const useProjectsContextState = (): ProjectsContextState => {
const projectsCrud = useProjectsCrud({ queryKey }); const projectsCrud = useProjectsCrud({ queryKey });
const handleSetSelectedProjectId = (id: number | null) => {
if (!isMobile && pathname !== "/deals") router.push("/deals");
setSelectedProjectId(id);
};
return { return {
projects, projects,
selectedProject, selectedProject,
refetchProjects, refetchProjects,
setSelectedProjectId, setSelectedProjectId: handleSetSelectedProjectId,
projectsCrud, projectsCrud,
modulesSet, modulesSet,
}; };

View File

@ -1,19 +1,14 @@
"use client"; "use client";
import { useEffect, useMemo } from "react"; import { useMemo } from "react";
import { usePathname, useRouter } from "next/navigation";
import { Group, Stack, Text } from "@mantine/core"; import { Group, Stack, Text } from "@mantine/core";
import { useProjectsContext } from "@/app/deals/contexts/ProjectsContext"; import { useProjectsContext } from "@/app/deals/contexts/ProjectsContext";
import ThemeIcon from "@/components/ui/ThemeIcon/ThemeIcon"; import ThemeIcon from "@/components/ui/ThemeIcon/ThemeIcon";
import useIsMobile from "@/hooks/utils/useIsMobile";
import linksData from "../data/linksData"; import linksData from "../data/linksData";
import NavbarClickable from "./NavbarClickable"; import NavbarClickable from "./NavbarClickable";
const NavbarLinks = () => { const NavbarLinks = () => {
const isMobile = useIsMobile(); const { modulesSet } = useProjectsContext();
const pathname = usePathname();
const router = useRouter();
const { modulesSet, selectedProject } = useProjectsContext();
const filteredLinks = useMemo( const filteredLinks = useMemo(
() => () =>
linksData.filter( linksData.filter(
@ -22,10 +17,6 @@ const NavbarLinks = () => {
[modulesSet] [modulesSet]
); );
useEffect(() => {
if (!isMobile && pathname !== "/deals") router.push("/deals");
}, [selectedProject]);
return ( return (
<Stack gap={"xs"}> <Stack gap={"xs"}>
{filteredLinks.map((linkData, index) => ( {filteredLinks.map((linkData, index) => (