From a6360abd438c61ee95fc208f67ff0a3dad8a41e9 Mon Sep 17 00:00:00 2001 From: Leafus Date: Mon, 2 Jun 2025 00:54:30 +0200 Subject: [PATCH] fix: remove awaits from DeleteAccountService --- .../backend/src/core/DeleteAccountService.ts | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/packages/backend/src/core/DeleteAccountService.ts b/packages/backend/src/core/DeleteAccountService.ts index efbe6a2d59..54145901b0 100644 --- a/packages/backend/src/core/DeleteAccountService.ts +++ b/packages/backend/src/core/DeleteAccountService.ts @@ -13,7 +13,6 @@ import { GlobalEventService } from '@/core/GlobalEventService.js'; import { UserEntityService } from '@/core/entities/UserEntityService.js'; import { ApRendererService } from '@/core/activitypub/ApRendererService.js'; import { ModerationLogService } from '@/core/ModerationLogService.js'; -import { SystemAccountService } from '@/core/SystemAccountService.js'; import { isSystemAccount } from '@/misc/is-system-account.js'; @Injectable() @@ -33,7 +32,6 @@ export class DeleteAccountService { private queueService: QueueService, private globalEventService: GlobalEventService, private moderationLogService: ModerationLogService, - private systemAccountService: SystemAccountService, ) { } @@ -63,6 +61,8 @@ export class DeleteAccountService { // 知り得る全SharedInboxにDelete配信 const content = this.apRendererService.addContext(this.apRendererService.renderDelete(this.userEntityService.genLocalUserUri(user.id), user)); + const queue: string[] = []; + const followings = await this.followingsRepository.find({ where: [ { followerSharedInbox: Not(IsNull()) }, @@ -71,17 +71,22 @@ export class DeleteAccountService { select: ['followerSharedInbox', 'followeeSharedInbox'], }); - const inboxes = followings.map(x => [x.followerSharedInbox ?? x.followeeSharedInbox as string, true] as const); - const queue = new Map(inboxes); + const inboxes = followings.map(x => x.followerSharedInbox ?? x.followeeSharedInbox); - await this.queueService.deliverMany(user, content, queue); + for (const inbox of inboxes) { + if (inbox != null && !queue.includes(inbox)) queue.push(inbox); + } - await this.queueService.createDeleteAccountJob(user, { + for (const inbox of queue) { + this.queueService.deliver(user, content, inbox, true); + } + + this.queueService.createDeleteAccountJob(user, { soft: false, }); } else { // リモートユーザーの削除は、完全にDBから物理削除してしまうと再度連合してきてアカウントが復活する可能性があるため、soft指定する - await this.queueService.createDeleteAccountJob(user, { + this.queueService.createDeleteAccountJob(user, { soft: true, }); }