summaryrefslogtreecommitdiff
path: root/src/services
diff options
context:
space:
mode:
authorsyuilo <Syuilotan@yahoo.co.jp>2018-09-01 21:38:49 +0900
committerGitHub <noreply@github.com>2018-09-01 21:38:49 +0900
commit4b1886990f7de0a1b993b2f3f17c3ee99f78a5ec (patch)
tree15426a39bf9b6d30c1ddb50a61e070d5bda6300a /src/services
parent8.20.0 (diff)
parentSend Update activity (diff)
downloadmisskey-4b1886990f7de0a1b993b2f3f17c3ee99f78a5ec.tar.gz
misskey-4b1886990f7de0a1b993b2f3f17c3ee99f78a5ec.tar.bz2
misskey-4b1886990f7de0a1b993b2f3f17c3ee99f78a5ec.zip
Merge pull request #2570 from mei23/mei-0901-update2b
Implement ActivityPub Update(Person)
Diffstat (limited to 'src/services')
-rw-r--r--src/services/i/update.ts38
1 files changed, 38 insertions, 0 deletions
diff --git a/src/services/i/update.ts b/src/services/i/update.ts
new file mode 100644
index 0000000000..25b55b0355
--- /dev/null
+++ b/src/services/i/update.ts
@@ -0,0 +1,38 @@
+import * as mongo from 'mongodb';
+import User, { isLocalUser, isRemoteUser } from '../../models/user';
+import Following from '../../models/following';
+import renderPerson from '../../remote/activitypub/renderer/person';
+import renderUpdate from '../../remote/activitypub/renderer/update';
+import packAp from '../../remote/activitypub/renderer';
+import { deliver } from '../../queue';
+
+export async function publishToFollowers(userId: mongo.ObjectID) {
+ const user = await User.findOne({
+ _id: userId
+ });
+
+ const followers = await Following.find({
+ followeeId: user._id
+ });
+
+ const queue: string[] = [];
+
+ // フォロワーがリモートユーザーかつ投稿者がローカルユーザーならUpdateを配信
+ if (isLocalUser(user)) {
+ followers.map(following => {
+ const follower = following._follower;
+
+ if (isRemoteUser(follower)) {
+ const inbox = follower.sharedInbox || follower.inbox;
+ if (!queue.includes(inbox)) queue.push(inbox);
+ }
+ });
+
+ if (queue.length > 0) {
+ const content = packAp(renderUpdate(await renderPerson(user), user));
+ queue.forEach(inbox => {
+ deliver(user, content, inbox);
+ });
+ }
+ }
+}