Add ability to associate a new company to pipeline (#350)
* Add ability to associate a new company to pipeline * Fix tests
This commit is contained in:
@ -1,5 +1,4 @@
|
||||
import { useCallback, useMemo } from 'react';
|
||||
import { getOperationName } from '@apollo/client/utilities';
|
||||
import { useTheme } from '@emotion/react';
|
||||
|
||||
import { IconTargetArrow } from '@/ui/icons/index';
|
||||
@ -8,18 +7,19 @@ import { WithTopBarContainer } from '@/ui/layout/containers/WithTopBarContainer'
|
||||
import {
|
||||
PipelineProgress,
|
||||
PipelineStage,
|
||||
useCreateOnePipelineProgressMutation,
|
||||
useGetPipelinesQuery,
|
||||
useUpdateOnePipelineProgressMutation,
|
||||
} from '../../generated/graphql';
|
||||
import { Board } from '../../modules/opportunities/components/Board';
|
||||
import { useBoard } from '../../modules/opportunities/hooks/useBoard';
|
||||
import { GET_PIPELINES } from '../../modules/opportunities/queries';
|
||||
|
||||
export function Opportunities() {
|
||||
const theme = useTheme();
|
||||
|
||||
const { initialBoard, items, error, pipelineId, pipelineEntityType } =
|
||||
useBoard();
|
||||
const pipelines = useGetPipelinesQuery();
|
||||
const pipelineId = pipelines.data?.findManyPipeline[0].id;
|
||||
|
||||
const { initialBoard, items } = useBoard(pipelineId || '');
|
||||
const columns = useMemo(
|
||||
() =>
|
||||
initialBoard?.map(({ id, colorCode, title }) => ({
|
||||
@ -30,7 +30,6 @@ export function Opportunities() {
|
||||
[initialBoard],
|
||||
);
|
||||
const [updatePipelineProgress] = useUpdateOnePipelineProgressMutation();
|
||||
const [createPipelineProgress] = useCreateOnePipelineProgressMutation();
|
||||
|
||||
const onUpdate = useCallback(
|
||||
async (
|
||||
@ -44,43 +43,22 @@ export function Opportunities() {
|
||||
[updatePipelineProgress],
|
||||
);
|
||||
|
||||
const onClickNew = useCallback(
|
||||
(
|
||||
columnId: PipelineStage['id'],
|
||||
newItem: Partial<PipelineProgress> & { id: string },
|
||||
) => {
|
||||
if (!pipelineId || !pipelineEntityType) return;
|
||||
const variables = {
|
||||
pipelineStageId: columnId,
|
||||
pipelineId,
|
||||
entityId: newItem.id,
|
||||
entityType: pipelineEntityType,
|
||||
};
|
||||
createPipelineProgress({
|
||||
variables,
|
||||
refetchQueries: [getOperationName(GET_PIPELINES) ?? ''],
|
||||
});
|
||||
},
|
||||
[pipelineId, pipelineEntityType, createPipelineProgress],
|
||||
);
|
||||
|
||||
if (error) return <div>Error...</div>;
|
||||
if (!initialBoard || !items) {
|
||||
return <div>Initial board or items not found</div>;
|
||||
}
|
||||
|
||||
return (
|
||||
<WithTopBarContainer
|
||||
title="Opportunities"
|
||||
icon={<IconTargetArrow size={theme.iconSizeMedium} />}
|
||||
>
|
||||
<Board
|
||||
columns={columns || []}
|
||||
initialBoard={initialBoard}
|
||||
items={items}
|
||||
onUpdate={onUpdate}
|
||||
onClickNew={onClickNew}
|
||||
/>
|
||||
{items && pipelineId ? (
|
||||
<Board
|
||||
pipelineId={pipelineId}
|
||||
columns={columns || []}
|
||||
initialBoard={initialBoard}
|
||||
initialItems={items}
|
||||
onUpdate={onUpdate}
|
||||
/>
|
||||
) : (
|
||||
<></>
|
||||
)}
|
||||
</WithTopBarContainer>
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user