From 0b01f27d11a379c7a786d12f9231f472bbc3514b Mon Sep 17 00:00:00 2001 From: Trevor Buckner Date: Tue, 23 Jul 2024 16:26:33 -0400 Subject: [PATCH] Load theme bundles on `/share` page --- client/homebrew/pages/sharePage/sharePage.jsx | 24 +++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/client/homebrew/pages/sharePage/sharePage.jsx b/client/homebrew/pages/sharePage/sharePage.jsx index ac2455696..90dc1959a 100644 --- a/client/homebrew/pages/sharePage/sharePage.jsx +++ b/client/homebrew/pages/sharePage/sharePage.jsx @@ -18,18 +18,38 @@ const SharePage = createClass({ displayName : 'SharePage', getDefaultProps : function() { return { - brew : DEFAULT_BREW_LOAD + brew : DEFAULT_BREW_LOAD, + themeBundle : {} + }; + }, + + getInitialState : function() { + return { + themeBundle : this.props.themeBundle }; }, componentDidMount : function() { document.addEventListener('keydown', this.handleControlKeys); + + this.fetchThemeBundle(this.props.brew.renderer, this.props.brew.theme); }, componentWillUnmount : function() { document.removeEventListener('keydown', this.handleControlKeys); }, + // Loads the theme bundle and parses it out. Called when the iFrame is first mounted, and when a new theme is selected + fetchThemeBundle : function(renderer, theme) { + fetch(`${window.location.protocol}//${window.location.host}/theme/${renderer}/${theme}`).then((response)=>response.json()).then((themeBundle)=>{ + themeBundle.joinedStyles = themeBundle.styles.map((style)=>``).join('\n\n'); //DOMPurify.sanitize(joinedStyles, purifyConfig); + this.setState((prevState)=>({ // MOVE TO MOUNT STEP OF SHARE / NEW / EDIT + ...prevState, + themeBundle : themeBundle + })); + }); + }, + handleControlKeys : function(e){ if(!(e.ctrlKey || e.metaKey)) return; const P_KEY = 80; @@ -99,7 +119,7 @@ const SharePage = createClass({ style={this.props.brew.style} renderer={this.props.brew.renderer} theme={this.props.brew.theme} - userThemes={this.props.userThemes} + themeBundle={this.state.themeBundle} allowPrint={true} />