fix: boards rerender optimization

This commit is contained in:
2025-08-21 16:45:04 +04:00
parent f3df8840df
commit cb67c913ad
9 changed files with 51 additions and 83 deletions

View File

@ -1,21 +1,13 @@
"use client";
import React, {
createContext,
FC,
useContext,
useEffect,
useState,
} from "react";
import React, { createContext, FC, useContext, useState } from "react";
import useProjectsList from "@/hooks/useProjectsList";
import { useProjectsOperations } from "@/hooks/useProjectsOperations";
import { ProjectSchema, UpdateProjectSchema } from "@/lib/client";
type ProjectsContextState = {
selectedProject: ProjectSchema | null;
setSelectedProject: React.Dispatch<
React.SetStateAction<ProjectSchema | null>
>;
setSelectedProjectId: React.Dispatch<React.SetStateAction<number | null>>;
projects: ProjectSchema[];
onCreateProject: (name: string) => void;
onUpdateProject: (projectId: number, project: UpdateProjectSchema) => void;
@ -36,24 +28,16 @@ const useProjectsContextState = () => {
setProjects,
refetch: refetchProjects,
} = useProjectsList();
const [selectedProject, setSelectedProject] =
useState<ProjectSchema | null>(null);
useEffect(() => {
if (projects.length > 0) {
if (selectedProject) {
setSelectedProject(
projects.find(
project => project.id === selectedProject.id
) ?? null
);
return;
}
setSelectedProject(projects[0]);
return;
}
setSelectedProject(null);
}, [projects]);
const [selectedProjectId, setSelectedProjectId] = useState<number | null>(
null
);
const selectedProject =
projects.find(project => project.id === selectedProjectId) ?? null;
if (selectedProject === null && projects.length > 0) {
setSelectedProjectId(projects[0].id);
}
const { onCreateProject, onUpdateProject, onDeleteProject } =
useProjectsOperations({
@ -65,7 +49,7 @@ const useProjectsContextState = () => {
return {
projects,
selectedProject,
setSelectedProject,
setSelectedProjectId,
onCreateProject,
onUpdateProject,
onDeleteProject,