fix: Prevent clearing linked tasks when soft deleting

This commit is contained in:
Maksim Eltyshev
2025-12-09 21:23:27 +01:00
parent 6da5c7aaca
commit ae9517b37a
4 changed files with 37 additions and 35 deletions
+8 -8
View File
@@ -115,7 +115,7 @@ export default class extends BaseModel {
isFetching: null, isFetching: null,
}); });
boardModel.deleteRelated(payload.currentUserId); boardModel.deleteRelated(payload.currentUserId, true);
} }
}); });
@@ -135,7 +135,7 @@ export default class extends BaseModel {
.toModelArray() .toModelArray()
.forEach((boardModel) => { .forEach((boardModel) => {
if (!payload.boardIds.includes(boardModel.id)) { if (!payload.boardIds.includes(boardModel.id)) {
boardModel.deleteWithRelated(); boardModel.deleteWithRelated(true);
} }
}); });
@@ -434,9 +434,9 @@ export default class extends BaseModel {
); );
} }
deleteListsWithRelated() { deleteListsWithRelated(soft) {
this.lists.toModelArray().forEach((listModel) => { this.lists.toModelArray().forEach((listModel) => {
listModel.deleteWithRelated(); listModel.deleteWithRelated(soft);
}); });
} }
@@ -445,7 +445,7 @@ export default class extends BaseModel {
this.filterLabels.clear(); this.filterLabels.clear();
} }
deleteRelated(exceptMemberUserId) { deleteRelated(exceptMemberUserId, soft) {
this.deleteClearable(); this.deleteClearable();
this.memberships.toModelArray().forEach((boardMembershipModel) => { this.memberships.toModelArray().forEach((boardMembershipModel) => {
@@ -458,7 +458,7 @@ export default class extends BaseModel {
labelModel.deleteWithRelated(); labelModel.deleteWithRelated();
}); });
this.deleteListsWithRelated(); this.deleteListsWithRelated(soft);
this.notificationServices.delete(); this.notificationServices.delete();
} }
@@ -467,8 +467,8 @@ export default class extends BaseModel {
this.delete(); this.delete();
} }
deleteWithRelated() { deleteWithRelated(soft) {
this.deleteRelated(); this.deleteRelated(undefined, soft);
this.delete(); this.delete();
} }
} }
+13 -11
View File
@@ -273,7 +273,7 @@ export default class extends BaseModel {
const cardModel = Card.withId(card.id); const cardModel = Card.withId(card.id);
if (cardModel) { if (cardModel) {
cardModel.deleteWithRelated(); cardModel.deleteWithRelated(true);
} }
Card.upsert(card); Card.upsert(card);
@@ -346,7 +346,7 @@ export default class extends BaseModel {
if (payload.card.boardId === null || payload.isFetched) { if (payload.card.boardId === null || payload.isFetched) {
if (cardModel) { if (cardModel) {
cardModel.deleteWithRelated(); cardModel.deleteWithRelated(true);
} }
} }
@@ -388,7 +388,7 @@ export default class extends BaseModel {
const cardModel = Card.withId(payload.card.id); const cardModel = Card.withId(payload.card.id);
if (cardModel) { if (cardModel) {
cardModel.deleteWithRelated(); cardModel.deleteWithRelated(true);
} }
Card.upsert(payload.card); Card.upsert(payload.card);
@@ -411,7 +411,7 @@ export default class extends BaseModel {
const cardModel = Card.withId(payload.id); const cardModel = Card.withId(payload.id);
if (cardModel) { if (cardModel) {
cardModel.deleteWithRelated(); cardModel.deleteWithRelated(true);
} }
if (payload.card) { if (payload.card) {
@@ -756,18 +756,20 @@ export default class extends BaseModel {
this.labels.clear(); this.labels.clear();
} }
deleteRelated() { deleteRelated(soft = false) {
this.deleteClearable(); this.deleteClearable();
this.taskLists.toModelArray().forEach((taskListModel) => { this.taskLists.toModelArray().forEach((taskListModel) => {
taskListModel.deleteWithRelated(); taskListModel.deleteWithRelated();
}); });
this.linkedTasks.toModelArray().forEach((taskModel) => { if (!soft) {
taskModel.update({ this.linkedTasks.toModelArray().forEach((taskModel) => {
linkedCardId: null, taskModel.update({
linkedCardId: null,
});
}); });
}); }
this.attachments.delete(); this.attachments.delete();
@@ -784,8 +786,8 @@ export default class extends BaseModel {
this.delete(); this.delete();
} }
deleteWithRelated() { deleteWithRelated(soft) {
this.deleteRelated(); this.deleteRelated(soft);
this.delete(); this.delete();
} }
} }
+6 -6
View File
@@ -136,7 +136,7 @@ export default class extends BaseModel {
const listModel = List.withId(payload.id); const listModel = List.withId(payload.id);
if (payload.data.boardId && payload.data.boardId !== listModel.boardId) { if (payload.data.boardId && payload.data.boardId !== listModel.boardId) {
listModel.deleteWithRelated(); listModel.deleteWithRelated(true);
} else { } else {
let isClosed; let isClosed;
if (payload.data.type) { if (payload.data.type) {
@@ -171,7 +171,7 @@ export default class extends BaseModel {
if (listModel) { if (listModel) {
if (payload.list.boardId === null || payload.isFetched) { if (payload.list.boardId === null || payload.isFetched) {
listModel.deleteWithRelated(); listModel.deleteWithRelated(true);
} }
if (payload.list.boardId !== null) { if (payload.list.boardId !== null) {
@@ -435,14 +435,14 @@ export default class extends BaseModel {
}); });
} }
deleteRelated() { deleteRelated(soft) {
this.cards.toModelArray().forEach((cardModel) => { this.cards.toModelArray().forEach((cardModel) => {
cardModel.deleteWithRelated(); cardModel.deleteWithRelated(soft);
}); });
} }
deleteWithRelated() { deleteWithRelated(soft) {
this.deleteRelated(); this.deleteRelated(soft);
this.delete(); this.delete();
} }
} }
+10 -10
View File
@@ -69,7 +69,7 @@ export default class extends BaseModel {
.toModelArray() .toModelArray()
.forEach((projectModel) => { .forEach((projectModel) => {
if (!payload.projectIds.includes(projectModel.id)) { if (!payload.projectIds.includes(projectModel.id)) {
projectModel.deleteWithRelated(); projectModel.deleteWithRelated(true);
} }
}); });
@@ -97,11 +97,11 @@ export default class extends BaseModel {
if (payload.isAvailable) { if (payload.isAvailable) {
projectModel.boards.toModelArray().forEach((boardModel) => { projectModel.boards.toModelArray().forEach((boardModel) => {
if (!payload.boardIds.includes(boardModel.id)) { if (!payload.boardIds.includes(boardModel.id)) {
boardModel.deleteWithRelated(); boardModel.deleteWithRelated(true);
} }
}); });
} else { } else {
projectModel.deleteWithRelated(); projectModel.deleteWithRelated(true);
} }
} }
@@ -134,11 +134,11 @@ export default class extends BaseModel {
boardModel.notificationServices.delete(); boardModel.notificationServices.delete();
} }
} else { } else {
boardModel.deleteWithRelated(); boardModel.deleteWithRelated(true);
} }
}); });
} else { } else {
projectModel.deleteWithRelated(); projectModel.deleteWithRelated(true);
} }
} }
@@ -153,7 +153,7 @@ export default class extends BaseModel {
const projectModel = Project.withId(payload.boardMembership.projectId); const projectModel = Project.withId(payload.boardMembership.projectId);
if (projectModel) { if (projectModel) {
projectModel.deleteWithRelated(); projectModel.deleteWithRelated(true);
} }
} }
@@ -231,7 +231,7 @@ export default class extends BaseModel {
); );
} }
deleteRelated() { deleteRelated(soft) {
this.managers.delete(); this.managers.delete();
this.backgroundImages.toModelArray().forEach((backgroundImageModel) => { this.backgroundImages.toModelArray().forEach((backgroundImageModel) => {
@@ -243,12 +243,12 @@ export default class extends BaseModel {
}); });
this.boards.toModelArray().forEach((boardModel) => { this.boards.toModelArray().forEach((boardModel) => {
boardModel.deleteWithRelated(); boardModel.deleteWithRelated(soft);
}); });
} }
deleteWithRelated() { deleteWithRelated(soft) {
this.deleteRelated(); this.deleteRelated(soft);
this.delete(); this.delete();
} }
} }