mirror of
https://github.com/ajayyy/SponsorBlockServer.git
synced 2025-12-15 16:07:03 +03:00
Merge pull request #326 from mchangrh/reenable-warning
re-enable warning if still within issue time
This commit is contained in:
@@ -4,6 +4,22 @@ import {db} from "../databases/databases";
|
|||||||
import {isUserVIP} from "../utils/isUserVIP";
|
import {isUserVIP} from "../utils/isUserVIP";
|
||||||
import {getHash} from "../utils/getHash";
|
import {getHash} from "../utils/getHash";
|
||||||
import { HashedUserID, UserID } from "../types/user.model";
|
import { HashedUserID, UserID } from "../types/user.model";
|
||||||
|
import { config } from "../config";
|
||||||
|
|
||||||
|
type warningEntry = {
|
||||||
|
userID: HashedUserID,
|
||||||
|
issueTime: number,
|
||||||
|
issuerUserID: HashedUserID,
|
||||||
|
enabled: boolean,
|
||||||
|
reason: string
|
||||||
|
}
|
||||||
|
|
||||||
|
function checkExpiredWarning(warning: warningEntry): boolean {
|
||||||
|
const MILLISECONDS_IN_HOUR = 3600000;
|
||||||
|
const now = Date.now();
|
||||||
|
const expiry = Math.floor(now - (config.hoursAfterWarningExpires * MILLISECONDS_IN_HOUR));
|
||||||
|
return warning.issueTime > expiry && !warning.enabled;
|
||||||
|
}
|
||||||
|
|
||||||
export async function postWarning(req: Request, res: Response): Promise<Response> {
|
export async function postWarning(req: Request, res: Response): Promise<Response> {
|
||||||
// exit early if no body passed in
|
// exit early if no body passed in
|
||||||
@@ -24,7 +40,7 @@ export async function postWarning(req: Request, res: Response): Promise<Response
|
|||||||
let resultStatus = "";
|
let resultStatus = "";
|
||||||
|
|
||||||
if (enabled) {
|
if (enabled) {
|
||||||
const previousWarning = await db.prepare("get", 'SELECT * FROM "warnings" WHERE "userID" = ? AND "issuerUserID" = ?', [userID, issuerUserID]);
|
const previousWarning = await db.prepare("get", 'SELECT * FROM "warnings" WHERE "userID" = ? AND "issuerUserID" = ?', [userID, issuerUserID]) as warningEntry;
|
||||||
|
|
||||||
if (!previousWarning) {
|
if (!previousWarning) {
|
||||||
await db.prepare(
|
await db.prepare(
|
||||||
@@ -33,6 +49,13 @@ export async function postWarning(req: Request, res: Response): Promise<Response
|
|||||||
[userID, issueTime, issuerUserID, reason]
|
[userID, issueTime, issuerUserID, reason]
|
||||||
);
|
);
|
||||||
resultStatus = "issued to";
|
resultStatus = "issued to";
|
||||||
|
// check if warning is still within issue time and warning is not enabled
|
||||||
|
} else if (checkExpiredWarning(previousWarning) ) {
|
||||||
|
await db.prepare(
|
||||||
|
"run", 'UPDATE "warnings" SET "enabled" = 1 WHERE "userID" = ? AND "issueTime" = ?',
|
||||||
|
[userID, previousWarning.issueTime]
|
||||||
|
);
|
||||||
|
resultStatus = "re-enabled";
|
||||||
} else {
|
} else {
|
||||||
return res.sendStatus(409);
|
return res.sendStatus(409);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -112,4 +112,27 @@ describe("postWarning", () => {
|
|||||||
})
|
})
|
||||||
.catch(err => done(err));
|
.catch(err => done(err));
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("Should re-enable disabled warning", (done: Done) => {
|
||||||
|
const json = {
|
||||||
|
issuerUserID: "warning-vip",
|
||||||
|
userID: "warning-0",
|
||||||
|
enabled: true
|
||||||
|
};
|
||||||
|
|
||||||
|
fetch(`${getbaseURL()}/api/warnUser`, {
|
||||||
|
method: "POST",
|
||||||
|
headers: {
|
||||||
|
"Content-Type": "application/json",
|
||||||
|
},
|
||||||
|
body: JSON.stringify(json),
|
||||||
|
})
|
||||||
|
.then(async res => {
|
||||||
|
assert.strictEqual(res.status, 200);
|
||||||
|
const data = await db.prepare("get", `SELECT "userID", "issueTime", "issuerUserID", enabled FROM warnings WHERE "userID" = ?`, [json.userID]);
|
||||||
|
assert.strictEqual(data.enabled, 1);
|
||||||
|
done();
|
||||||
|
})
|
||||||
|
.catch(err => done(err));
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user