mirror of
https://github.com/monkeytypegame/monkeytype.git
synced 2025-03-10 21:53:13 +08:00
removed try catches, removed unused functions
This commit is contained in:
parent
66b3e012b0
commit
cd1ac9743d
1 changed files with 33 additions and 169 deletions
|
@ -6,183 +6,47 @@ const { verifyIdToken } = require("../../handlers/auth");
|
|||
|
||||
class LeaderboardsController {
|
||||
static async get(req, res, next) {
|
||||
try {
|
||||
const { language, mode, mode2, skip, limit } = req.query;
|
||||
const { language, mode, mode2, skip, limit } = req.query;
|
||||
|
||||
let uid;
|
||||
let uid;
|
||||
|
||||
const { authorization } = req.headers;
|
||||
if (authorization) {
|
||||
const token = authorization.split(" ");
|
||||
if (token[0].trim() == "Bearer")
|
||||
req.decodedToken = await verifyIdToken(token[1]);
|
||||
uid = req.decodedToken.uid;
|
||||
}
|
||||
|
||||
if (!language || !mode || !mode2 || !skip) {
|
||||
return res.status(400).json({
|
||||
message: "Missing parameters",
|
||||
});
|
||||
}
|
||||
let retval = await LeaderboardsDAO.get(
|
||||
mode,
|
||||
mode2,
|
||||
language,
|
||||
skip,
|
||||
limit
|
||||
);
|
||||
retval.forEach((item) => {
|
||||
if (uid && item.uid == uid) {
|
||||
//
|
||||
} else {
|
||||
delete item.discordId;
|
||||
delete item.uid;
|
||||
delete item.difficulty;
|
||||
delete item.language;
|
||||
}
|
||||
});
|
||||
return res.status(200).json(retval);
|
||||
} catch (e) {
|
||||
return next(e);
|
||||
const { authorization } = req.headers;
|
||||
if (authorization) {
|
||||
const token = authorization.split(" ");
|
||||
if (token[0].trim() == "Bearer")
|
||||
req.decodedToken = await verifyIdToken(token[1]);
|
||||
uid = req.decodedToken.uid;
|
||||
}
|
||||
|
||||
if (!language || !mode || !mode2 || !skip) {
|
||||
return res.status(400).json({
|
||||
message: "Missing parameters",
|
||||
});
|
||||
}
|
||||
let retval = await LeaderboardsDAO.get(mode, mode2, language, skip, limit);
|
||||
retval.forEach((item) => {
|
||||
if (uid && item.uid == uid) {
|
||||
//
|
||||
} else {
|
||||
delete item.discordId;
|
||||
delete item.uid;
|
||||
delete item.difficulty;
|
||||
delete item.language;
|
||||
}
|
||||
});
|
||||
return res.status(200).json(retval);
|
||||
}
|
||||
|
||||
static async getRank(req, res, next) {
|
||||
try {
|
||||
const { language, mode, mode2 } = req.query;
|
||||
const { uid } = req.decodedToken;
|
||||
if (!language || !mode || !mode2 || !uid) {
|
||||
return res.status(400).json({
|
||||
message: "Missing parameters",
|
||||
});
|
||||
}
|
||||
let retval = await LeaderboardsDAO.getRank(mode, mode2, language, uid);
|
||||
return res.status(200).json(retval);
|
||||
} catch (e) {
|
||||
return next(e);
|
||||
}
|
||||
}
|
||||
|
||||
static async update(req, res, next) {
|
||||
try {
|
||||
return res.status(200).json({
|
||||
message: "Leaderboards disabled",
|
||||
lbdisabled: true,
|
||||
const { language, mode, mode2 } = req.query;
|
||||
const { uid } = req.decodedToken;
|
||||
if (!language || !mode || !mode2 || !uid) {
|
||||
return res.status(400).json({
|
||||
message: "Missing parameters",
|
||||
});
|
||||
if (process.env.LBDISABLED === true) {
|
||||
return res.status(200).json({
|
||||
message: "Leaderboards disabled",
|
||||
lbdisabled: true,
|
||||
});
|
||||
}
|
||||
const { rid } = req.body;
|
||||
const { uid } = req.decodedToken;
|
||||
if (!rid) {
|
||||
return res.status(400).json({
|
||||
message: "Missing parameters",
|
||||
});
|
||||
}
|
||||
//verify user first
|
||||
let user = await UserDAO.getUser(uid);
|
||||
if (!user) {
|
||||
return res.status(400).json({
|
||||
message: "User not found",
|
||||
});
|
||||
}
|
||||
if (user.banned === true) {
|
||||
return res.status(200).json({
|
||||
message: "User banned",
|
||||
banned: true,
|
||||
});
|
||||
}
|
||||
let userauth = await admin.auth().getUser(uid);
|
||||
if (!userauth.emailVerified) {
|
||||
return res.status(200).json({
|
||||
message: "User needs to verify email address",
|
||||
needsToVerifyEmail: true,
|
||||
});
|
||||
}
|
||||
|
||||
let result = await ResultDAO.getResult(uid, rid);
|
||||
if (!result.language) result.language = "english";
|
||||
if (
|
||||
result.mode == "time" &&
|
||||
result.isPb &&
|
||||
(result.mode2 == 15 || result.mode2 == 60) &&
|
||||
["english"].includes(result.language)
|
||||
) {
|
||||
//check if its better than their current lb pb
|
||||
let lbpb =
|
||||
user?.lbPersonalBests?.[result.mode]?.[result.mode2]?.[
|
||||
result.language
|
||||
]?.wpm;
|
||||
if (!lbpb) lbpb = 0;
|
||||
if (result.wpm >= lbpb) {
|
||||
//run update
|
||||
let retval = await LeaderboardsDAO.update(
|
||||
result.mode,
|
||||
result.mode2,
|
||||
result.language,
|
||||
uid
|
||||
);
|
||||
if (retval.rank) {
|
||||
await UserDAO.updateLbMemory(
|
||||
uid,
|
||||
result.mode,
|
||||
result.mode2,
|
||||
result.language,
|
||||
retval.rank
|
||||
);
|
||||
}
|
||||
return res.status(200).json(retval);
|
||||
} else {
|
||||
let rank = await LeaderboardsDAO.getRank(
|
||||
result.mode,
|
||||
result.mode2,
|
||||
result.language,
|
||||
uid
|
||||
);
|
||||
rank = rank?.rank;
|
||||
if (!rank) {
|
||||
return res.status(400).json({
|
||||
message: "User has a lbPb but was not found on the leaderboard",
|
||||
});
|
||||
}
|
||||
await UserDAO.updateLbMemory(
|
||||
uid,
|
||||
result.mode,
|
||||
result.mode2,
|
||||
result.language,
|
||||
rank
|
||||
);
|
||||
return res.status(200).json({
|
||||
message: "Not a new leaderboard personal best",
|
||||
rank,
|
||||
});
|
||||
}
|
||||
} else {
|
||||
return res.status(400).json({
|
||||
message: "This result is not eligible for any leaderboard",
|
||||
});
|
||||
}
|
||||
} catch (e) {
|
||||
return next(e);
|
||||
}
|
||||
}
|
||||
|
||||
static async debugUpdate(req, res, next) {
|
||||
try {
|
||||
const { language, mode, mode2 } = req.body;
|
||||
if (!language || !mode || !mode2) {
|
||||
return res.status(400).json({
|
||||
message: "Missing parameters",
|
||||
});
|
||||
}
|
||||
let retval = await LeaderboardsDAO.update(mode, mode2, language);
|
||||
return res.status(200).json(retval);
|
||||
} catch (e) {
|
||||
return next(e);
|
||||
}
|
||||
let retval = await LeaderboardsDAO.getRank(mode, mode2, language, uid);
|
||||
return res.status(200).json(retval);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue