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

View File

@@ -115,7 +115,7 @@ export default class extends BaseModel {
isFetching: null,
});
boardModel.deleteRelated(payload.currentUserId);
boardModel.deleteRelated(payload.currentUserId, true);
}
});
@@ -135,7 +135,7 @@ export default class extends BaseModel {
.toModelArray()
.forEach((boardModel) => {
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) => {
listModel.deleteWithRelated();
listModel.deleteWithRelated(soft);
});
}
@@ -445,7 +445,7 @@ export default class extends BaseModel {
this.filterLabels.clear();
}
deleteRelated(exceptMemberUserId) {
deleteRelated(exceptMemberUserId, soft) {
this.deleteClearable();
this.memberships.toModelArray().forEach((boardMembershipModel) => {
@@ -458,7 +458,7 @@ export default class extends BaseModel {
labelModel.deleteWithRelated();
});
this.deleteListsWithRelated();
this.deleteListsWithRelated(soft);
this.notificationServices.delete();
}
@@ -467,8 +467,8 @@ export default class extends BaseModel {
this.delete();
}
deleteWithRelated() {
this.deleteRelated();
deleteWithRelated(soft) {
this.deleteRelated(undefined, soft);
this.delete();
}
}

View File

@@ -273,7 +273,7 @@ export default class extends BaseModel {
const cardModel = Card.withId(card.id);
if (cardModel) {
cardModel.deleteWithRelated();
cardModel.deleteWithRelated(true);
}
Card.upsert(card);
@@ -346,7 +346,7 @@ export default class extends BaseModel {
if (payload.card.boardId === null || payload.isFetched) {
if (cardModel) {
cardModel.deleteWithRelated();
cardModel.deleteWithRelated(true);
}
}
@@ -388,7 +388,7 @@ export default class extends BaseModel {
const cardModel = Card.withId(payload.card.id);
if (cardModel) {
cardModel.deleteWithRelated();
cardModel.deleteWithRelated(true);
}
Card.upsert(payload.card);
@@ -411,7 +411,7 @@ export default class extends BaseModel {
const cardModel = Card.withId(payload.id);
if (cardModel) {
cardModel.deleteWithRelated();
cardModel.deleteWithRelated(true);
}
if (payload.card) {
@@ -756,18 +756,20 @@ export default class extends BaseModel {
this.labels.clear();
}
deleteRelated() {
deleteRelated(soft = false) {
this.deleteClearable();
this.taskLists.toModelArray().forEach((taskListModel) => {
taskListModel.deleteWithRelated();
});
this.linkedTasks.toModelArray().forEach((taskModel) => {
taskModel.update({
linkedCardId: null,
if (!soft) {
this.linkedTasks.toModelArray().forEach((taskModel) => {
taskModel.update({
linkedCardId: null,
});
});
});
}
this.attachments.delete();
@@ -784,8 +786,8 @@ export default class extends BaseModel {
this.delete();
}
deleteWithRelated() {
this.deleteRelated();
deleteWithRelated(soft) {
this.deleteRelated(soft);
this.delete();
}
}

View File

@@ -136,7 +136,7 @@ export default class extends BaseModel {
const listModel = List.withId(payload.id);
if (payload.data.boardId && payload.data.boardId !== listModel.boardId) {
listModel.deleteWithRelated();
listModel.deleteWithRelated(true);
} else {
let isClosed;
if (payload.data.type) {
@@ -171,7 +171,7 @@ export default class extends BaseModel {
if (listModel) {
if (payload.list.boardId === null || payload.isFetched) {
listModel.deleteWithRelated();
listModel.deleteWithRelated(true);
}
if (payload.list.boardId !== null) {
@@ -435,14 +435,14 @@ export default class extends BaseModel {
});
}
deleteRelated() {
deleteRelated(soft) {
this.cards.toModelArray().forEach((cardModel) => {
cardModel.deleteWithRelated();
cardModel.deleteWithRelated(soft);
});
}
deleteWithRelated() {
this.deleteRelated();
deleteWithRelated(soft) {
this.deleteRelated(soft);
this.delete();
}
}

View File

@@ -69,7 +69,7 @@ export default class extends BaseModel {
.toModelArray()
.forEach((projectModel) => {
if (!payload.projectIds.includes(projectModel.id)) {
projectModel.deleteWithRelated();
projectModel.deleteWithRelated(true);
}
});
@@ -97,11 +97,11 @@ export default class extends BaseModel {
if (payload.isAvailable) {
projectModel.boards.toModelArray().forEach((boardModel) => {
if (!payload.boardIds.includes(boardModel.id)) {
boardModel.deleteWithRelated();
boardModel.deleteWithRelated(true);
}
});
} else {
projectModel.deleteWithRelated();
projectModel.deleteWithRelated(true);
}
}
@@ -134,11 +134,11 @@ export default class extends BaseModel {
boardModel.notificationServices.delete();
}
} else {
boardModel.deleteWithRelated();
boardModel.deleteWithRelated(true);
}
});
} else {
projectModel.deleteWithRelated();
projectModel.deleteWithRelated(true);
}
}
@@ -153,7 +153,7 @@ export default class extends BaseModel {
const projectModel = Project.withId(payload.boardMembership.projectId);
if (projectModel) {
projectModel.deleteWithRelated();
projectModel.deleteWithRelated(true);
}
}
@@ -231,7 +231,7 @@ export default class extends BaseModel {
);
}
deleteRelated() {
deleteRelated(soft) {
this.managers.delete();
this.backgroundImages.toModelArray().forEach((backgroundImageModel) => {
@@ -243,12 +243,12 @@ export default class extends BaseModel {
});
this.boards.toModelArray().forEach((boardModel) => {
boardModel.deleteWithRelated();
boardModel.deleteWithRelated(soft);
});
}
deleteWithRelated() {
this.deleteRelated();
deleteWithRelated(soft) {
this.deleteRelated(soft);
this.delete();
}
}