* ESLint rule: enforce usage of .getLoadable() + .getValue() to get atoms Co-authored-by: Matheus <matheus_benini@hotmail.com> * Merge main Co-authored-by: v1b3m <vibenjamin6@gmail.com> Co-authored-by: Matheus <matheus_benini@hotmail.com> * Fix * Refactor according to review Co-authored-by: v1b3m <vibenjamin6@gmail.com> Co-authored-by: Matheus <matheus_benini@hotmail.com> * Fix linter issue Co-authored-by: v1b3m <vibenjamin6@gmail.com> Co-authored-by: Matheus <matheus_benini@hotmail.com> * Fix linter Co-authored-by: v1b3m <vibenjamin6@gmail.com> Co-authored-by: Matheus <matheus_benini@hotmail.com> --------- Co-authored-by: gitstart-twenty <gitstart-twenty@users.noreply.github.com> Co-authored-by: Matheus <matheus_benini@hotmail.com> Co-authored-by: v1b3m <vibenjamin6@gmail.com> Co-authored-by: Lucas Bordeau <bordeau.lucas@gmail.com>
53 lines
1.8 KiB
TypeScript
53 lines
1.8 KiB
TypeScript
import { useRecoilCallback } from 'recoil';
|
|
|
|
import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular';
|
|
import { useCreateOneRecord } from '@/object-record/hooks/useCreateOneRecord';
|
|
import { useDeleteOneRecord } from '@/object-record/hooks/useDeleteOneRecord';
|
|
import { BoardColumnDefinition } from '@/object-record/record-board-deprecated/types/BoardColumnDefinition';
|
|
import { currentPipelineState } from '@/pipeline/states/currentPipelineState';
|
|
import { PipelineStep } from '@/pipeline/types/PipelineStep';
|
|
|
|
export const usePipelineSteps = () => {
|
|
const { createOneRecord: createOnePipelineStep } =
|
|
useCreateOneRecord<PipelineStep>({
|
|
objectNameSingular: CoreObjectNameSingular.PipelineStep,
|
|
});
|
|
|
|
const { deleteOneRecord: deleteOnePipelineStep } = useDeleteOneRecord({
|
|
objectNameSingular: CoreObjectNameSingular.PipelineStep,
|
|
});
|
|
|
|
const handlePipelineStepAdd = useRecoilCallback(
|
|
({ snapshot }) =>
|
|
(boardColumn: BoardColumnDefinition) => {
|
|
const currentPipeline = snapshot
|
|
.getLoadable(currentPipelineState)
|
|
.getValue();
|
|
if (!currentPipeline?.id) return;
|
|
|
|
return createOnePipelineStep?.({
|
|
color: boardColumn.colorCode ?? 'gray',
|
|
id: boardColumn.id,
|
|
position: boardColumn.position,
|
|
name: boardColumn.title,
|
|
});
|
|
},
|
|
[createOnePipelineStep],
|
|
);
|
|
|
|
const handlePipelineStepDelete = useRecoilCallback(
|
|
({ snapshot }) =>
|
|
(boardColumnId: string) => {
|
|
const currentPipeline = snapshot
|
|
.getLoadable(currentPipelineState)
|
|
.getValue();
|
|
if (!currentPipeline?.id) return;
|
|
|
|
return deleteOnePipelineStep?.(boardColumnId);
|
|
},
|
|
[deleteOnePipelineStep],
|
|
);
|
|
|
|
return { handlePipelineStepAdd, handlePipelineStepDelete };
|
|
};
|