diff options
| author | syuilo <syuilotan@yahoo.co.jp> | 2018-04-19 12:43:25 +0900 |
|---|---|---|
| committer | syuilo <syuilotan@yahoo.co.jp> | 2018-04-19 12:43:25 +0900 |
| commit | 0d5bc3be6611a6877a71233ac57c0987027c0398 (patch) | |
| tree | 28c6b736dc870b6de5893ee52b712c20973b7298 /src/services/note | |
| parent | Merge pull request #1514 from syuilo/greenkeeper/style-loader-0.21.0 (diff) | |
| download | misskey-0d5bc3be6611a6877a71233ac57c0987027c0398.tar.gz misskey-0d5bc3be6611a6877a71233ac57c0987027c0398.tar.bz2 misskey-0d5bc3be6611a6877a71233ac57c0987027c0398.zip | |
ストーキング実装
Closes #1511
Diffstat (limited to 'src/services/note')
| -rw-r--r-- | src/services/note/create.ts | 24 |
1 files changed, 8 insertions, 16 deletions
diff --git a/src/services/note/create.ts b/src/services/note/create.ts index bdef5e09fc..32db77011f 100644 --- a/src/services/note/create.ts +++ b/src/services/note/create.ts @@ -124,19 +124,8 @@ export default async (user: IUser, data: { publishGlobalTimelineStream(noteObj); // Fetch all followers - const followers = await Following.aggregate([{ - $lookup: { - from: 'users', - localField: 'followerId', - foreignField: '_id', - as: 'user' - } - }, { - $match: { - followeeId: note.userId - } - }], { - _id: false + const followers = await Following.find({ + followeeId: note.userId }); if (!silent) { @@ -157,12 +146,15 @@ export default async (user: IUser, data: { deliver(user, await render(), data.renote._user.inbox); } - Promise.all(followers.map(async follower => { - follower = follower.user[0]; + Promise.all(followers.map(async following => { + const follower = following._follower; if (isLocalUser(follower)) { + // この投稿が返信かつstalkフォローでないならスキップ + if (note.replyId && !following.stalk) return; + // Publish event to followers stream - stream(follower._id, 'note', noteObj); + stream(following.followerId, 'note', noteObj); } else { // フォロワーがリモートユーザーかつ投稿者がローカルユーザーなら投稿を配信 if (isLocalUser(user)) { |