Improve Board performances (#2626)

Improve app performances
This commit is contained in:
Charles Bochet
2023-11-22 09:58:49 +01:00
committed by GitHub
parent ee8f6899fc
commit 10febd9aeb
11 changed files with 88 additions and 122 deletions

View File

@ -1,15 +1,12 @@
import { useRecoilValue } from 'recoil';
import { useRecoilCallback } from 'recoil';
import { useCreateOneObjectRecord } from '@/object-record/hooks/useCreateOneObjectRecord';
import { useDeleteOneObjectRecord } from '@/object-record/hooks/useDeleteOneObjectRecord';
import { currentPipelineState } from '@/pipeline/states/currentPipelineState';
import { PipelineStep } from '@/pipeline/types/PipelineStep';
import { BoardColumnDefinition } from '@/ui/layout/board/types/BoardColumnDefinition';
import { currentPipelineState } from '../states/currentPipelineState';
export const usePipelineSteps = () => {
const currentPipeline = useRecoilValue(currentPipelineState);
const { createOneObject: createOnePipelineStep } =
useCreateOneObjectRecord<PipelineStep>({
objectNameSingular: 'pipelineStep',
@ -20,28 +17,38 @@ export const usePipelineSteps = () => {
objectNameSingular: 'pipelineStep',
});
const handlePipelineStepAdd = async (boardColumn: BoardColumnDefinition) => {
if (!currentPipeline?.id) return;
const handlePipelineStepAdd = useRecoilCallback(
({ snapshot }) =>
async (boardColumn: BoardColumnDefinition) => {
const currentPipeline = await snapshot.getPromise(currentPipelineState);
if (!currentPipeline?.id) return;
return createOnePipelineStep?.({
variables: {
data: {
color: boardColumn.colorCode ?? 'gray',
id: boardColumn.id,
position: boardColumn.position,
name: boardColumn.title,
pipeline: { connect: { id: currentPipeline.id } },
type: 'ongoing',
},
return createOnePipelineStep?.({
variables: {
data: {
color: boardColumn.colorCode ?? 'gray',
id: boardColumn.id,
position: boardColumn.position,
name: boardColumn.title,
pipeline: { connect: { id: currentPipeline.id } },
type: 'ongoing',
},
},
});
},
});
};
[createOnePipelineStep],
);
const handlePipelineStepDelete = async (boardColumnId: string) => {
if (!currentPipeline?.id) return;
const handlePipelineStepDelete = useRecoilCallback(
({ snapshot }) =>
async (boardColumnId: string) => {
const currentPipeline = await snapshot.getPromise(currentPipelineState);
if (!currentPipeline?.id) return;
return deleteOnePipelineStep?.(boardColumnId);
};
return deleteOnePipelineStep?.(boardColumnId);
},
[deleteOnePipelineStep],
);
return { handlePipelineStepAdd, handlePipelineStepDelete };
};