diff options
| author | syuilo <Syuilotan@yahoo.co.jp> | 2021-08-17 21:48:59 +0900 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-08-17 21:48:59 +0900 |
| commit | 7015df37e3545d835ecd71cdcd1910fbb16e80da (patch) | |
| tree | 58fe6dd4352444302dbdadb8a31d540604437495 /src/server/api/endpoints/notes/polls/vote.ts | |
| parent | Fix truncate (#7642) (diff) | |
| download | sharkey-7015df37e3545d835ecd71cdcd1910fbb16e80da.tar.gz sharkey-7015df37e3545d835ecd71cdcd1910fbb16e80da.tar.bz2 sharkey-7015df37e3545d835ecd71cdcd1910fbb16e80da.zip | |
enhance(server): Improve user block (#7640)
* enhance(server): Improve user block
* Update CHANGELOG.md
* ユーザーリスト対応
* 相手から見れなくなるように
* Update 1629004542760-chart-reindex.ts
https://github.com/misskey-dev/misskey/commit/2365761ba5445f26c8b66b3b20ef4be44e70d549#commitcomment-54919821
* update test
* add test
* add todos
* Update 1629004542760-chart-reindex.ts
Diffstat (limited to 'src/server/api/endpoints/notes/polls/vote.ts')
| -rw-r--r-- | src/server/api/endpoints/notes/polls/vote.ts | 23 |
1 files changed, 20 insertions, 3 deletions
diff --git a/src/server/api/endpoints/notes/polls/vote.ts b/src/server/api/endpoints/notes/polls/vote.ts index b40e187fd8..6f2892960f 100644 --- a/src/server/api/endpoints/notes/polls/vote.ts +++ b/src/server/api/endpoints/notes/polls/vote.ts @@ -9,7 +9,7 @@ import { deliver } from '../../../../../queue'; import { renderActivity } from '../../../../../remote/activitypub/renderer'; import renderVote from '../../../../../remote/activitypub/renderer/vote'; import { deliverQuestionUpdate } from '../../../../../services/note/polls/update'; -import { PollVotes, NoteWatchings, Users, Polls } from '../../../../../models'; +import { PollVotes, NoteWatchings, Users, Polls, Blockings } from '../../../../../models'; import { Not } from 'typeorm'; import { IRemoteUser } from '../../../../../models/entities/user'; import { genId } from '@/misc/gen-id'; @@ -61,6 +61,12 @@ export const meta = { code: 'ALREADY_EXPIRED', id: '1022a357-b085-4054-9083-8f8de358337e' }, + + youHaveBeenBlocked: { + message: 'You cannot vote this poll because you have been blocked by this user.', + code: 'YOU_HAVE_BEEN_BLOCKED', + id: '85a5377e-b1e9-4617-b0b9-5bea73331e49' + }, } }; @@ -77,6 +83,17 @@ export default define(meta, async (ps, user) => { throw new ApiError(meta.errors.noPoll); } + // Check blocking + if (note.userId !== user.id) { + const block = await Blockings.findOne({ + blockerId: note.userId, + blockeeId: user.id, + }); + if (block) { + throw new ApiError(meta.errors.youHaveBeenBlocked); + } + } + const poll = await Polls.findOneOrFail({ noteId: note.id }); if (poll.expiresAt && poll.expiresAt < createdAt) { @@ -103,13 +120,13 @@ export default define(meta, async (ps, user) => { } // Create vote - const vote = await PollVotes.save({ + const vote = await PollVotes.insert({ id: genId(), createdAt, noteId: note.id, userId: user.id, choice: ps.choice - }); + }).then(x => PollVotes.findOneOrFail(x.identifiers[0])); // Increment votes count const index = ps.choice + 1; // In SQL, array index is 1 based |