From e02bde5eeda9040ba6be887eb25403953013f9b6 Mon Sep 17 00:00:00 2001 From: Trevor Buckner Date: Wed, 4 Jan 2023 17:33:23 -0500 Subject: [PATCH 1/4] Cleanup; added more fields to DEFAULT_BREW --- server/app.js | 3 +++ server/brewDefaults.js | 28 +++++++++++++++++----------- server/homebrew.api.js | 14 +++++--------- 3 files changed, 25 insertions(+), 20 deletions(-) diff --git a/server/app.js b/server/app.js index dc4e0c8ac..c4c10a8cc 100644 --- a/server/app.js +++ b/server/app.js @@ -407,7 +407,10 @@ if(isLocalEnvironment){ //Render the page const templateFn = require('./../client/template.js'); app.use(asyncHandler(async (req, res, next)=>{ + + // Assuming we have not received a brew yet, populate with default values const brew = _.defaults(req.brew, DEFAULT_BREW); + // Create configuration object const configuration = { local : isLocalEnvironment, diff --git a/server/brewDefaults.js b/server/brewDefaults.js index 72dc37c0a..94243b275 100644 --- a/server/brewDefaults.js +++ b/server/brewDefaults.js @@ -1,30 +1,36 @@ const _ = require('lodash'); -// Default brew properties in most cases +// Default properties for newly-created brews const DEFAULT_BREW = { - text : '', - editId : null, - shareId : null, title : 'Untitled Brew', + text : '', + style : undefined, description : '', + editId : undefined, + shareId : undefined, + createdAt : undefined, + updatedAt : undefined, renderer : 'V3', + theme : '5ePHB', + authors : [], tags : [], systems : [], thumbnail : '', published : false, pageCount : 1, - theme : '5ePHB' + gDrive : false, + trashed : false + }; -// Default brew properties for loading -const DEFAULT_BREW_LOAD = {}; -_.defaults(DEFAULT_BREW_LOAD, +// Default values for older brews with missing properties +// e.g., missing "renderer" is assumed to be "legacy" +const DEFAULT_BREW_LOAD = _.defaults( { - renderer : 'legacy', - published : true + renderer : 'legacy', }, DEFAULT_BREW); module.exports = { DEFAULT_BREW, DEFAULT_BREW_LOAD -}; \ No newline at end of file +}; diff --git a/server/homebrew.api.js b/server/homebrew.api.js index 77d19d638..506af9293 100644 --- a/server/homebrew.api.js +++ b/server/homebrew.api.js @@ -73,17 +73,13 @@ If you believe you should have access to this brew, ask the file owner to invite throw 'Brew not found in Homebrewery database or Google Drive'; } - if(typeof stub?.tags === 'string') { - stub.tags = []; - } + // Clean up brew: fill in missing fields with defaults / fix old invalid values + stub.tags = stub.tags || undefined; // Clear empty strings + stub.renderer = stub.renderer || undefined; // Clear empty strings + stub = _.defaults(stub, DEFAULT_BREW_LOAD); // Fill in blank fields + - // Use _.assignWith instead of _.defaults - does this need to be replicated at all other uses of _.defaults??? - _.assignWith(stub, DEFAULT_BREW_LOAD, (objValue, srcValue)=>{ - if(typeof objValue === 'boolean') return objValue; - return objValue || srcValue; - }); req.brew = stub; - next(); }; }; From b717059a398bd04cdcbb023054bd5494dfae382c Mon Sep 17 00:00:00 2001 From: Trevor Buckner Date: Wed, 4 Jan 2023 20:58:29 -0500 Subject: [PATCH 2/4] Fix `/new` storing string "undefined" in Style tab --- client/homebrew/pages/newPage/newPage.jsx | 3 ++- server/brewDefaults.js | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/client/homebrew/pages/newPage/newPage.jsx b/client/homebrew/pages/newPage/newPage.jsx index 369070f99..cd197f5fb 100644 --- a/client/homebrew/pages/newPage/newPage.jsx +++ b/client/homebrew/pages/newPage/newPage.jsx @@ -67,7 +67,8 @@ const NewPage = createClass({ } localStorage.setItem(BREWKEY, brew.text); - localStorage.setItem(STYLEKEY, brew.style); + if(brew.style) + localStorage.setItem(STYLEKEY, brew.style); localStorage.setItem(METAKEY, JSON.stringify({ 'renderer': brew.renderer, 'theme': brew.theme })); }, componentWillUnmount : function() { diff --git a/server/brewDefaults.js b/server/brewDefaults.js index 94243b275..092f7070a 100644 --- a/server/brewDefaults.js +++ b/server/brewDefaults.js @@ -2,7 +2,7 @@ const _ = require('lodash'); // Default properties for newly-created brews const DEFAULT_BREW = { - title : 'Untitled Brew', + title : '', text : '', style : undefined, description : '', From c78d687387ec82eb74f4d7644add7c6071c2be1c Mon Sep 17 00:00:00 2001 From: Trevor Buckner Date: Wed, 4 Jan 2023 21:32:16 -0500 Subject: [PATCH 3/4] Fix all brews being forced to V3 on load --- server/app.js | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/server/app.js b/server/app.js index c4c10a8cc..de7586209 100644 --- a/server/app.js +++ b/server/app.js @@ -408,9 +408,6 @@ if(isLocalEnvironment){ const templateFn = require('./../client/template.js'); app.use(asyncHandler(async (req, res, next)=>{ - // Assuming we have not received a brew yet, populate with default values - const brew = _.defaults(req.brew, DEFAULT_BREW); - // Create configuration object const configuration = { local : isLocalEnvironment, @@ -420,7 +417,7 @@ app.use(asyncHandler(async (req, res, next)=>{ const props = { version : require('./../package.json').version, url : req.originalUrl, - brew : brew, + brew : req.brew, brews : req.brews, googleBrews : req.googleBrews, account : req.account, From 332bcde4b23789b9b70a45c4b9c06c3f09b6f4d4 Mon Sep 17 00:00:00 2001 From: Trevor Buckner Date: Wed, 4 Jan 2023 21:39:51 -0500 Subject: [PATCH 4/4] Themes weren't being picked up for rendering --- client/homebrew/pages/printPage/printPage.jsx | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/client/homebrew/pages/printPage/printPage.jsx b/client/homebrew/pages/printPage/printPage.jsx index 64ced6072..cff8ebe32 100644 --- a/client/homebrew/pages/printPage/printPage.jsx +++ b/client/homebrew/pages/printPage/printPage.jsx @@ -29,9 +29,10 @@ const PrintPage = createClass({ getInitialState : function() { return { brew : { - text : this.props.brew.text || '', - style : this.props.brew.style || undefined, - renderer : this.props.brew.renderer || 'legacy' + text : this.props.brew.text || '', + style : this.props.brew.style || undefined, + renderer : this.props.brew.renderer || 'legacy', + theme : this.props.brew.theme || '5ePHB' } }; }, @@ -48,7 +49,7 @@ const PrintPage = createClass({ text : brewStorage, style : styleStorage, renderer : metaStorage?.renderer || 'legacy', - theme : metaStorage?.theme || '5ePHB' + theme : metaStorage?.theme || '5ePHB' } }; });