Merge pull request '[PR]: fix: take invalid expiresAt of polls as null' (#10279) from nmkj/calckey:fix-poll-expire into develop

Reviewed-on: https://codeberg.org/calckey/calckey/pulls/10279
This commit is contained in:
Kainoa Kanter 2023-06-08 16:46:14 +00:00
commit cfa339a51b
2 changed files with 16 additions and 4 deletions

View file

@ -34,6 +34,9 @@ export default async (job: Bull.Job<InboxJobData>): Promise<string> => {
const info = Object.assign({}, activity) as any;
info["@context"] = undefined;
logger.debug(JSON.stringify(info, null, 2));
if (!signature?.keyId) return `Invalid signature: ${signature}`;
//#endregion
const host = toPuny(new URL(signature.keyId).hostname);

View file

@ -718,14 +718,23 @@ async function insertNote(
if (insert.hasPoll) {
// Start transaction
await db.transaction(async (transactionalEntityManager) => {
if (!data.poll) throw new Error("Empty poll data");
await transactionalEntityManager.insert(Note, insert);
let expiresAt: Date | null;
if (!data.poll.expiresAt || isNaN(data.poll.expiresAt.getTime())) {
expiresAt = null;
} else {
expiresAt = data.poll.expiresAt;
}
const poll = new Poll({
noteId: insert.id,
choices: data.poll!.choices,
expiresAt: data.poll!.expiresAt,
multiple: data.poll!.multiple,
votes: new Array(data.poll!.choices.length).fill(0),
choices: data.poll.choices,
expiresAt,
multiple: data.poll.multiple,
votes: new Array(data.poll.choices.length).fill(0),
noteVisibility: insert.visibility,
userId: user.id,
userHost: user.host,