From 9d2a305f038dc2586a2a42debfeb24168b472776 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Losada=20Hern=C3=A1ndez?= Date: Wed, 23 Oct 2024 09:02:23 +0200 Subject: [PATCH 1/9] initial commit --- client/homebrew/pages/userPage/userPage.jsx | 103 ++++++++------------ 1 file changed, 42 insertions(+), 61 deletions(-) diff --git a/client/homebrew/pages/userPage/userPage.jsx b/client/homebrew/pages/userPage/userPage.jsx index d6fe25b30..fae39846c 100644 --- a/client/homebrew/pages/userPage/userPage.jsx +++ b/client/homebrew/pages/userPage/userPage.jsx @@ -1,6 +1,6 @@ const React = require('react'); -const createClass = require('create-react-class'); -const _ = require('lodash'); +const { useState, useEffect } = require('react'); +const _ = require('lodash'); const ListPage = require('../basePages/listPage/listPage.jsx'); @@ -14,69 +14,50 @@ 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) => { + const { username = '', brews = [], query = '', error = null } = props; + const usernameWithS = username + (username.endsWith('s') ? `’` : `’s`); - const brews = _.groupBy(this.props.brews, (brew)=>{ - return (brew.published ? 'published' : 'private'); - }); + const groupedBrews = _.groupBy(brews, (brew) => { + return brew.published ? 'published' : 'private'; + }); - 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 brewCollection = [ + { + title: `${usernameWithS} published brews`, + class: 'published', + brews: groupedBrews.published || [] + }, + ...(username === global.account?.username ? [{ + title: `${usernameWithS} unpublished brews`, + class: 'unpublished', + brews: groupedBrews.private || [] + }] : []) + ]; - return { - brewCollection : brewCollection - }; - }, - errorReported : function(error) { - this.setState({ - error - }); - }, + const [currentError, setCurrentError] = useState(error); - navItems : function() { - return - - {this.state.error ? - : - null - } - - - - - - - ; - }, + const errorReported = (error) => { + setCurrentError(error); + }; - render : function(){ - return ; - } -}); + const navItems = () => ( + + + {currentError && ()} + + + + + + + + ); + + return ( + + ); +}; module.exports = UserPage; From b9bf9c7e70fe6704e9cb4ce3a4fd4eb2cfd8d764 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Losada=20Hern=C3=A1ndez?= Date: Wed, 23 Oct 2024 17:03:00 +0200 Subject: [PATCH 2/9] "Refactor UserPage component: removed unnecessary import, updated function signature, and moved useState hook declaration" --- client/homebrew/pages/userPage/userPage.jsx | 23 +++++++-------------- 1 file changed, 7 insertions(+), 16 deletions(-) diff --git a/client/homebrew/pages/userPage/userPage.jsx b/client/homebrew/pages/userPage/userPage.jsx index fae39846c..4fdd8cf93 100644 --- a/client/homebrew/pages/userPage/userPage.jsx +++ b/client/homebrew/pages/userPage/userPage.jsx @@ -1,12 +1,11 @@ const React = require('react'); -const { useState, useEffect } = require('react'); +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,13 +13,12 @@ const HelpNavItem = require('../../navbar/help.navitem.jsx'); const ErrorNavItem = require('../../navbar/error-navitem.jsx'); const VaultNavitem = require('../../navbar/vault.navitem.jsx'); -const UserPage = (props) => { - const { username = '', brews = [], query = '', error = null } = props; - const usernameWithS = username + (username.endsWith('s') ? `’` : `’s`); +const UserPage = ({ username = '', brews = [], query = '', error = null, ...props }) => { - const groupedBrews = _.groupBy(brews, (brew) => { - return brew.published ? 'published' : 'private'; - }); + const [currentError, setCurrentError] = useState(error); + + const usernameWithS = username + (username.endsWith('s') ? `’` : `’s`); + const groupedBrews = _.groupBy(brews, brew => brew.published ? 'published' : 'private'); const brewCollection = [ { @@ -35,12 +33,6 @@ const UserPage = (props) => { }] : []) ]; - const [currentError, setCurrentError] = useState(error); - - const errorReported = (error) => { - setCurrentError(error); - }; - const navItems = () => ( @@ -55,8 +47,7 @@ const UserPage = (props) => { ); return ( - + setCurrentError(error)} /> ); }; From 422257743e5234808c1c483bec66868a8eb7f853 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Losada=20Hern=C3=A1ndez?= <5ecleric.naturalcrit@gmail.com> Date: Thu, 24 Oct 2024 20:39:59 +0200 Subject: [PATCH 3/9] accept navitems suggestion Co-authored-by: Trevor Buckner --- client/homebrew/pages/userPage/userPage.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/homebrew/pages/userPage/userPage.jsx b/client/homebrew/pages/userPage/userPage.jsx index 4fdd8cf93..9ef1e6535 100644 --- a/client/homebrew/pages/userPage/userPage.jsx +++ b/client/homebrew/pages/userPage/userPage.jsx @@ -33,7 +33,7 @@ const UserPage = ({ username = '', brews = [], query = '', error = null, ...prop }] : []) ]; - const navItems = () => ( + const navItems = ( {currentError && ()} From 9770fea3fdcbbf1b709eb345d2d8bb7953691043 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Losada=20Hern=C3=A1ndez?= <5ecleric.naturalcrit@gmail.com> Date: Thu, 24 Oct 2024 21:13:49 +0200 Subject: [PATCH 4/9] update navitems call as suggested Co-authored-by: Trevor Buckner --- client/homebrew/pages/userPage/userPage.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/homebrew/pages/userPage/userPage.jsx b/client/homebrew/pages/userPage/userPage.jsx index 9ef1e6535..d57fc747e 100644 --- a/client/homebrew/pages/userPage/userPage.jsx +++ b/client/homebrew/pages/userPage/userPage.jsx @@ -47,7 +47,7 @@ const UserPage = ({ username = '', brews = [], query = '', error = null, ...prop ); return ( - setCurrentError(error)} /> + setCurrentError(error)} /> ); }; From b129ec146932c58bbdd5d8b93ea6ea0fee1ad96e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Losada=20Hern=C3=A1ndez?= Date: Sat, 26 Oct 2024 19:43:27 +0200 Subject: [PATCH 5/9] linting --- client/homebrew/pages/userPage/userPage.jsx | 52 ++++++++++----------- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/client/homebrew/pages/userPage/userPage.jsx b/client/homebrew/pages/userPage/userPage.jsx index 4fdd8cf93..ebc0ee026 100644 --- a/client/homebrew/pages/userPage/userPage.jsx +++ b/client/homebrew/pages/userPage/userPage.jsx @@ -13,42 +13,42 @@ const HelpNavItem = require('../../navbar/help.navitem.jsx'); const ErrorNavItem = require('../../navbar/error-navitem.jsx'); const VaultNavitem = require('../../navbar/vault.navitem.jsx'); -const UserPage = ({ username = '', brews = [], query = '', error = null, ...props }) => { +const UserPage = ({ username = '', brews = [], query = '', error = null, ...props })=>{ - const [currentError, setCurrentError] = useState(error); + const [currentError, setCurrentError] = useState(error); - const usernameWithS = username + (username.endsWith('s') ? `’` : `’s`); - const groupedBrews = _.groupBy(brews, brew => brew.published ? 'published' : 'private'); + const usernameWithS = username + (username.endsWith('s') ? `’` : `’s`); + const groupedBrews = _.groupBy(brews, (brew)=>brew.published ? 'published' : 'private'); const brewCollection = [ { - title: `${usernameWithS} published brews`, - class: 'published', - brews: groupedBrews.published || [] + title : `${usernameWithS} published brews`, + class : 'published', + brews : groupedBrews.published || [] }, ...(username === global.account?.username ? [{ - title: `${usernameWithS} unpublished brews`, - class: 'unpublished', - brews: groupedBrews.private || [] + title : `${usernameWithS} unpublished brews`, + class : 'unpublished', + brews : groupedBrews.private || [] }] : []) - ]; + ]; - const navItems = () => ( - - - {currentError && ()} - - - - - - - - ); + const navItems = ()=>( + + + {currentError && ()} + + + + + + + + ); - return ( - setCurrentError(error)} /> - ); + return ( + setCurrentError(error)} /> + ); }; module.exports = UserPage; From ef1e0f1faab649bb7bde991b6e9418f3a58bc06e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Losada=20Hern=C3=A1ndez?= Date: Sat, 26 Oct 2024 19:45:26 +0200 Subject: [PATCH 6/9] destructure props as per usual --- client/homebrew/pages/userPage/userPage.jsx | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/client/homebrew/pages/userPage/userPage.jsx b/client/homebrew/pages/userPage/userPage.jsx index 50721cd3a..3970e1261 100644 --- a/client/homebrew/pages/userPage/userPage.jsx +++ b/client/homebrew/pages/userPage/userPage.jsx @@ -13,7 +13,14 @@ const HelpNavItem = require('../../navbar/help.navitem.jsx'); const ErrorNavItem = require('../../navbar/error-navitem.jsx'); const VaultNavitem = require('../../navbar/vault.navitem.jsx'); -const UserPage = ({ username = '', brews = [], query = '', error = null, ...props })=>{ +const UserPage = (props)=>{ + props = { + username : '', + brews : [], + query : '', + error : null, + ...props + }; const [currentError, setCurrentError] = useState(error); From a017c28b027a2f48e96a8fbecbbd0f89aefd51b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Losada=20Hern=C3=A1ndez?= Date: Sat, 26 Oct 2024 19:45:55 +0200 Subject: [PATCH 7/9] allow for null error instead of undefined --- client/homebrew/pages/userPage/userPage.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/homebrew/pages/userPage/userPage.jsx b/client/homebrew/pages/userPage/userPage.jsx index 3970e1261..975e475a2 100644 --- a/client/homebrew/pages/userPage/userPage.jsx +++ b/client/homebrew/pages/userPage/userPage.jsx @@ -22,7 +22,7 @@ const UserPage = (props)=>{ ...props }; - const [currentError, setCurrentError] = useState(error); + const [currentError, setCurrentError] = useState(error || null); const usernameWithS = username + (username.endsWith('s') ? `’` : `’s`); const groupedBrews = _.groupBy(brews, (brew)=>brew.published ? 'published' : 'private'); From 6f2252635a70cda2a65d726e516276d11c70b473 Mon Sep 17 00:00:00 2001 From: Trevor Buckner Date: Sat, 26 Oct 2024 22:56:29 -0400 Subject: [PATCH 8/9] Fix crash; props need `props.var` to work --- client/homebrew/pages/userPage/userPage.jsx | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/client/homebrew/pages/userPage/userPage.jsx b/client/homebrew/pages/userPage/userPage.jsx index 975e475a2..5e28051ea 100644 --- a/client/homebrew/pages/userPage/userPage.jsx +++ b/client/homebrew/pages/userPage/userPage.jsx @@ -22,10 +22,10 @@ const UserPage = (props)=>{ ...props }; - const [currentError, setCurrentError] = useState(error || null); + const [currentError, setCurrentError] = useState(props.error || null); - const usernameWithS = username + (username.endsWith('s') ? `’` : `’s`); - const groupedBrews = _.groupBy(brews, (brew)=>brew.published ? 'published' : 'private'); + const usernameWithS = props.username + (props.username.endsWith('s') ? `’` : `’s`); + const groupedBrews = _.groupBy(props.brews, (brew)=>brew.published ? 'published' : 'private'); const brewCollection = [ { @@ -33,7 +33,7 @@ const UserPage = (props)=>{ class : 'published', brews : groupedBrews.published || [] }, - ...(username === global.account?.username ? [{ + ...(props.username === global.account?.username ? [{ title : `${usernameWithS} unpublished brews`, class : 'unpublished', brews : groupedBrews.private || [] @@ -54,7 +54,7 @@ const UserPage = (props)=>{ ); return ( - setCurrentError(error)} /> + setCurrentError(err)} /> ); }; From 1b4d41fc198a87c599b0b21a61215a871e446203 Mon Sep 17 00:00:00 2001 From: Trevor Buckner Date: Sat, 26 Oct 2024 22:59:49 -0400 Subject: [PATCH 9/9] Remove `error` prop Userpage is never passed `Error` prop from anywhere. Thus we can rename the error state here from `currentError` to just `error` --- client/homebrew/pages/userPage/userPage.jsx | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/client/homebrew/pages/userPage/userPage.jsx b/client/homebrew/pages/userPage/userPage.jsx index 5e28051ea..f6fae639d 100644 --- a/client/homebrew/pages/userPage/userPage.jsx +++ b/client/homebrew/pages/userPage/userPage.jsx @@ -18,11 +18,10 @@ const UserPage = (props)=>{ username : '', brews : [], query : '', - error : null, ...props }; - const [currentError, setCurrentError] = useState(props.error || null); + const [error, setError] = useState(null); const usernameWithS = props.username + (props.username.endsWith('s') ? `’` : `’s`); const groupedBrews = _.groupBy(props.brews, (brew)=>brew.published ? 'published' : 'private'); @@ -43,7 +42,7 @@ const UserPage = (props)=>{ const navItems = ( - {currentError && ()} + {error && ()} @@ -54,7 +53,7 @@ const UserPage = (props)=>{ ); return ( - setCurrentError(err)} /> + setError(err)} /> ); };