feat: client tab in deal editor

This commit is contained in:
2025-10-05 12:05:23 +04:00
parent d14920df7d
commit 0fcf086861
21 changed files with 511 additions and 35 deletions

View File

@ -1,6 +1,6 @@
"use client";
import React, { useState } from "react";
import React, { useMemo, useState } from "react";
import { ProjectsCrud, useProjectsCrud } from "@/hooks/cruds/useProjectsCrud";
import useProjectsList from "@/hooks/lists/useProjectsList";
import { ProjectSchema } from "@/lib/client";
@ -12,6 +12,7 @@ type ProjectsContextState = {
refetchProjects: () => void;
projects: ProjectSchema[];
projectsCrud: ProjectsCrud;
modulesSet: Set<string>;
};
const useProjectsContextState = (): ProjectsContextState => {
@ -20,8 +21,16 @@ const useProjectsContextState = (): ProjectsContextState => {
const [selectedProjectId, setSelectedProjectId] = useState<number | null>(
null
);
const selectedProject =
projects.find(project => project.id === selectedProjectId) ?? null;
const selectedProject = useMemo(
() =>
projects.find(project => project.id === selectedProjectId) ?? null,
[projects, selectedProjectId]
);
const modulesSet = useMemo(
() => new Set(selectedProject?.builtInModules.map(m => m.key)),
[selectedProject]
);
if (selectedProject === null && projects.length > 0) {
setSelectedProjectId(projects[0].id);
@ -35,6 +44,7 @@ const useProjectsContextState = (): ProjectsContextState => {
refetchProjects,
setSelectedProjectId,
projectsCrud,
modulesSet,
};
};