resetPersonalBests and index.js cleaning

This commit is contained in:
lukew3 2021-05-22 11:09:17 -04:00
parent 72a09dab3a
commit 3f5af730d4
5 changed files with 59 additions and 174 deletions

View file

@ -16,6 +16,8 @@
- Should be a setting in the .env
- Are personal bests calculated from actual result data?
- Setting a low pb after resetting personal bests doesn't register on the scoreboard
- make sure refresh token won't expire
- make refresh token expire after session if don't remeber me is set?
- Keep jwt and refresh in cookies?

View file

@ -1361,6 +1361,21 @@ app.post("/api/removeTag", authenticateToken, (req, res) => {
}
});
app.post("/api/resetPersonalBests", authenticateToken, (req, res) => {
try {
User.findOne({ name: req.name }, (err, user) => {
if (err) res.status(500).send({ error: err });
user.personalBests = {};
user.save();
});
return true;
} catch (e) {
console.log(
`something went wrong when deleting personal bests for ${uid}: ${e.message}`
);
return false;
}
});
// ANALYTICS API
function newAnalyticsEvent(event, data) {

View file

@ -106,30 +106,6 @@ function isUsernameValid(name) {
return /^[0-9a-zA-Z_.-]+$/.test(name);
}
exports.reserveDisplayName = functions.https.onCall(
async (request, response) => {
try {
let udata = await db.collection("users").doc(request.uid).get();
udata = udata.data();
if (request.name.toLowerCase() === udata.name.toLowerCase()) {
db.collection("takenNames").doc(request.name.toLowerCase()).set(
{
taken: true,
},
{ merge: true }
);
console.log(`Reserved name ${request.name}`);
} else {
console.error(
`Could not reserve name. ${request.name.toLowerCase()} != ${udata.name.toLowerCase()}`
);
}
} catch (e) {
console.error(`Could not reserve name. ${e}`);
}
}
);
exports.changeDisplayName = functions.https.onCall(
async (request, response) => {
try {
@ -168,94 +144,6 @@ exports.changeDisplayName = functions.https.onCall(
}
);
exports.clearName = functions.auth.user().onDelete((user) => {
db.collection("takenNames").doc(user.displayName.toLowerCase()).delete();
db.collection("users").doc(user.uid).delete();
});
exports.checkNameAvailability = functions.https.onRequest(
async (request, response) => {
response.set("Access-Control-Allow-Origin", origin);
if (request.method === "OPTIONS") {
// Send response to OPTIONS requests
response.set("Access-Control-Allow-Methods", "POST, GET, OPTIONS");
response.set(
"Access-Control-Allow-Headers",
"Authorization,Content-Type"
);
response.set("Access-Control-Max-Age", "3600");
response.status(204).send("");
return;
}
request = request.body.data;
// 1 - available
// -1 - unavailable (taken)
// -2 - not valid name
// -999 - unknown error
try {
if (!isUsernameValid(request.name)) {
response.status(200).send({
data: {
resultCode: -2,
message: "Username is not valid",
},
});
return;
}
let takendata = await db
.collection("takenNames")
.doc(request.name.toLowerCase())
.get();
takendata = takendata.data();
if (takendata !== undefined && takendata.taken) {
response.status(200).send({
data: {
resultCode: -1,
message: "Username is taken",
},
});
return;
} else {
response.status(200).send({
data: {
resultCode: 1,
message: "Username is available",
},
});
return;
}
// return getAllNames().then((data) => {
// let available = 1;
// data.forEach((name) => {
// try {
// if (name.toLowerCase() === request.name.toLowerCase()) available = -1;
// } catch (e) {
// //
// }
// });
// return available;
// });
} catch (e) {
console.error(
`Error while checking name availability for ${request.name}:` +
e.message
);
response.status(200).send({
data: {
resultCode: -999,
message: "Unexpected error: " + e,
},
});
return;
}
}
);
exports.removeSmallTestsAndQPB = functions.https.onCall(
async (request, response) => {
let uid = request.uid;
@ -304,23 +192,6 @@ exports.removeSmallTestsAndQPB = functions.https.onCall(
}
);
exports.resetPersonalBests = functions.https.onCall(
async (request, response) => {
let uid = request.uid;
try {
var user = await db.collection("users").doc(uid);
await user.update({ personalBests: {} });
return true;
} catch (e) {
console.log(
`something went wrong when deleting personal bests for ${uid}: ${e.message}`
);
return false;
}
}
);
async function checkIfTagPB(uid, obj, userdata) {
if (obj.tags.length === 0) {
return [];
@ -487,47 +358,6 @@ function stdDev(array) {
);
}
exports.requestTest = functions.https.onRequest((request, response) => {
response.set("Access-Control-Allow-Origin", origin);
response.set("Access-Control-Allow-Headers", "*");
response.set("Access-Control-Allow-Credentials", "true");
response.status(200).send({ data: "test" });
});
exports.getPatreons = functions.https.onRequest(async (request, response) => {
response.set("Access-Control-Allow-Origin", origin);
response.set("Access-Control-Allow-Headers", "*");
response.set("Access-Control-Allow-Credentials", "true");
if (request.method === "OPTIONS") {
// Send response to OPTIONS requests
response.set("Access-Control-Allow-Methods", "POST, GET, OPTIONS");
response.set("Access-Control-Allow-Headers", "Authorization,Content-Type");
response.set("Access-Control-Max-Age", "3600");
response.status(204).send("");
return;
}
request = request.body.data;
try {
let patreon = await db.collection("patreon").doc("patreons").get();
let data = patreon.data().list;
data = data.sort((a, b) => {
return b.value - a.value;
});
let ret = [];
data.forEach((pdoc) => {
ret.push(pdoc.name);
});
response.status(200).send({ data: ret });
return;
} catch (e) {
response.status(200).send({ e });
return;
}
});
exports.verifyUser = functions.https.onRequest(async (request, response) => {
response.set("Access-Control-Allow-Origin", origin);
response.set("Access-Control-Allow-Headers", "*");

View file

@ -0,0 +1,40 @@
exports.requestTest = functions.https.onRequest((request, response) => {
response.set("Access-Control-Allow-Origin", origin);
response.set("Access-Control-Allow-Headers", "*");
response.set("Access-Control-Allow-Credentials", "true");
response.status(200).send({ data: "test" });
});
exports.getPatreons = functions.https.onRequest(async (request, response) => {
response.set("Access-Control-Allow-Origin", origin);
response.set("Access-Control-Allow-Headers", "*");
response.set("Access-Control-Allow-Credentials", "true");
if (request.method === "OPTIONS") {
// Send response to OPTIONS requests
response.set("Access-Control-Allow-Methods", "POST, GET, OPTIONS");
response.set("Access-Control-Allow-Headers", "Authorization,Content-Type");
response.set("Access-Control-Max-Age", "3600");
response.status(204).send("");
return;
}
request = request.body.data;
try {
let patreon = await db.collection("patreon").doc("patreons").get();
let data = patreon.data().list;
data = data.sort((a, b) => {
return b.value - a.value;
});
let ret = [];
data.forEach((pdoc) => {
ret.push(pdoc.name);
});
response.status(200).send({ data: ret });
return;
} catch (e) {
response.status(200).send({ e });
return;
}
});

View file

@ -4,6 +4,7 @@ import * as Notifications from "./notifications";
import * as AccountController from "./account-controller";
import * as DB from "./db";
import * as Settings from "./settings";
import axiosInstance from "./axios-instance";
export let list = {};
class SimplePopup {
@ -245,10 +246,7 @@ list.resetPersonalBests = new SimplePopup(
() => {
try {
Loader.show();
CloudFunctions.resetPersonalBests({
uid: DB.currentUser().uid,
}).then((res) => {
axiosInstance.post("/api/resetPersonalBests").then((res) => {
if (res) {
Loader.hide();
Notifications.add(