fix: increment and decrement of note count

This commit is contained in:
Mar0xy 2023-10-21 12:40:08 +02:00
parent 33eab0d178
commit 01a142f777
No known key found for this signature in database
GPG key ID: 56569BBE47D2C828
2 changed files with 36 additions and 4 deletions

View file

@ -504,7 +504,11 @@ export class NoteCreateService implements OnApplicationShutdown {
// Register host // Register host
if (this.userEntityService.isRemoteUser(user)) { if (this.userEntityService.isRemoteUser(user)) {
this.federatedInstanceService.fetch(user.host).then(async i => { this.federatedInstanceService.fetch(user.host).then(async i => {
if (note.renote && note.text) {
this.instancesRepository.increment({ id: i.id }, 'notesCount', 1); 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) { if ((await this.metaService.fetch()).enableChartsForFederatedInstances) {
this.instanceChart.updateNote(i.host, note, true); this.instanceChart.updateNote(i.host, note, true);
} }
@ -520,8 +524,13 @@ export class NoteCreateService implements OnApplicationShutdown {
} }
} }
if (data.renote && data.text) {
// Increment notes count (user) // Increment notes count (user)
this.incNotesCountOfUser(user); this.incNotesCountOfUser(user);
} else if (!data.renote) {
// Increment notes count (user)
this.incNotesCountOfUser(user);
}
this.pushToTl(note, user); this.pushToTl(note, user);

View file

@ -115,9 +115,21 @@ export class NoteDeleteService {
this.perUserNotesChart.update(user, note, false); 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)) { if (this.userEntityService.isRemoteUser(user)) {
this.federatedInstanceService.fetch(user.host).then(async i => { this.federatedInstanceService.fetch(user.host).then(async i => {
if (note.renote && note.text) {
this.instancesRepository.decrement({ id: i.id }, 'notesCount', 1); 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) { if ((await this.metaService.fetch()).enableChartsForFederatedInstances) {
this.instanceChart.updateNote(i.host, note, false); 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 @bindThis
private async findCascadingNotes(note: MiNote): Promise<MiNote[]> { private async findCascadingNotes(note: MiNote): Promise<MiNote[]> {
const recursive = async (noteId: string): Promise<MiNote[]> => { const recursive = async (noteId: string): Promise<MiNote[]> => {