Fixing editProfile bugs and making the database storage more efficient

This commit is contained in:
Clayton Wilson 2019-10-24 15:44:53 -04:00
parent b17fb1f3f0
commit 8f5020f881
3 changed files with 35 additions and 11 deletions

View File

@ -125,7 +125,7 @@ exports.login = (req, res) => {
})
.catch((err) => {
console.error(err);
if (err.code === "auth/wrong-password" || err.code === "auth/invalid-email") {
if (err.code === "auth/wrong-password" || err.code === "auth/invalid-email" || err.code === "auth/user-not-found") {
return res
.status(403)
.json({ general: "Invalid credentials. Please try again." });
@ -153,7 +153,7 @@ exports.updateProfileInfo = (req, res) => {
// TODO: Add functionality for adding/updating profile images
// Data validation
const { valid, errors, profileData } = validateUpdateProfileInfo(req.body);
const { valid, errors, profileData } = validateUpdateProfileInfo(req);
if (!valid) return res.status(400).json(errors);
// Update the database entry for this user

View File

@ -9,23 +9,39 @@ const isEmpty = (str) => {
else return false;
};
exports.validateUpdateProfileInfo = (data) => {
exports.validateUpdateProfileInfo = (req) => {
const newData = req.body;
// const oldData = req.userData;
let errors = {};
let profileData = {};
let profileData = req.userData;
// ?: Should users be able to change their handles and emails?
// Only adds the key to the database if the values are not empty
if (!isEmpty(data.firstName)) profileData.firstName = data.firstName.trim();
if (!isEmpty(data.lastName)) profileData.lastName = data.lastName.trim();
if (!isEmpty(data.bio)) profileData.bio = data.bio.trim();
// Deletes any unused keys so that they aren't stored in the database
if (newData.firstName) {
profileData.firstName = newData.firstName.toString().trim();
} else {
delete profileData.firstName;
}
if (isEmpty(data.email)) {
if (newData.lastName) {
profileData.lastName = newData.lastName.toString().trim();
} else {
delete profileData.lastName;
}
if (newData.bio) {
profileData.bio = newData.bio.toString().trim();
} else {
delete profileData.bio;
}
if (isEmpty(newData.email)) {
errors.email = "Must not be empty.";
} else if (!isEmail(data.email)) {
} else if (!isEmail(newData.email)) {
errors.email = "Must be a valid email.";
} else {
profileData.email = data.email;
profileData.email = newData.email;
}
return {

View File

@ -88,6 +88,14 @@ export class edit extends Component {
handle: this.state.handle,
bio: this.state.bio
};
// Removes all keys from newProfileData that are empty, undefined, or null
Object.keys(newProfileData).forEach(key => {
if (newProfileData[key] === "" || newProfileData[key] === undefined || newProfileData[key] === null) {
delete newProfileData[key];
}
})
axios
.post("/updateProfileInfo", newProfileData)
.then((res) => {