summaryrefslogtreecommitdiff
path: root/packages/backend/src/core/PollService.ts
diff options
context:
space:
mode:
authorsyuilo <Syuilotan@yahoo.co.jp>2023-07-21 20:36:07 +0900
committerGitHub <noreply@github.com>2023-07-21 20:36:07 +0900
commite64a81aa1d2801516e8eac8dc69aac540489f20b (patch)
tree56accbc0f5f71db864e1e975920135fb0a957291 /packages/backend/src/core/PollService.ts
parentMerge pull request #10990 from misskey-dev/develop (diff)
parentNew Crowdin updates (#11336) (diff)
downloadmisskey-e64a81aa1d2801516e8eac8dc69aac540489f20b.tar.gz
misskey-e64a81aa1d2801516e8eac8dc69aac540489f20b.tar.bz2
misskey-e64a81aa1d2801516e8eac8dc69aac540489f20b.zip
Merge pull request #11301 from misskey-dev/develop
Release: 13.14.0
Diffstat (limited to 'packages/backend/src/core/PollService.ts')
-rw-r--r--packages/backend/src/core/PollService.ts20
1 files changed, 10 insertions, 10 deletions
diff --git a/packages/backend/src/core/PollService.ts b/packages/backend/src/core/PollService.ts
index 368753d9a7..be19400052 100644
--- a/packages/backend/src/core/PollService.ts
+++ b/packages/backend/src/core/PollService.ts
@@ -39,12 +39,12 @@ export class PollService {
@bindThis
public async vote(user: User, note: Note, choice: number) {
const poll = await this.pollsRepository.findOneBy({ noteId: note.id });
-
+
if (poll == null) throw new Error('poll not found');
-
+
// Check whether is valid choice
if (poll.choices[choice] == null) throw new Error('invalid choice param');
-
+
// Check blocking
if (note.userId !== user.id) {
const blocked = await this.userBlockingService.checkBlocked(note.userId, user.id);
@@ -52,13 +52,13 @@ export class PollService {
throw new Error('blocked');
}
}
-
+
// if already voted
const exist = await this.pollVotesRepository.findBy({
noteId: note.id,
userId: user.id,
});
-
+
if (poll.multiple) {
if (exist.some(x => x.choice === choice)) {
throw new Error('already voted');
@@ -66,7 +66,7 @@ export class PollService {
} else if (exist.length !== 0) {
throw new Error('already voted');
}
-
+
// Create vote
await this.pollVotesRepository.insert({
id: this.idService.genId(),
@@ -75,11 +75,11 @@ export class PollService {
userId: user.id,
choice: choice,
});
-
+
// Increment votes count
const index = choice + 1; // In SQL, array index is 1 based
await this.pollsRepository.query(`UPDATE poll SET votes[${index}] = votes[${index}] + 1 WHERE "noteId" = '${poll.noteId}'`);
-
+
this.globalEventService.publishNoteStream(note.id, 'pollVoted', {
choice: choice,
userId: user.id,
@@ -90,10 +90,10 @@ export class PollService {
public async deliverQuestionUpdate(noteId: Note['id']) {
const note = await this.notesRepository.findOneBy({ id: noteId });
if (note == null) throw new Error('note not found');
-
+
const user = await this.usersRepository.findOneBy({ id: note.userId });
if (user == null) throw new Error('note not found');
-
+
if (this.userEntityService.isLocalUser(user)) {
const content = this.apRendererService.addContext(this.apRendererService.renderUpdate(await this.apRendererService.renderNote(note, false), user));
this.apDeliverManagerService.deliverToFollowers(user, content);