UserWebhookPayload<'followed'> 修正

Signed-off-by: eternal-flame-AD <yume@yumechi.jp>
This commit is contained in:
eternal-flame-AD 2024-11-11 18:08:40 -06:00
parent f60335c043
commit fd2fa3ca9e
No known key found for this signature in database
3 changed files with 17 additions and 14 deletions

View file

@ -469,10 +469,10 @@ export class QueueService {
* @see UserWebhookDeliverProcessorService * @see UserWebhookDeliverProcessorService
*/ */
@bindThis @bindThis
public userWebhookDeliver( public userWebhookDeliver<T extends WebhookEventTypes>(
webhook: MiWebhook, webhook: MiWebhook,
type: typeof webhookEventTypes[number], type: T,
content: UserWebhookPayload<WebhookEventTypes>, content: UserWebhookPayload<T>,
opts?: { attempts?: number }, opts?: { attempts?: number },
) { ) {
const data: UserWebhookDeliverJobData = { const data: UserWebhookDeliverJobData = {

View file

@ -17,8 +17,11 @@ export type UserWebhookPayload<T extends WebhookEventTypes> =
T extends 'note' | 'reply' | 'renote' |'mention' ? { T extends 'note' | 'reply' | 'renote' |'mention' ? {
note: Packed<'Note'>, note: Packed<'Note'>,
} : } :
T extends 'follow' | 'followed' | 'unfollow' ? { T extends 'follow' | 'unfollow' ? {
user: Packed<'User'>, user: Packed<'UserDetailedNotMe'>,
} :
T extends 'followed' ? {
user: Packed<'UserLite'>,
} : never; } : never;
@Injectable() @Injectable()

View file

@ -321,7 +321,7 @@ export class WebhookTestService {
} }
const webhook = webhooks[0]; const webhook = webhooks[0];
const send = <U extends WebhookEventTypes>(contents: UserWebhookPayload<U>) => { const send = <U extends WebhookEventTypes>(type: U, contents: UserWebhookPayload<U>) => {
const merged = { const merged = {
...webhook, ...webhook,
...params.override, ...params.override,
@ -329,7 +329,7 @@ export class WebhookTestService {
// テスト目的なのでUserWebhookServiceの機能を経由せず直接キューに追加するチェック処理などをスキップする意図. // テスト目的なのでUserWebhookServiceの機能を経由せず直接キューに追加するチェック処理などをスキップする意図.
// また、Jobの試行回数も1回だけ. // また、Jobの試行回数も1回だけ.
this.queueService.userWebhookDeliver(merged, params.type, contents, { attempts: 1 }); this.queueService.userWebhookDeliver(merged, type, contents, { attempts: 1 });
}; };
const dummyNote1 = generateDummyNote({ const dummyNote1 = generateDummyNote({
@ -361,31 +361,31 @@ export class WebhookTestService {
switch (params.type) { switch (params.type) {
case 'note': { case 'note': {
send({ note: toPackedNote(dummyNote1) }); send('note', { note: toPackedNote(dummyNote1) });
break; break;
} }
case 'reply': { case 'reply': {
send({ note: toPackedNote(dummyReply1) }); send('reply', { note: toPackedNote(dummyReply1) });
break; break;
} }
case 'renote': { case 'renote': {
send({ note: toPackedNote(dummyRenote1) }); send('renote', { note: toPackedNote(dummyRenote1) });
break; break;
} }
case 'mention': { case 'mention': {
send({ note: toPackedNote(dummyMention1) }); send('mention', { note: toPackedNote(dummyMention1) });
break; break;
} }
case 'follow': { case 'follow': {
send({ user: toPackedUserDetailedNotMe(dummyUser1) }); send('follow', { user: toPackedUserDetailedNotMe(dummyUser1) });
break; break;
} }
case 'followed': { case 'followed': {
send({ user: toPackedUserDetailedNotMe(dummyUser2) }); send('followed', { user: toPackedUserLite(dummyUser2) });
break; break;
} }
case 'unfollow': { case 'unfollow': {
send({ user: toPackedUserDetailedNotMe(dummyUser3) }); send('unfollow', { user: toPackedUserDetailedNotMe(dummyUser3) });
break; break;
} }
// まだ実装されていない (#9485) // まだ実装されていない (#9485)