fix postNoteCreated and postNoteEdited not working properly due to missing Data options

This commit is contained in:
Hazelnoot 2025-06-24 11:46:38 -04:00
parent cf138a148d
commit 2bca84048d
3 changed files with 13 additions and 18 deletions

View file

@ -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);

View file

@ -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)) {

View file

@ -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<string> {
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';