diff --git a/changelog.md b/changelog.md index adb2d73ce..e171df69a 100644 --- a/changelog.md +++ b/changelog.md @@ -59,9 +59,19 @@ For a full record of development, visit our [Github Page](https://github.com/nat ### v3.6.0 {{taskList +##### calculuschild + + * [x] Fix Google Drive brews sometimes duplicating + +Fixes issues [#2603](https://github.com/naturalcrit/homebrewery/issues/2603) + ##### Jeddai * [x] Add unit tests with full coverage for the Homebrewery API + +##### G-Ambatte + +* [x] Add Themes directory to development server watchlist. }} ### Friday 23/12/2022 - v3.5.0 diff --git a/package.json b/package.json index 978bde7e7..5d630bf2a 100644 --- a/package.json +++ b/package.json @@ -14,6 +14,7 @@ "quick": "node scripts/quick.js", "build": "node scripts/buildHomebrew.js", "buildall": "node scripts/buildHomebrew.js && node scripts/buildAdmin.js", + "builddev": "node scripts/buildHomebrew.js --dev", "lint": "eslint --fix **/*.{js,jsx}", "lint:dry": "eslint **/*.{js,jsx}", "circleci": "npm test && eslint **/*.{js,jsx} --max-warnings=0", diff --git a/scripts/buildHomebrew.js b/scripts/buildHomebrew.js index ea5d1d0e2..ed9afb58b 100644 --- a/scripts/buildHomebrew.js +++ b/scripts/buildHomebrew.js @@ -136,6 +136,6 @@ fs.emptyDirSync('./build'); if(isDev){ livereload('./build'); watchFile('./server.js', { - watch : ['./client', './server'] // Watch additional folders if you want + watch : ['./client', './server', './themes'] // Watch additional folders if you want }); } diff --git a/server/homebrew.api.js b/server/homebrew.api.js index 07b1c33f2..0d3f87a20 100644 --- a/server/homebrew.api.js +++ b/server/homebrew.api.js @@ -109,7 +109,7 @@ If you believe you should have access to this brew, ask the file owner to invite excludePropsFromUpdate : (brew)=>{ // Remove undesired properties const modified = _.clone(brew); - const propsToExclude = ['_id', 'views', 'lastViewed', 'editId', 'shareId', 'googleId']; + const propsToExclude = ['_id', 'views', 'lastViewed']; for (const prop of propsToExclude) { delete modified[prop]; } @@ -189,17 +189,18 @@ If you believe you should have access to this brew, ask the file owner to invite res.status(200).send(saved); }, updateBrew : async (req, res)=>{ - // Initialize brew from request and body, destructure query params, set a constant for the google id, and set the initial value for the after-save method + // Initialize brew from request and body, destructure query params, and set the initial value for the after-save method const brewFromClient = api.excludePropsFromUpdate(req.body); - if(req.brew.version && brewFromClient.version && req.brew.version > brewFromClient.version) { - console.log(`Version mismatch on brew ${req.body.editId}`); + const brewFromServer = req.brew; + if(brewFromServer.version && brewFromClient.version && brewFromServer.version > brewFromClient.version) { + console.log(`Version mismatch on brew ${brewFromClient.editId}`); res.setHeader('Content-Type', 'application/json'); return res.status(409).send(JSON.stringify({ message: `The brew has been changed on a different device. Please save your changes elsewhere, refresh, and try again.` })); } - let brew = _.assign(req.brew, brewFromClient); - const { saveToGoogle, removeFromGoogle } = req.query; + let brew = _.assign(brewFromServer, brewFromClient); const googleId = brew.googleId; + const { saveToGoogle, removeFromGoogle } = req.query; let afterSave = async ()=>true; brew.text = api.mergeBrewText(brew); diff --git a/server/homebrew.api.spec.js b/server/homebrew.api.spec.js index 68355cc1a..71d9bdcc7 100644 --- a/server/homebrew.api.spec.js +++ b/server/homebrew.api.spec.js @@ -342,9 +342,6 @@ brew`); expect(result._id).toBeUndefined(); expect(result.views).toBeUndefined(); expect(result.lastViewed).toBeUndefined(); - expect(result.editId).toBeUndefined(); - expect(result.shareId).toBeUndefined(); - expect(result.googleId).toBeUndefined(); }); it('excludeGoogleProps removes the correct keys', ()=>{