mirror of
https://github.com/ajayyy/SponsorBlockServer.git
synced 2025-12-08 20:47:02 +03:00
Free chapters
This commit is contained in:
@@ -8,7 +8,6 @@ import { getReputation } from "../utils/reputation";
|
|||||||
import { Category, SegmentUUID } from "../types/segments.model";
|
import { Category, SegmentUUID } from "../types/segments.model";
|
||||||
import { config } from "../config";
|
import { config } from "../config";
|
||||||
import { canSubmit } from "../utils/permissions";
|
import { canSubmit } from "../utils/permissions";
|
||||||
import { oneOf } from "../utils/promise";
|
|
||||||
const maxRewardTime = config.maxRewardTimePerSegmentInSeconds;
|
const maxRewardTime = config.maxRewardTimePerSegmentInSeconds;
|
||||||
|
|
||||||
async function dbGetSubmittedSegmentSummary(userID: HashedUserID): Promise<{ minutesSaved: number, segmentCount: number }> {
|
async function dbGetSubmittedSegmentSummary(userID: HashedUserID): Promise<{ minutesSaved: number, segmentCount: number }> {
|
||||||
@@ -116,12 +115,6 @@ async function getPermissions(userID: HashedUserID): Promise<Record<string, bool
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
async function getFreeChaptersAccess(userID: HashedUserID): Promise<boolean> {
|
|
||||||
return await oneOf([isUserVIP(userID),
|
|
||||||
(async () => !!(await db.prepare("get", `SELECT "timeSubmitted" FROM "sponsorTimes" WHERE "timeSubmitted" < 1666126187000 AND "userID" = ? LIMIT 1`, [userID], { useReplica: true })))()
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
|
|
||||||
type cases = Record<string, any>
|
type cases = Record<string, any>
|
||||||
|
|
||||||
const executeIfFunction = (f: any) =>
|
const executeIfFunction = (f: any) =>
|
||||||
@@ -147,7 +140,7 @@ const dbGetValue = (userID: HashedUserID, property: string): Promise<string|Segm
|
|||||||
vip: () => isUserVIP(userID),
|
vip: () => isUserVIP(userID),
|
||||||
lastSegmentID: () => dbGetLastSegmentForUser(userID),
|
lastSegmentID: () => dbGetLastSegmentForUser(userID),
|
||||||
permissions: () => getPermissions(userID),
|
permissions: () => getPermissions(userID),
|
||||||
freeChaptersAccess: () => getFreeChaptersAccess(userID)
|
freeChaptersAccess: () => true
|
||||||
})("")(property);
|
})("")(property);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ async function lowDownvotes(userID: HashedUserID): Promise<boolean> {
|
|||||||
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" = ?`
|
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 });
|
, [userID], { useReplica: true });
|
||||||
|
|
||||||
return result.submissionCount > 100 && result.downvotedSubmissions / result.submissionCount < 0.15;
|
return result.submissionCount > 10 && result.downvotedSubmissions / result.submissionCount < 0.15;
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function canSubmit(userID: HashedUserID, category: Category): Promise<CanSubmitResult> {
|
export async function canSubmit(userID: HashedUserID, category: Category): Promise<CanSubmitResult> {
|
||||||
|
|||||||
Reference in New Issue
Block a user