From 8c986bb97dccc28af9d2a7743ed4df9ee144464c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Losada=20Hern=C3=A1ndez?= Date: Thu, 28 Nov 2024 00:21:35 +0100 Subject: [PATCH 1/5] initial commit --- client/homebrew/pages/sharePage/sharePage.jsx | 174 +++++++++--------- 1 file changed, 84 insertions(+), 90 deletions(-) diff --git a/client/homebrew/pages/sharePage/sharePage.jsx b/client/homebrew/pages/sharePage/sharePage.jsx index 04f0e3a6b..b561ead3f 100644 --- a/client/homebrew/pages/sharePage/sharePage.jsx +++ b/client/homebrew/pages/sharePage/sharePage.jsx @@ -1,6 +1,6 @@ require('./sharePage.less'); const React = require('react'); -const createClass = require('create-react-class'); +const { useState, useEffect, useCallback } = React; const { Meta } = require('vitreum/headtags'); const Nav = require('naturalcrit/nav/nav.jsx'); @@ -8,130 +8,124 @@ const Navbar = require('../../navbar/navbar.jsx'); const MetadataNav = require('../../navbar/metadata.navitem.jsx'); const PrintNavItem = require('../../navbar/print.navitem.jsx'); const RecentNavItem = require('../../navbar/recent.navitem.jsx').both; -const VaultNavItem = require('../../navbar/vault.navitem.jsx'); const Account = require('../../navbar/account.navitem.jsx'); const BrewRenderer = require('../../brewRenderer/brewRenderer.jsx'); const { DEFAULT_BREW_LOAD } = require('../../../../server/brewDefaults.js'); const { printCurrentBrew, fetchThemeBundle } = require('../../../../shared/helpers.js'); -const SharePage = createClass({ - displayName : 'SharePage', - getDefaultProps : function() { - return { - brew : DEFAULT_BREW_LOAD, - disableMeta : false - }; - }, +const SharePage = (props)=>{ + const { brew = DEFAULT_BREW_LOAD, disableMeta = false } = props; - getInitialState : function() { - return { - themeBundle : {}, - currentBrewRendererPageNum : 1 - }; - }, + const [state, setState] = useState({ + themeBundle : {}, + currentBrewRendererPageNum : 1, + }); - componentDidMount : function() { - document.addEventListener('keydown', this.handleControlKeys); + const handleBrewRendererPageChange = useCallback((pageNumber)=>{ + updateState({ currentBrewRendererPageNum: pageNumber }); + }, []); - fetchThemeBundle(this, this.props.brew.renderer, this.props.brew.theme); - }, - - componentWillUnmount : function() { - document.removeEventListener('keydown', this.handleControlKeys); - }, - - handleBrewRendererPageChange : function(pageNumber){ - this.setState({ currentBrewRendererPageNum: pageNumber }); - }, - - handleControlKeys : function(e){ + const handleControlKeys = useCallback((e)=>{ if(!(e.ctrlKey || e.metaKey)) return; const P_KEY = 80; - if(e.keyCode == P_KEY){ - if(e.keyCode == P_KEY) printCurrentBrew(); + if(e.keyCode === P_KEY) { + printCurrentBrew(); e.stopPropagation(); e.preventDefault(); } - }, + }, []); - processShareId : function() { - return this.props.brew.googleId && !this.props.brew.stubbed ? - this.props.brew.googleId + this.props.brew.shareId : - this.props.brew.shareId; - }, + useEffect(()=>{ + document.addEventListener('keydown', handleControlKeys); + fetchThemeBundle( + { + setState, + }, + brew.renderer, + brew.theme + ); - renderEditLink : function(){ - if(!this.props.brew.editId) return; + return ()=>{ + document.removeEventListener('keydown', handleControlKeys); + }; + }, [brew.renderer, brew.theme, handleControlKeys]); - let editLink = this.props.brew.editId; - if(this.props.brew.googleId && !this.props.brew.stubbed) { - editLink = this.props.brew.googleId + editLink; + const processShareId = useCallback(()=>{ + return brew.googleId && !brew.stubbed ? brew.googleId + brew.shareId : brew.shareId; + }, [brew]); + + const renderEditLink = ()=>{ + if(!brew.editId) return null; + + let editLink = brew.editId; + if(brew.googleId && !brew.stubbed) { + editLink = brew.googleId + editLink; } - return - edit - ; - }, + return ( + + edit + + ); + }; - render : function(){ - const titleStyle = this.props.disableMeta ? { cursor: 'default' } : {}; - const titleEl = {this.props.brew.title}; + const titleStyle = disableMeta ? { cursor: 'default' } : {}; + const titleEl = ( + + {brew.title} + + ); - return
+ return ( +
- { - this.props.disableMeta ? - titleEl - : - - {titleEl} - - } + {disableMeta ? titleEl : {titleEl}} - {this.props.brew.shareId && <> - - - - source - - - view - - {this.renderEditLink()} - - download - - - clone to new - - - } - - + {brew.shareId && ( + <> + + + + source + + + view + + {renderEditLink()} + + download + + + clone to new + + + + )} +
-
; - } -}); +
+ ); +}; module.exports = SharePage; From 9804c3933f4de63298d4e0a293336cb5d8eb2e66 Mon Sep 17 00:00:00 2001 From: Trevor Buckner Date: Thu, 26 Dec 2024 19:09:23 -0500 Subject: [PATCH 2/5] Remove unneeded dependencies for useEffect UseEffect is only intended to be called once. Similarly, handleControlKeys doesn't need "useCallBack" because it will never be passed to a child or trigger any re-render by changing. --- client/homebrew/pages/sharePage/sharePage.jsx | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/client/homebrew/pages/sharePage/sharePage.jsx b/client/homebrew/pages/sharePage/sharePage.jsx index b561ead3f..439c38d6a 100644 --- a/client/homebrew/pages/sharePage/sharePage.jsx +++ b/client/homebrew/pages/sharePage/sharePage.jsx @@ -26,7 +26,7 @@ const SharePage = (props)=>{ updateState({ currentBrewRendererPageNum: pageNumber }); }, []); - const handleControlKeys = useCallback((e)=>{ + const handleControlKeys = (e)=>{ if(!(e.ctrlKey || e.metaKey)) return; const P_KEY = 80; if(e.keyCode === P_KEY) { @@ -34,14 +34,12 @@ const SharePage = (props)=>{ e.stopPropagation(); e.preventDefault(); } - }, []); + }; useEffect(()=>{ document.addEventListener('keydown', handleControlKeys); fetchThemeBundle( - { - setState, - }, + { setState }, brew.renderer, brew.theme ); @@ -49,7 +47,7 @@ const SharePage = (props)=>{ return ()=>{ document.removeEventListener('keydown', handleControlKeys); }; - }, [brew.renderer, brew.theme, handleControlKeys]); + }, []); const processShareId = useCallback(()=>{ return brew.googleId && !brew.stubbed ? brew.googleId + brew.shareId : brew.shareId; From a2c4f73e7d8d2d4364f46b39cc82c1688d48c468 Mon Sep 17 00:00:00 2001 From: Trevor Buckner Date: Thu, 26 Dec 2024 19:12:34 -0500 Subject: [PATCH 3/5] processShareId does not need useCallback() --- client/homebrew/pages/sharePage/sharePage.jsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/client/homebrew/pages/sharePage/sharePage.jsx b/client/homebrew/pages/sharePage/sharePage.jsx index 439c38d6a..f57a79507 100644 --- a/client/homebrew/pages/sharePage/sharePage.jsx +++ b/client/homebrew/pages/sharePage/sharePage.jsx @@ -49,9 +49,9 @@ const SharePage = (props)=>{ }; }, []); - const processShareId = useCallback(()=>{ + const processShareId = ()=>{ return brew.googleId && !brew.stubbed ? brew.googleId + brew.shareId : brew.shareId; - }, [brew]); + }; const renderEditLink = ()=>{ if(!brew.editId) return null; From bc7297de2e93c23ac496d9542d2fab8619bc5bd7 Mon Sep 17 00:00:00 2001 From: Trevor Buckner Date: Thu, 26 Dec 2024 19:15:33 -0500 Subject: [PATCH 4/5] Mirror editId logic from shareId --- client/homebrew/pages/sharePage/sharePage.jsx | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/client/homebrew/pages/sharePage/sharePage.jsx b/client/homebrew/pages/sharePage/sharePage.jsx index f57a79507..a07ed0f0e 100644 --- a/client/homebrew/pages/sharePage/sharePage.jsx +++ b/client/homebrew/pages/sharePage/sharePage.jsx @@ -56,10 +56,7 @@ const SharePage = (props)=>{ const renderEditLink = ()=>{ if(!brew.editId) return null; - let editLink = brew.editId; - if(brew.googleId && !brew.stubbed) { - editLink = brew.googleId + editLink; - } + const editLink = brew.googleId && ! brew.stubbed ? brew.googleId + brew.editId : brew.editId; return ( From d84f071c62beca7e59f54863f1d240b5a8d37b93 Mon Sep 17 00:00:00 2001 From: Trevor Buckner Date: Thu, 26 Dec 2024 19:20:25 -0500 Subject: [PATCH 5/5] Other small cleanup --- client/homebrew/pages/sharePage/sharePage.jsx | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/client/homebrew/pages/sharePage/sharePage.jsx b/client/homebrew/pages/sharePage/sharePage.jsx index a07ed0f0e..15eae54f7 100644 --- a/client/homebrew/pages/sharePage/sharePage.jsx +++ b/client/homebrew/pages/sharePage/sharePage.jsx @@ -65,9 +65,8 @@ const SharePage = (props)=>{ ); }; - const titleStyle = disableMeta ? { cursor: 'default' } : {}; const titleEl = ( - + {brew.title} );