From f6c68ec29c633807987b368e9f6845d80707929b Mon Sep 17 00:00:00 2001 From: Ajay Date: Mon, 19 Sep 2022 11:56:55 -0400 Subject: [PATCH] Add another option to get chapters submitting permission --- src/utils/permissions.ts | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/utils/permissions.ts b/src/utils/permissions.ts index ebd727a..936a88e 100644 --- a/src/utils/permissions.ts +++ b/src/utils/permissions.ts @@ -12,11 +12,19 @@ interface CanSubmitResult { reason?: string; } +async function lowDownvotes(userID: HashedUserID): Promise { + const result = await db.prepare("get", `SELECT count(*) as "submissionCount", SUM(CASE WHEN "votes" < 0 AND "views" > 5 THEN 1 ELSE 0 END) AS "downvotedSubmissions" FROM "sponsorTimes" WHERE "userID" = ?` + , [userID], { useReplica: true }); + + return result.submissionCount > 100 && result.downvotedSubmissions / result.submissionCount < 0.15; +} + export async function canSubmit(userID: HashedUserID, category: Category): Promise { switch (category) { case "chapter": return { canSubmit: await oneOf([isUserVIP(userID), + lowDownvotes(userID), (async () => (await getReputation(userID)) > config.minReputationToSubmitChapter)(), hasFeature(userID, Feature.ChapterSubmitter) ])