summaryrefslogtreecommitdiff
path: root/packages/backend/src/services/following/create.ts
diff options
context:
space:
mode:
authorsyuilo <Syuilotan@yahoo.co.jp>2022-04-02 15:28:49 +0900
committerGitHub <noreply@github.com>2022-04-02 15:28:49 +0900
commit8e5f2690f29b7e6bee95e54a8bb647ff1ff4b94a (patch)
tree78740472dc48e4fec6986056f548e4ee7743cc29 /packages/backend/src/services/following/create.ts
parentUpdate CHANGELOG.md (diff)
downloadmisskey-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.ts24
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', {