From 1f4ffa6785169b3e0d3f350ff38afea80c778304 Mon Sep 17 00:00:00 2001 From: Trevor Buckner Date: Thu, 7 Oct 2021 22:01:53 -0400 Subject: [PATCH] Use same `brew` object throughout Rather than using separate `brewText` and `styleText` state variables when printing from /new, just load the files into the same `brew` object the rest of the page uses. Also load localstorage in the same way as on `/new` via BREWKEY and STYLEKEY for consistency, rather than passing it in as a separate `brew` item in localstorage --- client/homebrew/pages/newPage/newPage.jsx | 1 - client/homebrew/pages/printPage/printPage.jsx | 43 ++++++++++++------- 2 files changed, 27 insertions(+), 17 deletions(-) diff --git a/client/homebrew/pages/newPage/newPage.jsx b/client/homebrew/pages/newPage/newPage.jsx index 04004034e..c1887a83f 100644 --- a/client/homebrew/pages/newPage/newPage.jsx +++ b/client/homebrew/pages/newPage/newPage.jsx @@ -274,7 +274,6 @@ const NewPage = createClass({ }, print : function(){ - localStorage.setItem('print', `\n\n${this.state.brew.text}`); window.open('/print?dialog=true&local=print', '_blank'); }, diff --git a/client/homebrew/pages/printPage/printPage.jsx b/client/homebrew/pages/printPage/printPage.jsx index d90cc37c0..e5b7160c6 100644 --- a/client/homebrew/pages/printPage/printPage.jsx +++ b/client/homebrew/pages/printPage/printPage.jsx @@ -7,6 +7,8 @@ const { Meta } = require('vitreum/headtags'); const MarkdownLegacy = require('naturalcrit/markdownLegacy.js'); const Markdown = require('naturalcrit/markdown.js'); +const BREWKEY = 'homebrewery-new'; +const STYLEKEY = 'homebrewery-new-style'; const METAKEY = 'homebrewery-new-meta'; const PrintPage = createClass({ @@ -23,33 +25,42 @@ const PrintPage = createClass({ getInitialState : function() { return { - brewText : this.props.brew.text, - brewRenderer : this.props.brew.renderer + brew : { + text : this.props.brew.text || '', + style : this.props.brew.style || undefined, + renderer : this.props.brew.renderer || 'legacy' + } }; }, componentDidMount : function() { - if(this.props.query.local){ - const localText = localStorage.getItem(prevProps.query.local); - const localRenderer = JSON.parse(localStorage.getItem(METAKEY)).renderer || 'legacy'; - this.setState((prevState, prevProps)=>({ - brewText : localText, - brewRenderer : localRenderer - } - })); + if(this.props.query.local == 'print'){ + const brewStorage = localStorage.getItem(BREWKEY); + const styleStorage = localStorage.getItem(STYLEKEY); + const metaStorage = JSON.parse(localStorage.getItem(METAKEY)); + + this.setState((prevState, prevProps)=>{ + return { + brew : { + text : brewStorage, + style : styleStorage, + renderer : metaStorage.renderer || 'legacy' + } + }; + }); } if(this.props.query.dialog) window.print(); }, renderStyle : function() { - if(!this.props.brew.style) return; - return
${this.props.brew.style} ` }} />; + if(!this.state.brew.style) return; + return
${this.state.brew.style} ` }} />; }, renderPages : function(){ - if(this.state.brewRenderer == 'legacy') { - return _.map(this.state.brewText.split('\\page'), (pageText, index)=>{ + if(this.state.brew.renderer == 'legacy') { + return _.map(this.state.brew.text.split('\\page'), (pageText, index)=>{ return
; }); } else { - return _.map(this.state.brewText.split(/^\\page$/gm), (pageText, index)=>{ + return _.map(this.state.brew.text.split(/^\\page$/gm), (pageText, index)=>{ pageText += `\n\n \n\\column\n `; //Artificial column break at page end to emulate column-fill:auto (until `wide` is used, when column-fill:balance will reappear) return (
@@ -72,7 +83,7 @@ const PrintPage = createClass({ render : function(){ return
- + {/* Apply CSS from Style tab */} {this.renderStyle()}