24 lines
786 B
JavaScript
24 lines
786 B
JavaScript
export class PollConverter {
|
|
static encode(p, noteId, emojis) {
|
|
const now = new Date();
|
|
const count = p.choices.reduce((sum, choice)=>sum + choice.votes, 0);
|
|
return {
|
|
id: noteId,
|
|
expires_at: p.expiresAt?.toISOString() ?? null,
|
|
expired: p.expiresAt == null ? false : now > p.expiresAt,
|
|
multiple: p.multiple,
|
|
votes_count: count,
|
|
options: p.choices.map((c)=>this.encodeChoice(c)),
|
|
emojis: emojis,
|
|
voted: p.choices.some((c)=>c.isVoted),
|
|
own_votes: p.choices.filter((c)=>c.isVoted).map((c)=>p.choices.indexOf(c))
|
|
};
|
|
}
|
|
static encodeChoice(c) {
|
|
return {
|
|
title: c.text,
|
|
votes_count: c.votes
|
|
};
|
|
}
|
|
}
|