const admin = require('firebase-admin'); module.exports = async (req, res) => { console.log('Requested Delete - Room - ', req.params.rid); const isAdmin = await admin .firestore() .collection('rooms') .doc(req.params.rid) .collection('users') .doc(JSON.parse(req.body).uid) .get() .then((v) => { if (v.exists) { return v.data().admin; } return false; }); if (!isAdmin) { console.log('[UNAUTHORIZED] Requested Delete - Room - ', req.params.rid); res.status(401).send({ message: 'Not authorized to end this party.' }); return; } await admin .firestore() .collection('rooms') .doc(req.params.rid) .collection('messages') .listDocuments() .then((messages) => messages.forEach((message) => message.delete())) .catch((err) => { console.error( `Failed to delete room messages : \n\t Room: ${req.params.rid} \n\t User: ${req.params.uid}`, err ); }); await admin .firestore() .collection('rooms') .doc(req.params.rid) .collection('users') .listDocuments() .then((users) => users.forEach((user) => user.delete())) .catch((err) => { console.error( `Failed to delete room users : \n\t Room: ${req.params.rid} \n\t User: ${req.params.uid}`, err ); }); await admin .firestore() .collection('rooms') .doc(req.params.rid) .delete() .catch((err) => { console.error( `Failed to delete room : \n\t Room: ${req.params.rid} \n\t User: ${req.params.uid}`, err ); }); res.status(200).send({ message: 'Ended the party' }); };