Refactor DM enabled checking to make it re-usable

This commit is contained in:
Clayton Wilson 2019-11-06 01:01:50 -05:00
parent 19d78596b5
commit 5560b6e13c

View File

@ -518,20 +518,18 @@ exports.getDirectMessages = (req, res) => {
}); });
} }
// Sends a DM from the caller to the requested DM document // Returns a promise that resolves if user has DMs enabled
exports.sendDirectMessage = (req, res) => { // and rejects if there is an error or DMs are disabled
return res.status(200).json({message: "Not implemented yet"}) isDirectMessageEnabled = (username) => {
} return new Promise((resolve, reject) => {
let result = {};
// Creates a DM between the caller and the user in the request result.code = null;
exports.createDirectMessage = (req, res) => { result.message = null;
return res.status(200).json({message: "Not implemented yet"}) if (username === null || username === undefined || username === "") {
} result.code = 400;
result.message = "No user was sent in the request. The request should have a non-empty 'user' key.";
// Checks if the requested user has DMs enable or not reject(result);
exports.checkDirectMessagesEnabled = (req, res) => { }
username = req.body.user;
if (username === null || username === undefined) return res.status(400).json({error: "No user was sent in the request. The request should have a 'user' key."});
db.doc(`/users/${username}`) db.doc(`/users/${username}`)
.get() .get()
@ -540,18 +538,62 @@ exports.checkDirectMessagesEnabled = (req, res) => {
console.log(doc.data()) console.log(doc.data())
if (doc.data().dmEnabled === true || doc.data().dmEnabled === null || doc.data().dmEnabled === undefined) { if (doc.data().dmEnabled === true || doc.data().dmEnabled === null || doc.data().dmEnabled === undefined) {
// Assume DMs are enabled if they don't have a dmEnabled key // Assume DMs are enabled if they don't have a dmEnabled key
return res.status(200).json({enabled: true}); resolve(result);
} else { } else {
return res.status(200).json({enabled: false}); result.code = 0;
reject(result);
} }
} else { } else {
console.log(`${username} is not in the database`); console.log(`${username} is not in the database`);
return res.status(400).json({error: `${username} is not in the database`}); result.code = 400;
result.message = `${username} is not in the database`;
reject(result);
} }
}) })
.catch((err) => { .catch((err) => {
console.log("HI")
console.error(err); console.error(err);
return res.status(500).json({error: err}); result.code = 500;
result.message = err;
reject(result);
})
});
}
// Sends a DM from the caller to the requested DM document
exports.sendDirectMessage = (req, res) => {
return res.status(200).json({message: "Not implemented yet"})
}
// Creates a DM between the caller and the user in the request
exports.createDirectMessage = (req, res) => {
// TODO: Check if the user exists
// TODO: Check if this user has dms enabled
// TODO: Check if they have dms enabled
// TODO: Check if there is already a dm
// this.checkDirectMessagesEnabled(req, res);
}
// Checks if the requested user has DMs enable or not
/* Request Parameters
* user: str
*/
exports.checkDirectMessagesEnabled = (req, res) => {
isDirectMessageEnabled(req.body.user)
.then(() => {
return res.status(200).json({enabled: true});
})
.catch((result) => {
console.log(result);
if (result.code === 0) {
// DMs are disabled
return res.status(200).json({enabled: false});
} else {
// Some other error occured
return res.status(result.code).json({err: result.message});
}
}) })
} }