diff options
| author | syuilo <Syuilotan@yahoo.co.jp> | 2018-09-01 21:38:49 +0900 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2018-09-01 21:38:49 +0900 |
| commit | 4b1886990f7de0a1b993b2f3f17c3ee99f78a5ec (patch) | |
| tree | 15426a39bf9b6d30c1ddb50a61e070d5bda6300a /src/services | |
| parent | 8.20.0 (diff) | |
| parent | Send Update activity (diff) | |
| download | misskey-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.ts | 38 |
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); + }); + } + } +} |