From 8bbe7033835dfd149e9dcdfb62f9bcf7a7af777c Mon Sep 17 00:00:00 2001 From: caipira113 Date: Fri, 27 Oct 2023 21:53:55 +0900 Subject: [PATCH] enhance(backend): inbox queue error in update note (cherry picked from commit 1312c4f944b235d77275a51047275f84e4904de8) --- .../backend/src/core/activitypub/ApInboxService.ts | 6 +++--- .../src/core/activitypub/models/ApNoteService.ts | 11 ++--------- 2 files changed, 5 insertions(+), 12 deletions(-) diff --git a/packages/backend/src/core/activitypub/ApInboxService.ts b/packages/backend/src/core/activitypub/ApInboxService.ts index 0210ff09b9..2c062223f8 100644 --- a/packages/backend/src/core/activitypub/ApInboxService.ts +++ b/packages/backend/src/core/activitypub/ApInboxService.ts @@ -785,9 +785,9 @@ export class ApInboxService { const unlock = await this.appLockService.getApLock(uri); try { - //const exist = await this.apNoteService.fetchNote(note); - //if (exist) return 'skip: note exists'; - await this.apNoteService.updateNote(note, resolver, silent); + const target = await this.notesRepository.findOneBy({uri: uri}); + if (!target) return `skip: target note not located: ${uri}`; + await this.apNoteService.updateNote(note, target, resolver, silent); return 'ok'; } catch (err) { if (err instanceof StatusError && err.isClientError) { diff --git a/packages/backend/src/core/activitypub/models/ApNoteService.ts b/packages/backend/src/core/activitypub/models/ApNoteService.ts index e98a15effb..0bcc353232 100644 --- a/packages/backend/src/core/activitypub/models/ApNoteService.ts +++ b/packages/backend/src/core/activitypub/models/ApNoteService.ts @@ -335,7 +335,7 @@ export class ApNoteService { } @bindThis - public async updateNote(value: string | IObject, resolver?: Resolver, silent = false): Promise { + public async updateNote(value: string | IObject, target: MiNote, resolver?: Resolver, silent = false): Promise { if (resolver == null) resolver = this.apResolverService.createResolver(); const object = await resolver.resolve(value); @@ -365,13 +365,6 @@ export class ApNoteService { throw new Error('actor has been suspended'); } - const b_note = await this.notesRepository.findOneBy({ - uri: entryUri, - }).then(x => { - if (x == null) throw new Error('note not found'); - return x; - }); - const limit = promiseLimit(2); const files = (await Promise.all(toArray(note.attachment).map(attach => ( limit(() => this.apImageService.resolveImage(actor, { @@ -413,7 +406,7 @@ export class ApNoteService { apHashtags, apEmojis, poll, - }, b_note, silent); + }, target, silent); } catch (err: any) { this.logger.warn(`note update failed: ${err}`); return err;