diff --git a/functions/index.js b/functions/index.js index 906d5817d..ba61bb57f 100644 --- a/functions/index.js +++ b/functions/index.js @@ -1126,91 +1126,96 @@ class Leaderboard { } } -exports.generatePairingCode = functions.https.onCall((request, response) => { - try { - if (request === null) { +exports.generatePairingCode = functions + .runWith({ + timeoutSeconds: 60, + memory: "1GB", + }) + .https.onCall((request, response) => { + try { + if (request === null) { + console.error( + `error while trying to generate discord pairing code - no input` + ); + return { + status: -999, + }; + } + + return db + .collection("users") + .doc(request.uid) + .get() + .then((userDoc) => { + userDocData = userDoc.data(); + if (userDocData.discordPairingCode !== undefined) { + console.log( + `user ${request.uid} already has code ${userDocData.discordPairingCode}` + ); + return { + status: 2, + pairingCode: userDocData.discordPairingCode, + }; + } else { + return db + .collection("users") + .get() + .then((res) => { + let existingCodes = []; + + res.docs.forEach((doc) => { + let docData = doc.data(); + if (docData.discordPairingCode !== undefined) { + existingCodes.push(docData.discordPairingCode); + } + }); + + // console.log(`existing codes ${JSON.stringify(existingCodes)}`); + + let randomCode = generate(9); + + while (existingCodes.includes(randomCode)) { + randomCode = generate(9); + } + + return db + .collection("users") + .doc(request.uid) + .update( + { + discordPairingCode: randomCode, + }, + { merge: true } + ) + .then((res) => { + console.log( + `generated ${randomCode} for user ${request.uid}` + ); + return { + status: 1, + pairingCode: randomCode, + }; + }) + .catch((e) => { + console.error( + `error while trying to set discord pairing code ${randomCode} for user ${request.uid} - ${e}` + ); + return { + status: -999, + }; + }); + }); + } + }); + } catch (e) { console.error( - `error while trying to generate discord pairing code - no input` + `error while trying to generate discord pairing code for user ${request.uid} - ${e}` ); return { status: -999, }; } - - return db - .collection("users") - .doc(request.uid) - .get() - .then((userDoc) => { - userDocData = userDoc.data(); - if (userDocData.discordPairingCode !== undefined) { - console.log( - `user ${request.uid} already has code ${userDocData.discordPairingCode}` - ); - return { - status: 2, - pairingCode: userDocData.discordPairingCode, - }; - } else { - return db - .collection("users") - .get() - .then((res) => { - let existingCodes = []; - - res.docs.forEach((doc) => { - let docData = doc.data(); - if (docData.discordPairingCode !== undefined) { - existingCodes.push(docData.discordPairingCode); - } - }); - - // console.log(`existing codes ${JSON.stringify(existingCodes)}`); - - let randomCode = generate(9); - - while (existingCodes.includes(randomCode)) { - randomCode = generate(9); - } - - return db - .collection("users") - .doc(request.uid) - .update( - { - discordPairingCode: randomCode, - }, - { merge: true } - ) - .then((res) => { - console.log( - `generated ${randomCode} for user ${request.uid}` - ); - return { - status: 1, - pairingCode: randomCode, - }; - }) - .catch((e) => { - console.error( - `error while trying to set discord pairing code ${randomCode} for user ${request.uid} - ${e}` - ); - return { - status: -999, - }; - }); - }); - } - }); - } catch (e) { - console.error( - `error while trying to generate discord pairing code for user ${request.uid} - ${e}` - ); - return { - status: -999, - }; - } -}); + }); async function checkLeaderboards( resultObj,