summaryrefslogtreecommitdiff
path: root/packages/backend/src/core/NoteDeleteService.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/backend/src/core/NoteDeleteService.ts')
-rw-r--r--packages/backend/src/core/NoteDeleteService.ts18
1 files changed, 9 insertions, 9 deletions
diff --git a/packages/backend/src/core/NoteDeleteService.ts b/packages/backend/src/core/NoteDeleteService.ts
index dd878f7bba..3612ac806f 100644
--- a/packages/backend/src/core/NoteDeleteService.ts
+++ b/packages/backend/src/core/NoteDeleteService.ts
@@ -121,10 +121,8 @@ export class NoteDeleteService {
}
@bindThis
- private async findCascadingNotes(note: Note) {
- const cascadingNotes: Note[] = [];
-
- const recursive = async (noteId: string) => {
+ private async findCascadingNotes(note: Note): Promise<Note[]> {
+ const recursive = async (noteId: string): Promise<Note[]> => {
const query = this.notesRepository.createQueryBuilder('note')
.where('note.replyId = :noteId', { noteId })
.orWhere(new Brackets(q => {
@@ -133,12 +131,14 @@ export class NoteDeleteService {
}))
.leftJoinAndSelect('note.user', 'user');
const replies = await query.getMany();
- for (const reply of replies) {
- cascadingNotes.push(reply);
- await recursive(reply.id);
- }
+
+ return [
+ replies,
+ ...await Promise.all(replies.map(reply => recursive(reply.id))),
+ ].flat();
};
- await recursive(note.id);
+
+ const cascadingNotes: Note[] = await recursive(note.id);
return cascadingNotes.filter(note => note.userHost === null); // filter out non-local users
}