diff options
| author | syuilo <syuilotan@yahoo.co.jp> | 2018-04-08 02:30:37 +0900 |
|---|---|---|
| committer | syuilo <syuilotan@yahoo.co.jp> | 2018-04-08 02:30:37 +0900 |
| commit | a1b490afa756a71b9cef4afa424575bc223bc612 (patch) | |
| tree | 06de4d839e17b1e08e0891542af7360c701a154a /src/server/api/endpoints/posts/polls | |
| parent | Merge pull request #1392 from syuilo/greenkeeper/element-ui-2.3.3 (diff) | |
| download | sharkey-a1b490afa756a71b9cef4afa424575bc223bc612.tar.gz sharkey-a1b490afa756a71b9cef4afa424575bc223bc612.tar.bz2 sharkey-a1b490afa756a71b9cef4afa424575bc223bc612.zip | |
Post --> Note
Closes #1411
Diffstat (limited to 'src/server/api/endpoints/posts/polls')
| -rw-r--r-- | src/server/api/endpoints/posts/polls/recommendation.ts | 59 | ||||
| -rw-r--r-- | src/server/api/endpoints/posts/polls/vote.ts | 115 |
2 files changed, 0 insertions, 174 deletions
diff --git a/src/server/api/endpoints/posts/polls/recommendation.ts b/src/server/api/endpoints/posts/polls/recommendation.ts deleted file mode 100644 index d706742618..0000000000 --- a/src/server/api/endpoints/posts/polls/recommendation.ts +++ /dev/null @@ -1,59 +0,0 @@ -/** - * Module dependencies - */ -import $ from 'cafy'; -import Vote from '../../../../../models/poll-vote'; -import Post, { pack } from '../../../../../models/post'; - -/** - * Get recommended polls - * - * @param {any} params - * @param {any} user - * @return {Promise<any>} - */ -module.exports = (params, user) => new Promise(async (res, rej) => { - // Get 'limit' parameter - const [limit = 10, limitErr] = $(params.limit).optional.number().range(1, 100).$; - if (limitErr) return rej('invalid limit param'); - - // Get 'offset' parameter - const [offset = 0, offsetErr] = $(params.offset).optional.number().min(0).$; - if (offsetErr) return rej('invalid offset param'); - - // Get votes - const votes = await Vote.find({ - userId: user._id - }, { - fields: { - _id: false, - postId: true - } - }); - - const nin = votes && votes.length != 0 ? votes.map(v => v.postId) : []; - - const posts = await Post - .find({ - _id: { - $nin: nin - }, - userId: { - $ne: user._id - }, - poll: { - $exists: true, - $ne: null - } - }, { - limit: limit, - skip: offset, - sort: { - _id: -1 - } - }); - - // Serialize - res(await Promise.all(posts.map(async post => - await pack(post, user, { detail: true })))); -}); diff --git a/src/server/api/endpoints/posts/polls/vote.ts b/src/server/api/endpoints/posts/polls/vote.ts deleted file mode 100644 index c270cd09ab..0000000000 --- a/src/server/api/endpoints/posts/polls/vote.ts +++ /dev/null @@ -1,115 +0,0 @@ -/** - * Module dependencies - */ -import $ from 'cafy'; -import Vote from '../../../../../models/poll-vote'; -import Post from '../../../../../models/post'; -import Watching from '../../../../../models/post-watching'; -import watch from '../../../../../post/watch'; -import { publishPostStream } from '../../../../../publishers/stream'; -import notify from '../../../../../publishers/notify'; - -/** - * Vote poll of a post - * - * @param {any} params - * @param {any} user - * @return {Promise<any>} - */ -module.exports = (params, user) => new Promise(async (res, rej) => { - // Get 'postId' parameter - const [postId, postIdErr] = $(params.postId).id().$; - if (postIdErr) return rej('invalid postId param'); - - // Get votee - const post = await Post.findOne({ - _id: postId - }); - - if (post === null) { - return rej('post not found'); - } - - if (post.poll == null) { - return rej('poll not found'); - } - - // Get 'choice' parameter - const [choice, choiceError] = - $(params.choice).number() - .pipe(c => post.poll.choices.some(x => x.id == c)) - .$; - if (choiceError) return rej('invalid choice param'); - - // if already voted - const exist = await Vote.findOne({ - postId: post._id, - userId: user._id - }); - - if (exist !== null) { - return rej('already voted'); - } - - // Create vote - await Vote.insert({ - createdAt: new Date(), - postId: post._id, - userId: user._id, - choice: choice - }); - - // Send response - res(); - - const inc = {}; - inc[`poll.choices.${findWithAttr(post.poll.choices, 'id', choice)}.votes`] = 1; - - // Increment votes count - await Post.update({ _id: post._id }, { - $inc: inc - }); - - publishPostStream(post._id, 'poll_voted'); - - // Notify - notify(post.userId, user._id, 'poll_vote', { - postId: post._id, - choice: choice - }); - - // Fetch watchers - Watching - .find({ - postId: post._id, - userId: { $ne: user._id }, - // 削除されたドキュメントは除く - deletedAt: { $exists: false } - }, { - fields: { - userId: true - } - }) - .then(watchers => { - watchers.forEach(watcher => { - notify(watcher.userId, user._id, 'poll_vote', { - postId: post._id, - choice: choice - }); - }); - }); - - // この投稿をWatchする - if (user.account.settings.autoWatch !== false) { - watch(user._id, post); - } -}); - -function findWithAttr(array, attr, value) { - for (let i = 0; i < array.length; i += 1) { - if (array[i][attr] === value) { - return i; - } - } - return -1; -} |