From d18bd500b1d3e53eef88cfa535a2d2f3fadc7442 Mon Sep 17 00:00:00 2001 From: Trevor Buckner Date: Thu, 7 Feb 2019 16:36:32 -0500 Subject: [PATCH] Fixing delete buttons Delete should now first remove the current user as an editor, and only delete the file if he was the last editor. Currently, anyone who views your brew is added as an editor and if they delete it, the whole brew is deleted for everyone. --- server/homebrew.api.js | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/server/homebrew.api.js b/server/homebrew.api.js index e250de18a..4682f5987 100644 --- a/server/homebrew.api.js +++ b/server/homebrew.api.js @@ -67,11 +67,26 @@ router.put('/api/update/:id', (req, res)=>{ router.get('/api/remove/:id', (req, res)=>{ HomebrewModel.find({ editId: req.params.id }, (err, objs)=>{ if(!objs.length || err) return res.status(404).send('Can not find homebrew with that id'); - const resEntry = objs[0]; - resEntry.remove((err)=>{ - if(err) return res.status(500).send('Error while removing'); - return res.status(200).send(); - }); + const brew = objs[0]; + + // Remove current user as author + if(req.account){ + brew.authors = _.pull(brew.authors, req.account.username); + brew.markModified('authors'); + } + + // Delete brew if there are no authors left + if(!brew.authors.length) + brew.remove((err)=>{ + if(err) return res.status(500).send('Error while removing'); + return res.status(200).send(); + }); + // Otherwise, save the brew with updated author list + else + brew.save((err, savedBrew)=>{ + if(err) throw err; + return res.status(200).send(savedBrew); + }); }); }); @@ -127,4 +142,4 @@ module.exports = function(app){ return app; } -*/ \ No newline at end of file +*/