removing small results if they are not already removed

This commit is contained in:
Miodec 2021-02-15 21:46:33 +00:00
parent e4b3e6a881
commit 7a3c7a3ec8
4 changed files with 57 additions and 0 deletions

View file

@ -407,6 +407,54 @@ exports.checkNameAvailability = functions.https.onRequest(
// }
// );
exports.removeSmallTestsAndQPB = functions.https.onCall(
async (request, response) => {
let uid = request.uid;
try {
let docs = await db
.collection(`users/${uid}/results`)
.where("mode", "==", "time")
.where("mode2", "<", 15)
.get();
docs.forEach(async (doc) => {
db.collection(`users/${uid}/results`).doc(doc.id).delete();
});
let docs2 = await db
.collection(`users/${uid}/results`)
.where("mode", "==", "words")
.where("mode2", "<", 10)
.get();
docs2.forEach(async (doc) => {
db.collection(`users/${uid}/results`).doc(doc.id).delete();
});
let docs3 = await db
.collection(`users/${uid}/results`)
.where("mode", "==", "custom")
.where("testDuration", "<", 10)
.get();
docs3.forEach(async (doc) => {
db.collection(`users/${uid}/results`).doc(doc.id).delete();
});
// console.log(`removing small tests for ${uid}: ${docs.size} time, ${docs2.size} words, ${docs3.size} custom`);
let userdata = await db.collection(`users`).doc(uid).get();
userdata = userdata.data();
try {
pbs = userdata.personalBests;
// console.log(`removing ${Object.keys(pbs.quote).length} quote pb`);
delete pbs.quote;
await db.collection("users").doc(uid).update({ personalBests: pbs });
} catch {}
db.collection("users")
.doc(uid)
.set({ refactored: true }, { merge: true });
console.log("removed small tests for " + uid);
} catch (e) {
console.log(`something went wrong for ${uid}: ${e.message}`);
}
}
);
function checkIfPB(uid, obj, userdata) {
let pbs = null;
if (obj.mode == "quote") {

View file

@ -360,6 +360,9 @@ function getAccountDataAndInit() {
}
}
}
if (snap.refactored === false) {
CloudFunctions.removeSmallTests({ uid: user.uid });
}
if (!configChangedBeforeDb) {
if (cookieConfig === null) {
accountIconLoading(false);

View file

@ -30,3 +30,7 @@ export const clearTagPb = firebase.functions().httpsCallable("clearTagPb");
export const changeDisplayName = firebase
.functions()
.httpsCallable("changeDisplayName");
export const removeSmallTests = firebase
.functions()
.httpsCallable("removeSmallTestsAndQPB");

View file

@ -26,6 +26,7 @@ export async function db_getUserSnapshot() {
name: undefined,
tags: [],
favouriteThemes: [],
refactored: false,
lbMemory: {
time15: {
global: null,
@ -85,6 +86,7 @@ export async function db_getUserSnapshot() {
snap.config = data.config;
snap.favouriteThemes =
data.favouriteThemes === undefined ? [] : data.favouriteThemes;
snap.refactored = data.refactored === true ? true : false;
snap.globalStats = {
time: data.timeTyping,
started: data.startedTests,