diff --git a/packages/backend/src/core/activitypub/ApInboxService.ts b/packages/backend/src/core/activitypub/ApInboxService.ts index 8e039641ba..0d1f5e3699 100644 --- a/packages/backend/src/core/activitypub/ApInboxService.ts +++ b/packages/backend/src/core/activitypub/ApInboxService.ts @@ -824,9 +824,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 8cfc1a32de..5fff846953 100644 --- a/packages/backend/src/core/activitypub/models/ApNoteService.ts +++ b/packages/backend/src/core/activitypub/models/ApNoteService.ts @@ -340,7 +340,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); @@ -370,13 +370,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, { @@ -418,7 +411,7 @@ export class ApNoteService { apHashtags, apEmojis, poll, - }, b_note, silent); + }, target, silent); } catch (err: any) { this.logger.warn(`note update failed: ${err}`); return err;