* WIP * wip * update pipelineStepId * rename pipeline stage to pipeline step * rename pipelineProgress to Opportunity * fix UUID type not queried * fix boardColumnTotal * fix micros * fixing filters, sorts and fields * wip * wip * Fix opportunity board re-render --------- Co-authored-by: Lucas Bordeau <bordeau.lucas@gmail.com> Co-authored-by: bosiraphael <raphael.bosi@gmail.com>
56 lines
1.5 KiB
TypeScript
56 lines
1.5 KiB
TypeScript
import { useRecoilState } from 'recoil';
|
|
|
|
import { useUpdateOneObjectRecord } from '@/object-record/hooks/useUpdateOneObjectRecord';
|
|
import { PipelineStep } from '@/pipeline/types/PipelineStep';
|
|
import { useMoveViewColumns } from '@/views/hooks/useMoveViewColumns';
|
|
|
|
import { boardColumnsState } from '../states/boardColumnsState';
|
|
import { BoardColumnDefinition } from '../types/BoardColumnDefinition';
|
|
|
|
export const useBoardColumns = () => {
|
|
const [boardColumns, setBoardColumns] = useRecoilState(boardColumnsState);
|
|
|
|
const { handleColumnMove } = useMoveViewColumns();
|
|
|
|
const { updateOneObject: updateOnePipelineStep } =
|
|
useUpdateOneObjectRecord<PipelineStep>({
|
|
objectNameSingular: 'pipelineStep',
|
|
});
|
|
|
|
const updatedPipelineSteps = (stages: BoardColumnDefinition[]) => {
|
|
if (!stages.length) return;
|
|
|
|
return Promise.all(
|
|
stages.map((stage) =>
|
|
updateOnePipelineStep?.({
|
|
idToUpdate: stage.id,
|
|
input: {
|
|
position: stage.position,
|
|
},
|
|
}),
|
|
),
|
|
);
|
|
};
|
|
|
|
const persistBoardColumns = async () => {
|
|
await updatedPipelineSteps(boardColumns);
|
|
};
|
|
|
|
const handleMoveBoardColumn = (
|
|
direction: 'left' | 'right',
|
|
column: BoardColumnDefinition,
|
|
) => {
|
|
const currentColumnArrayIndex = boardColumns.findIndex(
|
|
(tableColumn) => tableColumn.id === column.id,
|
|
);
|
|
const columns = handleColumnMove(
|
|
direction,
|
|
currentColumnArrayIndex,
|
|
boardColumns,
|
|
);
|
|
setBoardColumns(columns);
|
|
};
|
|
|
|
return { handleMoveBoardColumn, persistBoardColumns };
|
|
};
|