Fixed 267U.pre2
This commit is contained in:
@@ -0,0 +1,35 @@
|
||||
import { Notes, PollVotes } from "../../models/index.js";
|
||||
import { createNotification } from "../../services/create-notification.js";
|
||||
import { deliverQuestionUpdate } from "../../services/note/polls/update.js";
|
||||
import { createQueue } from "./index.js";
|
||||
async function process(job) {
|
||||
if (job.data == null || Object.keys(job.data).length === 0) {
|
||||
job.opts.removeOnComplete = true;
|
||||
return "skip: corrupt job";
|
||||
}
|
||||
const note = await Notes.findOneBy({
|
||||
id: job.data.noteId
|
||||
});
|
||||
if (note == null || !note.hasPoll) {
|
||||
return "skip: note not found";
|
||||
}
|
||||
const votes = await PollVotes.createQueryBuilder("vote").select("vote.userId").where("vote.noteId = :noteId", {
|
||||
noteId: note.id
|
||||
}).innerJoinAndSelect("vote.user", "user").andWhere("user.host IS NULL").getMany();
|
||||
const userIds = [
|
||||
...new Set([
|
||||
note.userId,
|
||||
...votes.map((v)=>v.userId)
|
||||
])
|
||||
];
|
||||
for (const userId of userIds){
|
||||
createNotification(userId, "pollEnded", {
|
||||
note: note,
|
||||
noteId: note.id
|
||||
});
|
||||
}
|
||||
// Broadcast the poll result once it ends
|
||||
if (!note.localOnly) await deliverQuestionUpdate(note.id);
|
||||
return "complete";
|
||||
}
|
||||
export const [endedPollNotificationQueue, endedPollNotificationInit] = createQueue("endedPollNotification", process);
|
||||
Reference in New Issue
Block a user