From 01a142f777913f311942273527d2f5128a827c39 Mon Sep 17 00:00:00 2001 From: Mar0xy Date: Sat, 21 Oct 2023 12:40:08 +0200 Subject: [PATCH] fix: increment and decrement of note count --- .../backend/src/core/NoteCreateService.ts | 15 ++++++++--- .../backend/src/core/NoteDeleteService.ts | 25 ++++++++++++++++++- 2 files changed, 36 insertions(+), 4 deletions(-) diff --git a/packages/backend/src/core/NoteCreateService.ts b/packages/backend/src/core/NoteCreateService.ts index ee2dbc385d..029891c610 100644 --- a/packages/backend/src/core/NoteCreateService.ts +++ b/packages/backend/src/core/NoteCreateService.ts @@ -504,7 +504,11 @@ export class NoteCreateService implements OnApplicationShutdown { // Register host if (this.userEntityService.isRemoteUser(user)) { this.federatedInstanceService.fetch(user.host).then(async i => { - this.instancesRepository.increment({ id: i.id }, 'notesCount', 1); + if (note.renote && note.text) { + this.instancesRepository.increment({ id: i.id }, 'notesCount', 1); + } else if (!note.renote) { + this.instancesRepository.increment({ id: i.id }, 'notesCount', 1); + } if ((await this.metaService.fetch()).enableChartsForFederatedInstances) { this.instanceChart.updateNote(i.host, note, true); } @@ -520,8 +524,13 @@ export class NoteCreateService implements OnApplicationShutdown { } } - // Increment notes count (user) - this.incNotesCountOfUser(user); + if (data.renote && data.text) { + // Increment notes count (user) + this.incNotesCountOfUser(user); + } else if (!data.renote) { + // Increment notes count (user) + this.incNotesCountOfUser(user); + } this.pushToTl(note, user); diff --git a/packages/backend/src/core/NoteDeleteService.ts b/packages/backend/src/core/NoteDeleteService.ts index 63e49ce0d3..a7944e91ac 100644 --- a/packages/backend/src/core/NoteDeleteService.ts +++ b/packages/backend/src/core/NoteDeleteService.ts @@ -115,9 +115,21 @@ export class NoteDeleteService { this.perUserNotesChart.update(user, note, false); } + if (note.renote && note.text) { + // Decrement notes count (user) + this.decNotesCountOfUser(user); + } else if (!note.renote) { + // Decrement notes count (user) + this.decNotesCountOfUser(user); + } + if (this.userEntityService.isRemoteUser(user)) { this.federatedInstanceService.fetch(user.host).then(async i => { - this.instancesRepository.decrement({ id: i.id }, 'notesCount', 1); + if (note.renote && note.text) { + this.instancesRepository.decrement({ id: i.id }, 'notesCount', 1); + } else if (!note.renote) { + this.instancesRepository.decrement({ id: i.id }, 'notesCount', 1); + } if ((await this.metaService.fetch()).enableChartsForFederatedInstances) { this.instanceChart.updateNote(i.host, note, false); } @@ -147,6 +159,17 @@ export class NoteDeleteService { } } + @bindThis + private decNotesCountOfUser(user: { id: MiUser['id']; }) { + this.usersRepository.createQueryBuilder().update() + .set({ + updatedAt: new Date(), + notesCount: () => '"notesCount" - 1', + }) + .where('id = :id', { id: user.id }) + .execute(); + } + @bindThis private async findCascadingNotes(note: MiNote): Promise { const recursive = async (noteId: string): Promise => {