diff --git a/apps/app/components/core/board-view/all-boards.tsx b/apps/app/components/core/board-view/all-boards.tsx index 19d0e7636..69346cd18 100644 --- a/apps/app/components/core/board-view/all-boards.tsx +++ b/apps/app/components/core/board-view/all-boards.tsx @@ -17,7 +17,7 @@ type Props = { openIssuesListModal?: (() => void) | null; handleDeleteIssue: (issue: IIssue) => void; handleTrashBox: (isDragging: boolean) => void; - removeIssue: ((bridgeId: string) => void) | null; + removeIssue: ((bridgeId: string, issueId: string) => void) | null; isCompleted?: boolean; userAuth: UserAuth; }; diff --git a/apps/app/components/core/board-view/single-board.tsx b/apps/app/components/core/board-view/single-board.tsx index 0c13d8bcf..76226f0cf 100644 --- a/apps/app/components/core/board-view/single-board.tsx +++ b/apps/app/components/core/board-view/single-board.tsx @@ -29,7 +29,7 @@ type Props = { handleDeleteIssue: (issue: IIssue) => void; openIssuesListModal?: (() => void) | null; handleTrashBox: (isDragging: boolean) => void; - removeIssue: ((bridgeId: string) => void) | null; + removeIssue: ((bridgeId: string, issueId: string) => void) | null; isCompleted?: boolean; userAuth: UserAuth; }; @@ -130,7 +130,8 @@ export const SingleBoard: React.FC = ({ handleDeleteIssue={handleDeleteIssue} handleTrashBox={handleTrashBox} removeIssue={() => { - if (removeIssue && issue.bridge_id) removeIssue(issue.bridge_id); + if (removeIssue && issue.bridge_id) + removeIssue(issue.bridge_id, issue.id); }} isCompleted={isCompleted} userAuth={userAuth} diff --git a/apps/app/components/core/issues-view.tsx b/apps/app/components/core/issues-view.tsx index f063de373..497d7fba4 100644 --- a/apps/app/components/core/issues-view.tsx +++ b/apps/app/components/core/issues-view.tsx @@ -314,10 +314,26 @@ export const IssuesView: React.FC = ({ ); const removeIssueFromCycle = useCallback( - (bridgeId: string) => { + (bridgeId: string, issueId: string) => { if (!workspaceSlug || !projectId || !cycleId) return; - mutate(CYCLE_ISSUES_WITH_PARAMS(cycleId as string, params)); + mutate( + CYCLE_ISSUES_WITH_PARAMS(cycleId as string, params), + (prevData: any) => { + if (!prevData) return prevData; + if (selectedGroup) { + const filteredData: any = {}; + for (const key in prevData) { + filteredData[key] = prevData[key].filter((item: any) => item.id !== issueId); + } + return filteredData; + } else { + const filteredData = prevData.filter((i: any) => i.id !== issueId); + return filteredData; + } + }, + false + ); issuesService .removeIssueFromCycle( @@ -326,6 +342,13 @@ export const IssuesView: React.FC = ({ cycleId as string, bridgeId ) + .then(() => { + setToastAlert({ + title: "Success", + message: "Issue removed successfully.", + type: "success", + }); + }) .catch((e) => { console.log(e); }); @@ -334,10 +357,26 @@ export const IssuesView: React.FC = ({ ); const removeIssueFromModule = useCallback( - (bridgeId: string) => { + (bridgeId: string, issueId: string) => { if (!workspaceSlug || !projectId || !moduleId) return; - mutate(MODULE_ISSUES_WITH_PARAMS(moduleId as string, params)); + mutate( + MODULE_ISSUES_WITH_PARAMS(moduleId as string, params), + (prevData: any) => { + if (!prevData) return prevData; + if (selectedGroup) { + const filteredData: any = {}; + for (const key in prevData) { + filteredData[key] = prevData[key].filter((item: any) => item.id !== issueId); + } + return filteredData; + } else { + const filteredData = prevData.filter((item: any) => item.id !== issueId); + return filteredData; + } + }, + false + ); modulesService .removeIssueFromModule( @@ -346,6 +385,13 @@ export const IssuesView: React.FC = ({ moduleId as string, bridgeId ) + .then(() => { + setToastAlert({ + title: "Success", + message: "Issue removed successfully.", + type: "success", + }); + }) .catch((e) => { console.log(e); }); diff --git a/apps/app/components/core/list-view/all-lists.tsx b/apps/app/components/core/list-view/all-lists.tsx index 2ea40ffe4..d8fa8b9ee 100644 --- a/apps/app/components/core/list-view/all-lists.tsx +++ b/apps/app/components/core/list-view/all-lists.tsx @@ -14,7 +14,7 @@ type Props = { handleEditIssue: (issue: IIssue) => void; handleDeleteIssue: (issue: IIssue) => void; openIssuesListModal?: (() => void) | null; - removeIssue: ((bridgeId: string) => void) | null; + removeIssue: ((bridgeId: string, issueId: string) => void) | null; isCompleted?: boolean; userAuth: UserAuth; }; diff --git a/apps/app/components/core/list-view/single-list.tsx b/apps/app/components/core/list-view/single-list.tsx index c39e6a56b..abe82ed73 100644 --- a/apps/app/components/core/list-view/single-list.tsx +++ b/apps/app/components/core/list-view/single-list.tsx @@ -37,7 +37,7 @@ type Props = { handleEditIssue: (issue: IIssue) => void; handleDeleteIssue: (issue: IIssue) => void; openIssuesListModal?: (() => void) | null; - removeIssue: ((bridgeId: string) => void) | null; + removeIssue: ((bridgeId: string, issueId: string) => void) | null; isCompleted?: boolean; userAuth: UserAuth; }; @@ -204,7 +204,7 @@ export const SingleList: React.FC = ({ makeIssueCopy={() => makeIssueCopy(issue)} handleDeleteIssue={handleDeleteIssue} removeIssue={() => { - if (removeIssue !== null && issue.bridge_id) removeIssue(issue.bridge_id); + if (removeIssue !== null && issue.bridge_id) removeIssue(issue.bridge_id, issue.id); }} isCompleted={isCompleted} userAuth={userAuth}