summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHazelnoot <acomputerdog@gmail.com>2025-07-09 19:03:13 -0400
committerdakkar <dakkar@thenautilus.net>2025-07-27 18:08:38 +0100
commit84ca3621d8ff2566c4d37bb7c1a6b4a923faed91 (patch)
tree33d5847d8dd7f45a5862853a12da8cb0dd1657ed
parentmerge: disable outgoing mastodon quotes *FOR STABLE* (!1169) (diff)
downloadsharkey-84ca3621d8ff2566c4d37bb7c1a6b4a923faed91.tar.gz
sharkey-84ca3621d8ff2566c4d37bb7c1a6b4a923faed91.tar.bz2
sharkey-84ca3621d8ff2566c4d37bb7c1a6b4a923faed91.zip
fix users/report-abuse endpoint being really slow
-rw-r--r--packages/backend/src/core/AbuseReportService.ts5
-rw-r--r--packages/backend/src/server/api/endpoints/users/report-abuse.ts10
2 files changed, 9 insertions, 6 deletions
diff --git a/packages/backend/src/core/AbuseReportService.ts b/packages/backend/src/core/AbuseReportService.ts
index bccb9f86f6..8b3c596f50 100644
--- a/packages/backend/src/core/AbuseReportService.ts
+++ b/packages/backend/src/core/AbuseReportService.ts
@@ -14,6 +14,7 @@ import { ApRendererService } from '@/core/activitypub/ApRendererService.js';
import { ModerationLogService } from '@/core/ModerationLogService.js';
import { SystemAccountService } from '@/core/SystemAccountService.js';
import { IdentifiableError } from '@/misc/identifiable-error.js';
+import { trackPromise } from '@/misc/promise-tracker.js';
import { IdService } from './IdService.js';
@Injectable()
@@ -68,11 +69,11 @@ export class AbuseReportService {
reports.push(report);
}
- return Promise.all([
+ trackPromise(Promise.all([
this.abuseReportNotificationService.notifyAdminStream(reports),
this.abuseReportNotificationService.notifySystemWebhook(reports, 'abuseReport'),
this.abuseReportNotificationService.notifyMail(reports),
- ]);
+ ]));
}
/**
diff --git a/packages/backend/src/server/api/endpoints/users/report-abuse.ts b/packages/backend/src/server/api/endpoints/users/report-abuse.ts
index 81c0c526f0..fc2b57c4a5 100644
--- a/packages/backend/src/server/api/endpoints/users/report-abuse.ts
+++ b/packages/backend/src/server/api/endpoints/users/report-abuse.ts
@@ -9,6 +9,7 @@ import { GetterService } from '@/server/api/GetterService.js';
import { RoleService } from '@/core/RoleService.js';
import { AbuseReportService } from '@/core/AbuseReportService.js';
import { ApiError } from '../../error.js';
+import { CacheService } from '@/core/CacheService.js';
export const meta = {
tags: ['users'],
@@ -60,13 +61,14 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
private getterService: GetterService,
private roleService: RoleService,
private abuseReportService: AbuseReportService,
+ private readonly cacheService: CacheService,
) {
super(meta, paramDef, async (ps, me) => {
// Lookup user
- const targetUser = await this.getterService.getUser(ps.userId).catch(err => {
- if (err.id === '15348ddd-432d-49c2-8a5a-8069753becff') throw new ApiError(meta.errors.noSuchUser);
- throw err;
- });
+ const targetUser = await this.cacheService.findOptionalUserById(ps.userId);
+ if (!targetUser) {
+ throw new ApiError(meta.errors.noSuchUser);
+ }
if (targetUser.id === me.id) {
throw new ApiError(meta.errors.cannotReportYourself);