From 2bca84048db0e046b2935920f11e4a70619fd933 Mon Sep 17 00:00:00 2001 From: Hazelnoot Date: Tue, 24 Jun 2025 11:46:38 -0400 Subject: [PATCH] fix postNoteCreated and postNoteEdited not working properly due to missing Data options --- packages/backend/src/core/NoteCreateService.ts | 8 +------- packages/backend/src/core/NoteEditService.ts | 8 +------- .../processors/BackgroundTaskProcessorService.ts | 15 +++++++++++---- 3 files changed, 13 insertions(+), 18 deletions(-) diff --git a/packages/backend/src/core/NoteCreateService.ts b/packages/backend/src/core/NoteCreateService.ts index e7f55f10ad..0b0babfafd 100644 --- a/packages/backend/src/core/NoteCreateService.ts +++ b/packages/backend/src/core/NoteCreateService.ts @@ -574,13 +574,7 @@ export class NoteCreateService implements OnApplicationShutdown { } @bindThis - public async postNoteCreated(note: MiNote, user: MiUser & { - id: MiUser['id']; - username: MiUser['username']; - host: MiUser['host']; - isBot: MiUser['isBot']; - noindex: MiUser['noindex']; - }, data: Option, silent: boolean, mentionedUsers: MinimumUser[]) { + public async postNoteCreated(note: MiNote, user: MiUser, data: MiNote & { poll: MiPoll | null }, silent: boolean, mentionedUsers: MinimumUser[]) { this.notesChart.update(note, true); if (note.visibility !== 'specified' && (this.meta.enableChartsForRemoteUser || (user.host == null))) { this.perUserNotesChart.update(user, note, true); diff --git a/packages/backend/src/core/NoteEditService.ts b/packages/backend/src/core/NoteEditService.ts index 11b22c0798..dc2990c64f 100644 --- a/packages/backend/src/core/NoteEditService.ts +++ b/packages/backend/src/core/NoteEditService.ts @@ -612,13 +612,7 @@ export class NoteEditService implements OnApplicationShutdown { } @bindThis - public async postNoteEdited(note: MiNote, user: MiUser & { - id: MiUser['id']; - username: MiUser['username']; - host: MiUser['host']; - isBot: MiUser['isBot']; - noindex: MiUser['noindex']; - }, data: Option, silent: boolean, mentionedUsers: MinimumUser[]) { + public async postNoteEdited(note: MiNote, user: MiUser, data: MiNote & { poll: MiPoll | null }, silent: boolean, mentionedUsers: MinimumUser[]) { // Register host if (this.meta.enableStatsForFederatedInstances) { if (isRemoteUser(user)) { diff --git a/packages/backend/src/queue/processors/BackgroundTaskProcessorService.ts b/packages/backend/src/queue/processors/BackgroundTaskProcessorService.ts index 14c1523c3e..3d82dfa89b 100644 --- a/packages/backend/src/queue/processors/BackgroundTaskProcessorService.ts +++ b/packages/backend/src/queue/processors/BackgroundTaskProcessorService.ts @@ -19,7 +19,7 @@ import ApRequestChart from '@/core/chart/charts/ap-request.js'; import FederationChart from '@/core/chart/charts/federation.js'; import { UpdateInstanceQueue } from '@/core/UpdateInstanceQueue.js'; import { NoteCreateService } from '@/core/NoteCreateService.js'; -import type { DriveFilesRepository, NoteEditsRepository, NotesRepository, UsersRepository } from '@/models/_.js'; +import type { DriveFilesRepository, NoteEditsRepository, NotesRepository, PollsRepository, UsersRepository } from '@/models/_.js'; import { MiUser } from '@/models/_.js'; import { NoteEditService } from '@/core/NoteEditService.js'; import { HashtagService } from '@/core/HashtagService.js'; @@ -50,6 +50,9 @@ export class BackgroundTaskProcessorService { @Inject(DI.usersRepository) private readonly usersRepository: UsersRepository, + @Inject(DI.pollsRepository) + private readonly pollsRepository: PollsRepository, + private readonly apPersonService: ApPersonService, private readonly cacheService: CacheService, private readonly federatedInstanceService: FederatedInstanceService, @@ -246,17 +249,21 @@ export class BackgroundTaskProcessorService { } private async processPostNote(task: PostNoteBackgroundTask): Promise { - const note = await this.notesRepository.findOneBy({ id: task.noteId }); + const note = await this.notesRepository.findOne({ + where: { id: task.noteId }, + relations: { user: true, renote: true, reply: true, channel: true }, + }); if (!note) return `Skipping post-note task: note ${task.noteId} has been deleted`; const user = await this.cacheService.findUserById(note.userId); if (user.isSuspended) return `Skipping post-note task: note ${task.noteId}'s user ${note.userId} is suspended`; const mentionedUsers = await this.cacheService.getUsers(note.mentions); + const poll = await this.pollsRepository.findOneBy({ noteId: note.id }); if (task.edit) { - await this.noteEditService.postNoteEdited(note, user, note, task.silent, Array.from(mentionedUsers.values())); + await this.noteEditService.postNoteEdited(note, user, { ...note, poll }, task.silent, Array.from(mentionedUsers.values())); } else { - await this.noteCreateService.postNoteCreated(note, user, note, task.silent, Array.from(mentionedUsers.values())); + await this.noteCreateService.postNoteCreated(note, user, { ...note, poll }, task.silent, Array.from(mentionedUsers.values())); } return 'ok';