mirror of
https://github.com/monkeytypegame/monkeytype.git
synced 2025-02-02 03:50:45 +08:00
removing db read from pb check
This commit is contained in:
parent
6dc51171cb
commit
f86f6614fe
1 changed files with 97 additions and 103 deletions
|
@ -239,23 +239,41 @@ exports.checkIfNeedsToChangeName = functions.https.onCall(
|
|||
}
|
||||
);
|
||||
|
||||
function checkIfPB(uid, obj) {
|
||||
return db
|
||||
.collection(`users`)
|
||||
.doc(uid)
|
||||
.get()
|
||||
.then((data) => {
|
||||
let pbs = null;
|
||||
try {
|
||||
pbs = data.data().personalBests;
|
||||
if (pbs === undefined) {
|
||||
throw new Error("pb is undefined");
|
||||
}
|
||||
} catch (e) {
|
||||
function checkIfPB(uid, obj, userdata) {
|
||||
let pbs = null;
|
||||
try {
|
||||
pbs = userdata.personalBests;
|
||||
if (pbs === undefined) {
|
||||
throw new Error("pb is undefined");
|
||||
}
|
||||
} catch (e) {
|
||||
return db
|
||||
.collection("users")
|
||||
.doc(uid)
|
||||
.update({
|
||||
personalBests: {
|
||||
[obj.mode]: {
|
||||
[obj.mode2]: [
|
||||
{
|
||||
language: obj.language,
|
||||
difficulty: obj.difficulty,
|
||||
punctuation: obj.punctuation,
|
||||
wpm: obj.wpm,
|
||||
acc: obj.acc,
|
||||
raw: obj.rawWpm,
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
})
|
||||
.then((e) => {
|
||||
return true;
|
||||
})
|
||||
.catch((e) => {
|
||||
return db
|
||||
.collection("users")
|
||||
.doc(uid)
|
||||
.update({
|
||||
.set({
|
||||
personalBests: {
|
||||
[obj.mode]: {
|
||||
[obj.mode2]: [
|
||||
|
@ -273,100 +291,76 @@ function checkIfPB(uid, obj) {
|
|||
})
|
||||
.then((e) => {
|
||||
return true;
|
||||
})
|
||||
.catch((e) => {
|
||||
return db
|
||||
.collection("users")
|
||||
.doc(uid)
|
||||
.set({
|
||||
personalBests: {
|
||||
[obj.mode]: {
|
||||
[obj.mode2]: [
|
||||
{
|
||||
language: obj.language,
|
||||
difficulty: obj.difficulty,
|
||||
punctuation: obj.punctuation,
|
||||
wpm: obj.wpm,
|
||||
acc: obj.acc,
|
||||
raw: obj.rawWpm,
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
})
|
||||
.then((e) => {
|
||||
return true;
|
||||
});
|
||||
});
|
||||
}
|
||||
// //check mode, mode2, punctuation, language and difficulty
|
||||
});
|
||||
}
|
||||
// //check mode, mode2, punctuation, language and difficulty
|
||||
|
||||
let toUpdate = false;
|
||||
let found = false;
|
||||
try {
|
||||
if (pbs[obj.mode][obj.mode2] === undefined) {
|
||||
pbs[obj.mode][obj.mode2] = [];
|
||||
}
|
||||
pbs[obj.mode][obj.mode2].forEach((pb) => {
|
||||
if (
|
||||
pb.punctuation === obj.punctuation &&
|
||||
pb.difficulty === obj.difficulty &&
|
||||
pb.language === obj.language
|
||||
) {
|
||||
//entry like this already exists, compare wpm
|
||||
found = true;
|
||||
if (pb.wpm < obj.wpm) {
|
||||
//new pb
|
||||
pb.wpm = obj.wpm;
|
||||
pb.acc = obj.acc;
|
||||
pb.raw = obj.rawWpm;
|
||||
toUpdate = true;
|
||||
} else {
|
||||
//no pb
|
||||
return false;
|
||||
}
|
||||
}
|
||||
});
|
||||
//checked all pbs, nothing found - meaning this is a new pb
|
||||
if (!found) {
|
||||
pbs[obj.mode][obj.mode2].push({
|
||||
language: obj.language,
|
||||
difficulty: obj.difficulty,
|
||||
punctuation: obj.punctuation,
|
||||
wpm: obj.wpm,
|
||||
acc: obj.acc,
|
||||
raw: obj.rawWpm,
|
||||
});
|
||||
let toUpdate = false;
|
||||
let found = false;
|
||||
try {
|
||||
if (pbs[obj.mode][obj.mode2] === undefined) {
|
||||
pbs[obj.mode][obj.mode2] = [];
|
||||
}
|
||||
pbs[obj.mode][obj.mode2].forEach((pb) => {
|
||||
if (
|
||||
pb.punctuation === obj.punctuation &&
|
||||
pb.difficulty === obj.difficulty &&
|
||||
pb.language === obj.language
|
||||
) {
|
||||
//entry like this already exists, compare wpm
|
||||
found = true;
|
||||
if (pb.wpm < obj.wpm) {
|
||||
//new pb
|
||||
pb.wpm = obj.wpm;
|
||||
pb.acc = obj.acc;
|
||||
pb.raw = obj.rawWpm;
|
||||
toUpdate = true;
|
||||
} else {
|
||||
//no pb
|
||||
return false;
|
||||
}
|
||||
} catch (e) {
|
||||
// console.log(e);
|
||||
pbs[obj.mode] = {};
|
||||
pbs[obj.mode][obj.mode2] = [
|
||||
{
|
||||
language: obj.language,
|
||||
difficulty: obj.difficulty,
|
||||
punctuation: obj.punctuation,
|
||||
wpm: obj.wpm,
|
||||
acc: obj.acc,
|
||||
raw: obj.rawWpm,
|
||||
},
|
||||
];
|
||||
toUpdate = true;
|
||||
}
|
||||
|
||||
if (toUpdate) {
|
||||
return db
|
||||
.collection("users")
|
||||
.doc(uid)
|
||||
.update({ personalBests: pbs })
|
||||
.then((e) => {
|
||||
return true;
|
||||
});
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
});
|
||||
//checked all pbs, nothing found - meaning this is a new pb
|
||||
if (!found) {
|
||||
pbs[obj.mode][obj.mode2].push({
|
||||
language: obj.language,
|
||||
difficulty: obj.difficulty,
|
||||
punctuation: obj.punctuation,
|
||||
wpm: obj.wpm,
|
||||
acc: obj.acc,
|
||||
raw: obj.rawWpm,
|
||||
});
|
||||
toUpdate = true;
|
||||
}
|
||||
} catch (e) {
|
||||
// console.log(e);
|
||||
pbs[obj.mode] = {};
|
||||
pbs[obj.mode][obj.mode2] = [
|
||||
{
|
||||
language: obj.language,
|
||||
difficulty: obj.difficulty,
|
||||
punctuation: obj.punctuation,
|
||||
wpm: obj.wpm,
|
||||
acc: obj.acc,
|
||||
raw: obj.rawWpm,
|
||||
},
|
||||
];
|
||||
toUpdate = true;
|
||||
}
|
||||
|
||||
if (toUpdate) {
|
||||
return db
|
||||
.collection("users")
|
||||
.doc(uid)
|
||||
.update({ personalBests: pbs })
|
||||
.then((e) => {
|
||||
return true;
|
||||
});
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
function stdDev(array) {
|
||||
|
@ -821,7 +815,7 @@ exports.testCompleted = functions.runWith({ timeoutSeconds: 540, memory: "2GB" }
|
|||
verified,
|
||||
emailVerified
|
||||
),
|
||||
checkIfPB(request.uid, request.obj),
|
||||
checkIfPB(request.uid, request.obj, userdata),
|
||||
])
|
||||
.then((values) => {
|
||||
let globallb = values[0].insertedAt;
|
||||
|
|
Loading…
Reference in a new issue