// async function incrementUserGlobalTypingStats(userData, resultObj) { // let userGlobalStats = userData.globalStats; // try { // let newStarted; // let newCompleted; // let newTime; // let tt = 0; // let afk = resultObj.afkDuration; // if (afk == undefined) { // afk = 0; // } // tt = resultObj.testDuration + resultObj.incompleteTestSeconds - afk; // if (userGlobalStats.started === undefined) { // newStarted = resultObj.restartCount + 1; // } else { // newStarted = userGlobalStats.started + resultObj.restartCount + 1; // } // if (userGlobalStats.completed === undefined) { // newCompleted = 1; // } else { // newCompleted = userGlobalStats.completed + 1; // } // if (userGlobalStats.time === undefined) { // newTime = tt; // } else { // newTime = userGlobalStats.time + tt; // } // incrementPublicTypingStats(resultObj.restartCount + 1, 1, tt); // User.findOne({ uid: userData.uid }, (err, user) => { // user.globalStats = { // started: newStarted, // completed: newCompleted, // time: roundTo2(newTime), // }; // user.save(); // }); // } catch (e) { // console.error(`Error while incrementing stats for user ${uid}: ${e}`); // } // } // app.get("/userResults", authenticateToken, (req, res) => { // User.findOne({ uid: req.uid }, (err, user) => { // if (err) res.status(500).send({ error: err }); // res.status(200).send({ results: user.results }); // }); // res.sendStatus(200); // }); // app.post("/unlinkDiscord", authenticateToken, (req, res) => { // request = req.body.data; // try { // if (request === null || req.uid === undefined) { // res.status(200).send({ status: -999, message: "Empty request" }); // return; // } // User.findOne({ uid: req.uid }, (err, user) => { // user.discordId = null; // user.save(); // }) // .then((f) => { // res.status(200).send({ // status: 1, // message: "Unlinked", // }); // }) // .catch((e) => { // res.status(200).send({ // status: -999, // message: e.message, // }); // }); // } catch (e) { // res.status(200).send({ // status: -999, // message: e, // }); // } // }); // app.post("/updateEmail", authenticateToken, (req, res) => { // try { // admin // .auth() // .getUser(req.uid) // .then((previous) => { // if (previous.email !== req.body.previousEmail) { // res.send({ resultCode: -1 }); // } else { // User.findOne({ uid: req.uid }, (err, user) => { // user.email = req.body.newEmail; // user.emailVerified = false; // user.save(); // res.send({ resultCode: 1 }); // }); // } // }); // } catch (e) { // console.error(`error updating email for ${req.uid} - ${e}`); // res.send({ // resultCode: -999, // message: e.message, // }); // } // }); app.post("/verifyDiscord", authenticateToken, (req, res) => { /* Not tested yet */ 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 = req.body.data; if (request.uid == undefined) { response.status(200).send({ status: -1, message: "Need to provide uid" }); return; } try { return fetch("https://discord.com/api/users/@me", { headers: { authorization: `${request.tokenType} ${request.accessToken}`, }, }) .then((res) => res.json()) .then(async (res2) => { let did = res2.id; User.findOne({ discordId: did }, (err, user) => { if (user) { res.status(200).send({ status: -1, message: "This Discord account is already paired to a different Monkeytype account", }); } else { User.findOne({ uid: req.uid }, (err, user2) => { user2.discordId = did; user2.save(); newCommand = new BotCommand({ command: "verify", arguments: [did, req.uid], executed: false, requestTimestamp: Date.now(), }); newCommand.save(); res .status(200) .send({ status: 1, message: "Verified", did: did }); }); } }); }) .catch((e) => { console.error( "Something went wrong when trying to verify discord of user " + e.message ); response.status(200).send({ status: -1, message: e.message }); }); } catch (e) { response.status(200).send({ status: -1, message: e }); } }); // app.post("/resetPersonalBests", authenticateToken, (req, res) => { // try { // User.findOne({ uid: req.uid }, (err, user) => { // if (err) res.status(500).send({ error: err }); // user.personalBests = {}; // user.save(); // }); // res.status(200).send({ status: "Reset Pbs successfully" }); // } catch (e) { // console.log( // `something went wrong when deleting personal bests for ${uid}: ${e.message}` // ); // res.status(500).send({ status: "Reset Pbs successfully" }); // } // });