diff options
| author | おさむのひと <46447427+samunohito@users.noreply.github.com> | 2025-01-14 20:14:02 +0900 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-01-14 11:14:02 +0000 |
| commit | d2e22f90507a1920c15d0b997009f52067a2a828 (patch) | |
| tree | 3bfb0ef6ab271cb48ac3fc324f0b512da210df47 /packages/backend/src/core/SystemWebhookService.ts | |
| parent | enhance: 連合モードにあわせてフロントエンドを変化させ... (diff) | |
| download | sharkey-d2e22f90507a1920c15d0b997009f52067a2a828.tar.gz sharkey-d2e22f90507a1920c15d0b997009f52067a2a828.tar.bz2 sharkey-d2e22f90507a1920c15d0b997009f52067a2a828.zip | |
refactor: SystemWebhook/UserWebhookの配信処理呼び出し部分の改善 (#15035)
* UserWebhook側の対処
* SystemWebhook側の対処
* fix test
Diffstat (limited to 'packages/backend/src/core/SystemWebhookService.ts')
| -rw-r--r-- | packages/backend/src/core/SystemWebhookService.ts | 31 |
1 files changed, 12 insertions, 19 deletions
diff --git a/packages/backend/src/core/SystemWebhookService.ts b/packages/backend/src/core/SystemWebhookService.ts index de00169612..8239490adc 100644 --- a/packages/backend/src/core/SystemWebhookService.ts +++ b/packages/backend/src/core/SystemWebhookService.ts @@ -50,7 +50,6 @@ export type SystemWebhookPayload<T extends SystemWebhookEventType> = @Injectable() export class SystemWebhookService implements OnApplicationShutdown { - private logger: Logger; private activeSystemWebhooksFetched = false; private activeSystemWebhooks: MiSystemWebhook[] = []; @@ -62,11 +61,9 @@ export class SystemWebhookService implements OnApplicationShutdown { private idService: IdService, private queueService: QueueService, private moderationLogService: ModerationLogService, - private loggerService: LoggerService, private globalEventService: GlobalEventService, ) { this.redisForSub.on('message', this.onMessage); - this.logger = this.loggerService.getLogger('webhook'); } @bindThis @@ -193,28 +190,24 @@ export class SystemWebhookService implements OnApplicationShutdown { /** * SystemWebhook をWebhook配送キューに追加する * @see QueueService.systemWebhookDeliver - * // TODO: contentの型を厳格化する */ @bindThis public async enqueueSystemWebhook<T extends SystemWebhookEventType>( - webhook: MiSystemWebhook | MiSystemWebhook['id'], type: T, content: SystemWebhookPayload<T>, + opts?: { + excludes?: MiSystemWebhook['id'][]; + }, ) { - const webhookEntity = typeof webhook === 'string' - ? (await this.fetchActiveSystemWebhooks()).find(a => a.id === webhook) - : webhook; - if (!webhookEntity || !webhookEntity.isActive) { - this.logger.info(`SystemWebhook is not active or not found : ${webhook}`); - return; - } - - if (!webhookEntity.on.includes(type)) { - this.logger.info(`SystemWebhook ${webhookEntity.id} is not listening to ${type}`); - return; - } - - return this.queueService.systemWebhookDeliver(webhookEntity, type, content); + const webhooks = await this.fetchActiveSystemWebhooks() + .then(webhooks => { + return webhooks.filter(webhook => !opts?.excludes?.includes(webhook.id) && webhook.on.includes(type)); + }); + return Promise.all( + webhooks.map(webhook => { + return this.queueService.systemWebhookDeliver(webhook, type, content); + }), + ); } @bindThis |