fix: fixed redirecting on project select
This commit is contained in:
@ -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,
|
||||||
};
|
};
|
||||||
|
|||||||
@ -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) => (
|
||||||
|
|||||||
Reference in New Issue
Block a user