diff options
| author | syuilo <Syuilotan@yahoo.co.jp> | 2022-04-02 15:28:49 +0900 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-04-02 15:28:49 +0900 |
| commit | 8e5f2690f29b7e6bee95e54a8bb647ff1ff4b94a (patch) | |
| tree | 78740472dc48e4fec6986056f548e4ee7743cc29 /packages/backend/src/services/following/create.ts | |
| parent | Update CHANGELOG.md (diff) | |
| download | misskey-8e5f2690f29b7e6bee95e54a8bb647ff1ff4b94a.tar.gz misskey-8e5f2690f29b7e6bee95e54a8bb647ff1ff4b94a.tar.bz2 misskey-8e5f2690f29b7e6bee95e54a8bb647ff1ff4b94a.zip | |
feat: Webhook (#8457)
* feat: introduce webhook
* wip
* wip
* wip
* Update CHANGELOG.md
Diffstat (limited to 'packages/backend/src/services/following/create.ts')
| -rw-r--r-- | packages/backend/src/services/following/create.ts | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/packages/backend/src/services/following/create.ts b/packages/backend/src/services/following/create.ts index 0daf30ddad..d243317d97 100644 --- a/packages/backend/src/services/following/create.ts +++ b/packages/backend/src/services/following/create.ts @@ -15,6 +15,8 @@ import { genId } from '@/misc/gen-id.js'; import { createNotification } from '../create-notification.js'; import { isDuplicateKeyValueError } from '@/misc/is-duplicate-key-value-error.js'; import { Packed } from '@/misc/schema.js'; +import { getActiveWebhooks } from '@/misc/webhook-cache.js'; +import { webhookDeliver } from '@/queue/index.js'; const logger = new Logger('following/create'); @@ -89,15 +91,33 @@ export async function insertFollowingDoc(followee: { id: User['id']; host: User[ if (Users.isLocalUser(follower)) { Users.pack(followee.id, follower, { detail: true, - }).then(packed => { + }).then(async packed => { publishUserEvent(follower.id, 'follow', packed as Packed<"UserDetailedNotMe">); publishMainStream(follower.id, 'follow', packed as Packed<"UserDetailedNotMe">); + + const webhooks = (await getActiveWebhooks()).filter(x => x.userId === follower.id && x.on.includes('follow')); + for (const webhook of webhooks) { + webhookDeliver(webhook, { + type: 'follow', + user: packed, + }); + } }); } // Publish followed event if (Users.isLocalUser(followee)) { - Users.pack(follower.id, followee).then(packed => publishMainStream(followee.id, 'followed', packed)); + Users.pack(follower.id, followee).then(async packed => { + publishMainStream(followee.id, 'followed', packed) + + const webhooks = (await getActiveWebhooks()).filter(x => x.userId === followee.id && x.on.includes('followed')); + for (const webhook of webhooks) { + webhookDeliver(webhook, { + type: 'followed', + user: packed, + }); + } + }); // 通知を作成 createNotification(followee.id, 'follow', { |