Skip to content

Instantly share code, notes, and snippets.

@netgfx
Last active August 10, 2019 21:58
Show Gist options
  • Save netgfx/afc8afde90f3115ee732f0943d0f403a to your computer and use it in GitHub Desktop.
Save netgfx/afc8afde90f3115ee732f0943d0f403a to your computer and use it in GitHub Desktop.
medium-snippet-BE-2
exports.findMatch = functions.https.onRequest((req, response) => {
var data = req.query.data || req.params.data || req.body.data || '';
var userId = req.query.userId || req.params.userId || req.body.userId || 5000;
let userFBId = data.userFBId;
let tag = data.tag;
var signature = data.signature || "123";
var isValid = validate(signature);
if (isValid === true) {
var connectedPlayer;
var transaction = db.runTransaction(t => {
return t.get(bountyQueueRef.where("tag", "==", tag)).then((snapshot) => {
if (snapshot) {
let breaker = 0;
snapshot.forEach(doc => {
if (breaker > 0) {
return false;
}
let queueEntry = doc.data();
// is not flagged and is not ourselves //
if ((queueEntry.flagged === undefined || queueEntry.flagged === false) && queueEntry.userFBId !== userFBId) {
queueEntry.flagged = userFBId;
connectedPlayer = userFBId;
data.flagged = queueEntry.userFBId;
t.set(bountyQueueRef.doc(queueEntry.userFBId), queueEntry, { merge: true }); // store their data again but flagged
t.set(bountyQueueRef.doc(userFBId), data, { merge: true }); // store our data again but flagged
// remove entries when match is over //
breaker += 1;
}
});
}
}).catch(err => {
console.log("Error getting document:", err);
});
}).then(result => {
console.log('Transaction success', result);
cors(req, response, () => {});
response.status(200).send(JSON.stringify({ "message": "success", "success": true, "status": "success", "connectedPlayer": connectedPlayer }));
}).catch(err => {
console.log('Transaction failure:', err);
cors(req, response, () => {});
response.status(500).send(JSON.stringify({ "message": err.message }));
});
} else {
console.log("An error occurred - invalid signature");
cors(req, response, () => {});
response.status(500).send(JSON.stringify({ "message": "invalid signature" }));
}
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment