Skip to content

Commit f4873ce

Browse files
committed
chore: updated module updated handler in all-properties and spreadsheet column
1 parent 749d862 commit f4873ce

File tree

2 files changed

+20
-17
lines changed

2 files changed

+20
-17
lines changed

web/components/issues/issue-layouts/properties/all-properties.tsx

+9-8
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import { useCallback, useMemo } from "react";
22
import { observer } from "mobx-react-lite";
33
import { useRouter } from "next/router";
44
import { CalendarCheck2, CalendarClock, Layers, Link, Paperclip } from "lucide-react";
5+
import xor from "lodash/xor";
56
// hooks
67
import { useEventTracker, useEstimate, useLabel, useIssues } from "hooks/store";
78
// components
@@ -133,14 +134,14 @@ export const IssueProperties: React.FC<IIssueProperties> = observer((props) => {
133134
(moduleIds: string[] | null) => {
134135
if (!issue || !issue.module_ids || !moduleIds) return;
135136

136-
if (moduleIds.length === 0) issueOperations.removeModulesFromIssue(issue.module_ids);
137-
else if (moduleIds.length > issue.module_ids.length) {
138-
const newModuleIds = moduleIds.filter((m) => !issue.module_ids?.includes(m));
139-
issueOperations.addModulesToIssue(newModuleIds);
140-
} else if (moduleIds.length < issue.module_ids.length) {
141-
const removedModuleIds = issue.module_ids.filter((m) => !moduleIds.includes(m));
142-
issueOperations.removeModulesFromIssue(removedModuleIds);
143-
}
137+
const updatedModuleIds = xor(issue.module_ids, moduleIds);
138+
const modulesToAdd: string[] = [];
139+
const modulesToRemove: string[] = [];
140+
for (const moduleId of updatedModuleIds)
141+
if (issue.module_ids.includes(moduleId)) modulesToRemove.push(moduleId);
142+
else modulesToAdd.push(moduleId);
143+
if (modulesToAdd.length > 0) issueOperations.addModulesToIssue(modulesToAdd);
144+
if (modulesToRemove.length > 0) issueOperations.removeModulesFromIssue(modulesToRemove);
144145

145146
captureIssueEvent({
146147
eventName: ISSUE_UPDATED,

web/components/issues/issue-layouts/spreadsheet/columns/module-column.tsx

+11-9
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import React, { useCallback } from "react";
22
import { useRouter } from "next/router";
33
import { observer } from "mobx-react-lite";
4+
import xor from "lodash/xor";
45
// hooks
56
import { useEventTracker, useIssues } from "hooks/store";
67
// components
@@ -32,15 +33,16 @@ export const SpreadsheetModuleColumn: React.FC<Props> = observer((props) => {
3233
async (moduleIds: string[] | null) => {
3334
if (!workspaceSlug || !issue || !issue.module_ids || !moduleIds) return;
3435

35-
if (moduleIds.length === 0)
36-
removeModulesFromIssue(workspaceSlug.toString(), issue.project_id, issue.id, issue.module_ids);
37-
else if (moduleIds.length > issue.module_ids.length) {
38-
const newModuleIds = moduleIds.filter((m) => !issue.module_ids?.includes(m));
39-
addModulesToIssue(workspaceSlug.toString(), issue.project_id, issue.id, newModuleIds);
40-
} else if (moduleIds.length < issue.module_ids.length) {
41-
const removedModuleIds = issue.module_ids.filter((m) => !moduleIds.includes(m));
42-
removeModulesFromIssue(workspaceSlug.toString(), issue.project_id, issue.id, removedModuleIds);
43-
}
36+
const updatedModuleIds = xor(issue.module_ids, moduleIds);
37+
const modulesToAdd: string[] = [];
38+
const modulesToRemove: string[] = [];
39+
for (const moduleId of updatedModuleIds)
40+
if (issue.module_ids.includes(moduleId)) modulesToRemove.push(moduleId);
41+
else modulesToAdd.push(moduleId);
42+
if (modulesToAdd.length > 0)
43+
addModulesToIssue(workspaceSlug.toString(), issue.project_id, issue.id, modulesToAdd);
44+
if (modulesToRemove.length > 0)
45+
removeModulesFromIssue(workspaceSlug.toString(), issue.project_id, issue.id, modulesToRemove);
4446

4547
captureIssueEvent({
4648
eventName: "Issue updated",

0 commit comments

Comments
 (0)