mirror of
https://github.com/makeplane/plane
synced 2024-06-14 14:31:34 +00:00
c16a5b9b71
* restructure the logic to avoid throwing error if any dat is not found * updated files for previous commit * fix build errors * remove throwing error if userId is undefined * optionally chain display_name property to fix sentry issues * add ooptional check * change issue action logic to increase code maintainability and make sure to send only the updated date while updating the issue * fix issue updation bugs * fix module issues build error * fix runtime errors
37 lines
1.2 KiB
TypeScript
37 lines
1.2 KiB
TypeScript
import { DraggableLocation } from "@hello-pangea/dnd";
|
|
import { TGroupedIssues, IIssueMap, TIssue } from "@plane/types";
|
|
|
|
export const handleDragDrop = async (
|
|
source: DraggableLocation,
|
|
destination: DraggableLocation,
|
|
workspaceSlug: string | undefined,
|
|
projectId: string | undefined,
|
|
issueMap: IIssueMap,
|
|
issueWithIds: TGroupedIssues,
|
|
updateIssue?: (projectId: string, issueId: string, data: Partial<TIssue>) => Promise<void>
|
|
) => {
|
|
if (!issueMap || !issueWithIds || !workspaceSlug || !projectId || !updateIssue) return;
|
|
|
|
const sourceColumnId = source?.droppableId || null;
|
|
const destinationColumnId = destination?.droppableId || null;
|
|
|
|
if (!workspaceSlug || !projectId || !sourceColumnId || !destinationColumnId) return;
|
|
|
|
if (sourceColumnId === destinationColumnId) return;
|
|
|
|
// horizontal
|
|
if (sourceColumnId != destinationColumnId) {
|
|
const sourceIssues = issueWithIds[sourceColumnId] || [];
|
|
|
|
const [removed] = sourceIssues.splice(source.index, 1);
|
|
const removedIssueDetail = issueMap[removed];
|
|
|
|
const updatedIssue = {
|
|
id: removedIssueDetail?.id,
|
|
target_date: destinationColumnId,
|
|
};
|
|
|
|
return await updateIssue(projectId, updatedIssue.id, updatedIssue);
|
|
}
|
|
};
|