From 69231ba57a41e2df729d7dff0bff54b2e7081fdc Mon Sep 17 00:00:00 2001 From: Sean Robertson Date: Mon, 21 Jun 2021 12:34:51 +1200 Subject: [PATCH 1/8] Initial pass at appending codefenced CSS to Style data at save time, only on `/new` brews (so only once per brew). --- client/homebrew/pages/newPage/newPage.jsx | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/client/homebrew/pages/newPage/newPage.jsx b/client/homebrew/pages/newPage/newPage.jsx index 14f14a987..c47f8675f 100644 --- a/client/homebrew/pages/newPage/newPage.jsx +++ b/client/homebrew/pages/newPage/newPage.jsx @@ -135,6 +135,13 @@ const NewPage = createClass({ console.log('saving new brew'); + // Split out CSS to Style if CSS codefence exists + if(brew.text.startsWith('```css') && brew.text.indexOf('```\n\n') > 0) { + const index = brew.text.indexOf('```\n\n'); + brew.style = `${brew.style}${brew.text.slice(7, index - 1)}`; + brew.text = brew.text.slice(index + 5); + } + if(this.state.saveGoogle) { const res = await request .post('/api/newGoogle/') From cf4bfc35ead153cdc77216a6e027706d80fcdf27 Mon Sep 17 00:00:00 2001 From: Sean Robertson Date: Mon, 21 Jun 2021 13:00:12 +1200 Subject: [PATCH 2/8] Add new line before appending style data Add a new line between the existing style data and the appended codefenced style data. --- client/homebrew/pages/newPage/newPage.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/homebrew/pages/newPage/newPage.jsx b/client/homebrew/pages/newPage/newPage.jsx index c47f8675f..6d5d20cfc 100644 --- a/client/homebrew/pages/newPage/newPage.jsx +++ b/client/homebrew/pages/newPage/newPage.jsx @@ -138,7 +138,7 @@ const NewPage = createClass({ // Split out CSS to Style if CSS codefence exists if(brew.text.startsWith('```css') && brew.text.indexOf('```\n\n') > 0) { const index = brew.text.indexOf('```\n\n'); - brew.style = `${brew.style}${brew.text.slice(7, index - 1)}`; + brew.style = `${brew.style}\n${brew.text.slice(7, index - 1)}`; brew.text = brew.text.slice(index + 5); } From b72191ae680f0c6eff241be4ae82872f46d5a1af Mon Sep 17 00:00:00 2001 From: Sean Robertson Date: Mon, 21 Jun 2021 13:04:29 +1200 Subject: [PATCH 3/8] Increase Linter max lines for newPage.jsx Increase the maximum number of lines permitted by the Linter for the newPage.jsx file to 300 (was 200). --- client/homebrew/pages/newPage/newPage.jsx | 1 + 1 file changed, 1 insertion(+) diff --git a/client/homebrew/pages/newPage/newPage.jsx b/client/homebrew/pages/newPage/newPage.jsx index 6d5d20cfc..13509f53c 100644 --- a/client/homebrew/pages/newPage/newPage.jsx +++ b/client/homebrew/pages/newPage/newPage.jsx @@ -1,3 +1,4 @@ +/*eslint max-lines: ["warn", {"max": 300, "skipBlankLines": true, "skipComments": true}]*/ require('./newPage.less'); const React = require('react'); const createClass = require('create-react-class'); From 2613d43f3cea41b6a4f9d6b8a07eed494ff5048d Mon Sep 17 00:00:00 2001 From: "G.Ambatte" Date: Mon, 21 Jun 2021 19:38:02 +1200 Subject: [PATCH 4/8] Shift CSS processing from `newPage.jsx/save` to `homebrew.api.js/newBrew`, as this function is only called when saving new Brews. --- client/homebrew/pages/newPage/newPage.jsx | 9 +-------- server/homebrew.api.js | 8 ++++++++ 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/client/homebrew/pages/newPage/newPage.jsx b/client/homebrew/pages/newPage/newPage.jsx index 13509f53c..50393f731 100644 --- a/client/homebrew/pages/newPage/newPage.jsx +++ b/client/homebrew/pages/newPage/newPage.jsx @@ -135,14 +135,7 @@ const NewPage = createClass({ }); console.log('saving new brew'); - - // Split out CSS to Style if CSS codefence exists - if(brew.text.startsWith('```css') && brew.text.indexOf('```\n\n') > 0) { - const index = brew.text.indexOf('```\n\n'); - brew.style = `${brew.style}\n${brew.text.slice(7, index - 1)}`; - brew.text = brew.text.slice(index + 5); - } - + if(this.state.saveGoogle) { const res = await request .post('/api/newGoogle/') diff --git a/server/homebrew.api.js b/server/homebrew.api.js index 51c9903db..0df6a15ac 100644 --- a/server/homebrew.api.js +++ b/server/homebrew.api.js @@ -28,8 +28,16 @@ const mergeBrewText = (text, style)=>{ }; const newBrew = (req, res)=>{ + const brew = req.body; + // Split out CSS to Style if CSS codefence exists + if(brew.text.startsWith('```css') && brew.text.indexOf('```\n\n') > 0) { + const index = brew.text.indexOf('```\n\n'); + brew.style = `${brew.style ? brew.style + '\n' : ''}${brew.text.slice(7, index - 1)}`; + brew.text = brew.text.slice(index + 5); + }; + if(!brew.title) { brew.title = getGoodBrewTitle(brew.text); } From ad0e4a2099fe1a788fb6975dcfe272421cd2b8cc Mon Sep 17 00:00:00 2001 From: "G.Ambatte" Date: Mon, 21 Jun 2021 19:39:30 +1200 Subject: [PATCH 5/8] Lint fixes. --- client/homebrew/pages/newPage/newPage.jsx | 2 +- server/homebrew.api.js | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/client/homebrew/pages/newPage/newPage.jsx b/client/homebrew/pages/newPage/newPage.jsx index 50393f731..57a098cb8 100644 --- a/client/homebrew/pages/newPage/newPage.jsx +++ b/client/homebrew/pages/newPage/newPage.jsx @@ -135,7 +135,7 @@ const NewPage = createClass({ }); console.log('saving new brew'); - + if(this.state.saveGoogle) { const res = await request .post('/api/newGoogle/') diff --git a/server/homebrew.api.js b/server/homebrew.api.js index 0df6a15ac..92ca53a8f 100644 --- a/server/homebrew.api.js +++ b/server/homebrew.api.js @@ -34,10 +34,10 @@ const newBrew = (req, res)=>{ // Split out CSS to Style if CSS codefence exists if(brew.text.startsWith('```css') && brew.text.indexOf('```\n\n') > 0) { const index = brew.text.indexOf('```\n\n'); - brew.style = `${brew.style ? brew.style + '\n' : ''}${brew.text.slice(7, index - 1)}`; + brew.style = `${brew.style ? `${brew.style}\n` : ''}${brew.text.slice(7, index - 1)}`; brew.text = brew.text.slice(index + 5); }; - + if(!brew.title) { brew.title = getGoodBrewTitle(brew.text); } From a74916d593b33e940dd8fed8f7bfd4c29d9ebb31 Mon Sep 17 00:00:00 2001 From: "G.Ambatte" Date: Mon, 21 Jun 2021 19:46:54 +1200 Subject: [PATCH 6/8] Removed CSS splitting from `homebrew.api.js` and back to `newPage.jsx`. --- client/homebrew/pages/newPage/newPage.jsx | 12 ++++++++++-- server/homebrew.api.js | 7 ------- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/client/homebrew/pages/newPage/newPage.jsx b/client/homebrew/pages/newPage/newPage.jsx index 57a098cb8..b069f6e7d 100644 --- a/client/homebrew/pages/newPage/newPage.jsx +++ b/client/homebrew/pages/newPage/newPage.jsx @@ -136,10 +136,18 @@ const NewPage = createClass({ console.log('saving new brew'); + const brew = this.state.brew; + // Split out CSS to Style if CSS codefence exists + if(brew.text.startsWith('```css') && brew.text.indexOf('```\n\n') > 0) { + const index = brew.text.indexOf('```\n\n'); + brew.style = `${brew.style ? `${brew.style}\n` : ''}${brew.text.slice(7, index - 1)}`; + brew.text = brew.text.slice(index + 5); + }; + if(this.state.saveGoogle) { const res = await request .post('/api/newGoogle/') - .send(this.state.brew) + .send(brew) .catch((err)=>{ console.log(err.status === 401 ? 'Not signed in!' @@ -153,7 +161,7 @@ const NewPage = createClass({ window.location = `/edit/${brew.googleId}${brew.editId}`; } else { request.post('/api') - .send(this.state.brew) + .send(brew) .end((err, res)=>{ if(err){ this.setState({ diff --git a/server/homebrew.api.js b/server/homebrew.api.js index 92ca53a8f..7d0e9670e 100644 --- a/server/homebrew.api.js +++ b/server/homebrew.api.js @@ -31,13 +31,6 @@ const newBrew = (req, res)=>{ const brew = req.body; - // Split out CSS to Style if CSS codefence exists - if(brew.text.startsWith('```css') && brew.text.indexOf('```\n\n') > 0) { - const index = brew.text.indexOf('```\n\n'); - brew.style = `${brew.style ? `${brew.style}\n` : ''}${brew.text.slice(7, index - 1)}`; - brew.text = brew.text.slice(index + 5); - }; - if(!brew.title) { brew.title = getGoodBrewTitle(brew.text); } From e2280197b94986f0f81b1e09cfa9846e9efd7db3 Mon Sep 17 00:00:00 2001 From: "G.Ambatte" Date: Mon, 21 Jun 2021 19:49:35 +1200 Subject: [PATCH 7/8] Unwinding hanging new line accidentally left after removing other code changes. --- server/homebrew.api.js | 1 - 1 file changed, 1 deletion(-) diff --git a/server/homebrew.api.js b/server/homebrew.api.js index 7d0e9670e..51c9903db 100644 --- a/server/homebrew.api.js +++ b/server/homebrew.api.js @@ -28,7 +28,6 @@ const mergeBrewText = (text, style)=>{ }; const newBrew = (req, res)=>{ - const brew = req.body; if(!brew.title) { From e07bb1b3c2f7e3b366e010a330d12e792056782b Mon Sep 17 00:00:00 2001 From: Trevor Buckner Date: Thu, 24 Jun 2021 23:29:01 -0400 Subject: [PATCH 8/8] Don't save style tab if user never put anything in it --- client/homebrew/editor/editor.jsx | 13 +++++++++++-- client/homebrew/pages/newPage/newPage.jsx | 11 +---------- server.js | 9 --------- server/homebrew.api.js | 10 ++++++---- 4 files changed, 18 insertions(+), 25 deletions(-) diff --git a/client/homebrew/editor/editor.jsx b/client/homebrew/editor/editor.jsx index 7cbd6bb20..12cb0aa37 100644 --- a/client/homebrew/editor/editor.jsx +++ b/client/homebrew/editor/editor.jsx @@ -3,17 +3,26 @@ const React = require('react'); const createClass = require('create-react-class'); const _ = require('lodash'); const cx = require('classnames'); +const dedent = require('dedent-tabs').default; const CodeEditor = require('naturalcrit/codeEditor/codeEditor.jsx'); const SnippetBar = require('./snippetbar/snippetbar.jsx'); const MetadataEditor = require('./metadataEditor/metadataEditor.jsx'); +const SNIPPETBAR_HEIGHT = 25; +const DEFAULT_STYLE_TEXT = dedent` + /*=======--- Example CSS styling ---=======*/ + /* Any CSS here will apply to your document! */ + + .myExampleClass { + color: black; + }`; const splice = function(str, index, inject){ return str.slice(0, index) + inject + str.slice(index); }; -const SNIPPETBAR_HEIGHT = 25; + const Editor = createClass({ getDefaultProps : function() { @@ -176,7 +185,7 @@ const Editor = createClass({ return ; } if(this.isMeta()){ diff --git a/client/homebrew/pages/newPage/newPage.jsx b/client/homebrew/pages/newPage/newPage.jsx index b069f6e7d..6b48df4a4 100644 --- a/client/homebrew/pages/newPage/newPage.jsx +++ b/client/homebrew/pages/newPage/newPage.jsx @@ -4,7 +4,6 @@ const React = require('react'); const createClass = require('create-react-class'); const _ = require('lodash'); const request = require('superagent'); -const dedent = require('dedent-tabs').default; const Markdown = require('naturalcrit/markdown.js'); @@ -24,14 +23,7 @@ const NewPage = createClass({ getDefaultProps : function() { return { brew : { - text : '', - style : dedent` - /*=======--- Example CSS styling ---=======*/ - /* Any CSS here will apply to your document! */ - - .myExampleClass { - color: black; - }`, + text : '', shareId : null, editId : null, createdAt : null, @@ -52,7 +44,6 @@ const NewPage = createClass({ return { brew : { text : this.props.brew.text || '', - style : this.props.brew.style || '', gDrive : false, title : this.props.brew.title || '', description : this.props.brew.description || '', diff --git a/server.js b/server.js index b7e71794d..45e073065 100644 --- a/server.js +++ b/server.js @@ -9,7 +9,6 @@ const GoogleActions = require('./server/googleActions.js'); const serveCompressedStaticAssets = require('./server/static-assets.mv.js'); const sanitizeFilename = require('sanitize-filename'); const asyncHandler = require('express-async-handler'); -const dedent = require('dedent-tabs').default; const brewAccessTypes = ['edit', 'share', 'raw']; @@ -37,14 +36,6 @@ const getBrewFromId = asyncHandler(async (id, accessType)=>{ const index = brew.text.indexOf('```\n\n'); brew.style = brew.text.slice(7, index - 1); brew.text = brew.text.slice(index + 5); - } else { - brew.style = dedent` - /*=======--- Example CSS styling ---=======*/ - /* Any CSS here will apply to your document! */ - - .myExampleClass { - color: black; - }`; } return brew; }); diff --git a/server/homebrew.api.js b/server/homebrew.api.js index 51c9903db..1f988761d 100644 --- a/server/homebrew.api.js +++ b/server/homebrew.api.js @@ -20,10 +20,12 @@ const getGoodBrewTitle = (text)=>{ }; const mergeBrewText = (text, style)=>{ - text = `\`\`\`css\n` + - `${style}\n` + - `\`\`\`\n\n` + - `${text}`; + if(typeof style !== 'undefined') { + text = `\`\`\`css\n` + + `${style}\n` + + `\`\`\`\n\n` + + `${text}`; + } return text; };