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/blocking/create.ts | |
| parent | Update CHANGELOG.md (diff) | |
| download | sharkey-8e5f2690f29b7e6bee95e54a8bb647ff1ff4b94a.tar.gz sharkey-8e5f2690f29b7e6bee95e54a8bb647ff1ff4b94a.tar.bz2 sharkey-8e5f2690f29b7e6bee95e54a8bb647ff1ff4b94a.zip | |
feat: Webhook (#8457)
* feat: introduce webhook
* wip
* wip
* wip
* Update CHANGELOG.md
Diffstat (limited to 'packages/backend/src/services/blocking/create.ts')
| -rw-r--r-- | packages/backend/src/services/blocking/create.ts | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/packages/backend/src/services/blocking/create.ts b/packages/backend/src/services/blocking/create.ts index 86c7d7967b..5c67190079 100644 --- a/packages/backend/src/services/blocking/create.ts +++ b/packages/backend/src/services/blocking/create.ts @@ -10,6 +10,8 @@ import { Blockings, Users, FollowRequests, Followings, UserListJoinings, UserLis import { perUserFollowingChart } from '@/services/chart/index.js'; import { genId } from '@/misc/gen-id.js'; import { IdentifiableError } from '@/misc/identifiable-error.js'; +import { getActiveWebhooks } from '@/misc/webhook-cache.js'; +import { webhookDeliver } from '@/queue/index.js'; export default async function(blocker: User, blockee: User) { await Promise.all([ @@ -57,9 +59,17 @@ async function cancelRequest(follower: User, followee: User) { if (Users.isLocalUser(follower)) { Users.pack(followee, follower, { detail: true, - }).then(packed => { + }).then(async packed => { publishUserEvent(follower.id, 'unfollow', packed); publishMainStream(follower.id, 'unfollow', packed); + + const webhooks = (await getActiveWebhooks()).filter(x => x.userId === follower.id && x.on.includes('unfollow')); + for (const webhook of webhooks) { + webhookDeliver(webhook, { + type: 'unfollow', + user: packed, + }); + } }); } @@ -102,9 +112,17 @@ async function unFollow(follower: User, followee: User) { if (Users.isLocalUser(follower)) { Users.pack(followee, follower, { detail: true, - }).then(packed => { + }).then(async packed => { publishUserEvent(follower.id, 'unfollow', packed); publishMainStream(follower.id, 'unfollow', packed); + + const webhooks = (await getActiveWebhooks()).filter(x => x.userId === follower.id && x.on.includes('unfollow')); + for (const webhook of webhooks) { + webhookDeliver(webhook, { + type: 'unfollow', + user: packed, + }); + } }); } |