v1.6.0/speculative fix for call conflict
This commit is contained in:
@@ -1,30 +1,70 @@
|
||||
const admin = require('firebase-admin');
|
||||
const admin = require("firebase-admin");
|
||||
|
||||
module.exports = async (req, res) => {
|
||||
console.info(`[START]\tWEBHOOKS/Conference End\nID:${req.body.conference.confId}\nParty:${req.body.conference.confAlias}`);
|
||||
if (req.body.eventType === 'Conference.Ended') {
|
||||
console.info(
|
||||
`[START]\tWEBHOOKS/Conference End\tID:${req.body.conference.confId}\tParty:${req.body.conference.confAlias}`
|
||||
);
|
||||
// MAKE SURE CORRECT EVENT TYPE
|
||||
if (req.body.eventType === "Conference.Ended") {
|
||||
// MAKE SURE IT'S NOT A DUPLICATE FROM CREATE CONFLICT
|
||||
if (req.body.participants.length > 0) {
|
||||
if (req.body.confAlias.startsWith('AUTODELETE_')) {
|
||||
// MAKE SURE ELIGIBLE FOR DELETE
|
||||
if (req.body.confAlias.startsWith("AUTODELETE_")) {
|
||||
const partyName = req.body.confAlias.replace(/AUTODELETE_/, "");
|
||||
admin.firestore()
|
||||
.collection('rooms')
|
||||
.doc(partyName)
|
||||
.update({ conference: admin.firestore.FieldValue.delete() })
|
||||
.then(() => {
|
||||
console.info(`[DONE]\tWEBHOOKS/Conference End\nID:${req.body.conference.confId}\nParty:${req.body.conference.confAlias}`);
|
||||
return;
|
||||
})
|
||||
.catch(err => {
|
||||
console.error(`[ERROR]\tWEBHOOKS/Conference End/Firebase Error\nID:${req.body.conference.confId}\nParty:${req.body.conference.confAlias}\nError:${JSON.stringify(err)}`)
|
||||
});
|
||||
res.status(200).send({ message: 'Processed conference end'});
|
||||
const existingConference = await admin
|
||||
.firestore()
|
||||
.collection("rooms")
|
||||
.doc(partyName)
|
||||
.get()
|
||||
.then((snap) => (snap.exists ? snap.data().conference : null));
|
||||
// MAKE SURE EXISTS AND HAS NOT BEEN REPLACED
|
||||
if (
|
||||
existingConference &&
|
||||
existingConference._id === req.body.conference.confId
|
||||
) {
|
||||
// REMOVE CONFERENCE DETAILS
|
||||
await admin
|
||||
.firestore()
|
||||
.collection("rooms")
|
||||
.doc(partyName)
|
||||
.update({ conference: admin.firestore.FieldValue.delete() })
|
||||
.then(() => {
|
||||
console.info(
|
||||
`[DONE]\tWEBHOOKS/Conference End\tID:${req.body.conference.confId}\tParty:${req.body.conference.confAlias}`
|
||||
);
|
||||
return;
|
||||
})
|
||||
.catch((err) => {
|
||||
console.error(
|
||||
`[ERROR]\tWEBHOOKS/Conference End/Firebase Error\tID:${
|
||||
req.body.conference.confId
|
||||
}\tParty:${
|
||||
req.body.conference.confAlias
|
||||
}\tError:${JSON.stringify(err)}`
|
||||
);
|
||||
});
|
||||
} else {
|
||||
console.info(
|
||||
`[DONE]\tWEBHOOKS/Conference End/Conference Was Already Replaced\tID:${req.body.conference.confId}\tParty:${req.body.conference.confAlias}`
|
||||
);
|
||||
}
|
||||
res.status(200).send({ message: "Processed conference end" });
|
||||
} else {
|
||||
console.info(
|
||||
`[DONE]\tWEBHOOKS/Conference End/Not Eligible For Autodelete\tID:${req.body.conference.confId}\tParty:${req.body.conference.confAlias}`
|
||||
);
|
||||
res.status(200).send({ message: "Processed conference end" });
|
||||
}
|
||||
} else {
|
||||
console.info(`[DONE]\tWEBHOOKS/Conference End/End Of Duplicate Conference\nID:${req.body.conference.confId}\nParty:${req.body.conference.confAlias}`);
|
||||
console.info(
|
||||
`[DONE]\tWEBHOOKS/Conference End/End Of Duplicate Conference\tID:${req.body.conference.confId}\tParty:${req.body.conference.confAlias}`
|
||||
);
|
||||
}
|
||||
} else {
|
||||
console.error(`[ERROR]\tWEBHOOKS/Conference End/Wrong Event Type\nID:${req.body.conference.confId}\nParty:${req.body.conference.confAlias}`)
|
||||
res.status(400).send({ message: 'Wrong event type' });
|
||||
console.error(
|
||||
`[ERROR]\tWEBHOOKS/Conference End/Wrong Event Type\tID:${req.body.conference.confId}\tParty:${req.body.conference.confAlias}`
|
||||
);
|
||||
res.status(400).send({ message: "Wrong event type" });
|
||||
}
|
||||
return;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user