summaryrefslogtreecommitdiff
path: root/packages/backend/src/core/SystemWebhookService.ts
diff options
context:
space:
mode:
authorおさむのひと <46447427+samunohito@users.noreply.github.com>2024-11-19 10:41:39 +0900
committerGitHub <noreply@github.com>2024-11-19 10:41:39 +0900
commit7b9c884a5d550b126c627fac18064fc3a8ca177a (patch)
tree8d420f0c9c1adcb170ca39b7a88c327391d7e7f2 /packages/backend/src/core/SystemWebhookService.ts
parentリノートメニューに「リノートの詳細」を追加 (#14985) (diff)
downloadsharkey-7b9c884a5d550b126c627fac18064fc3a8ca177a.tar.gz
sharkey-7b9c884a5d550b126c627fac18064fc3a8ca177a.tar.bz2
sharkey-7b9c884a5d550b126c627fac18064fc3a8ca177a.zip
refactor(backend): SystemWebhookで送信されるペイロードの型を追加 (#14980)
Diffstat (limited to 'packages/backend/src/core/SystemWebhookService.ts')
-rw-r--r--packages/backend/src/core/SystemWebhookService.ts33
1 files changed, 32 insertions, 1 deletions
diff --git a/packages/backend/src/core/SystemWebhookService.ts b/packages/backend/src/core/SystemWebhookService.ts
index db6407dcb3..de00169612 100644
--- a/packages/backend/src/core/SystemWebhookService.ts
+++ b/packages/backend/src/core/SystemWebhookService.ts
@@ -15,8 +15,39 @@ import { QueueService } from '@/core/QueueService.js';
import { ModerationLogService } from '@/core/ModerationLogService.js';
import { LoggerService } from '@/core/LoggerService.js';
import Logger from '@/logger.js';
+import { Packed } from '@/misc/json-schema.js';
+import { AbuseReportResolveType } from '@/models/AbuseUserReport.js';
+import { ModeratorInactivityRemainingTime } from '@/queue/processors/CheckModeratorsActivityProcessorService.js';
import type { OnApplicationShutdown } from '@nestjs/common';
+export type AbuseReportPayload = {
+ id: string;
+ targetUserId: string;
+ targetUser: Packed<'UserLite'> | null;
+ targetUserHost: string | null;
+ reporterId: string;
+ reporter: Packed<'UserLite'> | null;
+ reporterHost: string | null;
+ assigneeId: string | null;
+ assignee: Packed<'UserLite'> | null;
+ resolved: boolean;
+ forwarded: boolean;
+ comment: string;
+ moderationNote: string;
+ resolvedAs: AbuseReportResolveType | null;
+};
+
+export type InactiveModeratorsWarningPayload = {
+ remainingTime: ModeratorInactivityRemainingTime;
+};
+
+export type SystemWebhookPayload<T extends SystemWebhookEventType> =
+ T extends 'abuseReport' | 'abuseReportResolved' ? AbuseReportPayload :
+ T extends 'userCreated' ? Packed<'UserLite'> :
+ T extends 'inactiveModeratorsWarning' ? InactiveModeratorsWarningPayload :
+ T extends 'inactiveModeratorsInvitationOnlyChanged' ? Record<string, never> :
+ never;
+
@Injectable()
export class SystemWebhookService implements OnApplicationShutdown {
private logger: Logger;
@@ -168,7 +199,7 @@ export class SystemWebhookService implements OnApplicationShutdown {
public async enqueueSystemWebhook<T extends SystemWebhookEventType>(
webhook: MiSystemWebhook | MiSystemWebhook['id'],
type: T,
- content: unknown,
+ content: SystemWebhookPayload<T>,
) {
const webhookEntity = typeof webhook === 'string'
? (await this.fetchActiveSystemWebhooks()).find(a => a.id === webhook)