Files
twenty/packages/twenty-front/src/modules/pipeline/hooks/usePipelineSteps.ts
gitstart-app[bot] b2210bd418 TWNTY-2244 - ESLint rule: enforce usage of .getLoadable() + .getValue() to get atoms (#4143)
* 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>
2024-03-06 00:24:20 +01:00

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 };
};