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] 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;