diff --git a/client/homebrew/pages/userPage/userPage.jsx b/client/homebrew/pages/userPage/userPage.jsx index d6fe25b30..f6fae639d 100644 --- a/client/homebrew/pages/userPage/userPage.jsx +++ b/client/homebrew/pages/userPage/userPage.jsx @@ -1,12 +1,11 @@ const React = require('react'); -const createClass = require('create-react-class'); -const _ = require('lodash'); +const { useState } = React; +const _ = require('lodash'); const ListPage = require('../basePages/listPage/listPage.jsx'); const Nav = require('naturalcrit/nav/nav.jsx'); const Navbar = require('../../navbar/navbar.jsx'); - const RecentNavItem = require('../../navbar/recent.navitem.jsx').both; const Account = require('../../navbar/account.navitem.jsx'); const NewBrew = require('../../navbar/newbrew.navitem.jsx'); @@ -14,69 +13,48 @@ const HelpNavItem = require('../../navbar/help.navitem.jsx'); const ErrorNavItem = require('../../navbar/error-navitem.jsx'); const VaultNavitem = require('../../navbar/vault.navitem.jsx'); -const UserPage = createClass({ - displayName : 'UserPage', - getDefaultProps : function() { - return { - username : '', - brews : [], - query : '', - error : null - }; - }, - getInitialState : function() { - const usernameWithS = this.props.username + (this.props.username.endsWith('s') ? `’` : `’s`); +const UserPage = (props)=>{ + props = { + username : '', + brews : [], + query : '', + ...props + }; - const brews = _.groupBy(this.props.brews, (brew)=>{ - return (brew.published ? 'published' : 'private'); - }); + const [error, setError] = useState(null); - const brewCollection = [ - { - title : `${usernameWithS} published brews`, - class : 'published', - brews : brews.published - } - ]; - if(this.props.username == global.account?.username){ - brewCollection.push( - { - title : `${usernameWithS} unpublished brews`, - class : 'unpublished', - brews : brews.private - } - ); - } + const usernameWithS = props.username + (props.username.endsWith('s') ? `’` : `’s`); + const groupedBrews = _.groupBy(props.brews, (brew)=>brew.published ? 'published' : 'private'); - return { - brewCollection : brewCollection - }; - }, - errorReported : function(error) { - this.setState({ - error - }); - }, + const brewCollection = [ + { + title : `${usernameWithS} published brews`, + class : 'published', + brews : groupedBrews.published || [] + }, + ...(props.username === global.account?.username ? [{ + title : `${usernameWithS} unpublished brews`, + class : 'unpublished', + brews : groupedBrews.private || [] + }] : []) + ]; - navItems : function() { - return + const navItems = ( + - {this.state.error ? - : - null - } + {error && ()} - + - ; - }, + + ); - render : function(){ - return ; - } -}); + return ( + setError(err)} /> + ); +}; module.exports = UserPage;