From 506572bbf5266805e1025afa7f220c3163f2a21d Mon Sep 17 00:00:00 2001 From: Daniel Gonzalez Date: Fri, 24 Jan 2025 16:13:14 -0400 Subject: [PATCH] fix(refactor): Refactored class components to function components --- src/App.js | 2 +- src/components/app-body/index.js | 2 +- src/components/app-body/placeholder2.js | 22 ++--- src/components/app-body/placeholder3.js | 22 ++--- .../app-body/servers/select-server-button.js | 39 ++++++++ .../app-body/servers/select-server-view.js | 77 ++++++++++++++++ src/components/nav-menu/old-index.js | 52 ----------- .../servers/select-server-button.js | 54 ----------- src/components/servers/select-server-view.js | 90 ------------------- 9 files changed, 136 insertions(+), 224 deletions(-) create mode 100644 src/components/app-body/servers/select-server-button.js create mode 100644 src/components/app-body/servers/select-server-view.js delete mode 100644 src/components/nav-menu/old-index.js delete mode 100644 src/components/servers/select-server-button.js delete mode 100644 src/components/servers/select-server-view.js diff --git a/src/App.js b/src/App.js index 3d9d912..74fffc8 100644 --- a/src/App.js +++ b/src/App.js @@ -9,7 +9,7 @@ import React, { useEffect, useCallback } from 'react' import './App.css' import LoadScripts from './components/load-scripts' import AsyncLoad from './services/async-load' -import SelectServerButton from './components/servers/select-server-button' +import SelectServerButton from './components/app-body/servers/select-server-button' import Footer from './components/footer' import NavMenu from './components/nav-menu' import useAppState from './hooks/state' diff --git a/src/components/app-body/index.js b/src/components/app-body/index.js index 11808df..eaa1670 100644 --- a/src/components/app-body/index.js +++ b/src/components/app-body/index.js @@ -13,7 +13,7 @@ import React from 'react' import GetBalance from './balance' import Placeholder2 from './placeholder2' import Placeholder3 from './placeholder3' -import ServerSelectView from '../servers/select-server-view' +import ServerSelectView from './servers/select-server-view' function AppBody (props) { // Dependency injection through props diff --git a/src/components/app-body/placeholder2.js b/src/components/app-body/placeholder2.js index 858309d..7fc24f6 100644 --- a/src/components/app-body/placeholder2.js +++ b/src/components/app-body/placeholder2.js @@ -3,22 +3,18 @@ */ // Global npm libraries -import React from 'react' - -class Placeholder2 extends React.Component { - constructor (props) { - super(props) +import React, { useEffect } from 'react' +function Placeholder2 (props) { + useEffect(() => { console.log('Placeholder 2 loaded.') - } + }, []) - render () { - return ( - <> -

This is placeholder View #2

- - ) - } + return ( + <> +

This is placeholder View #2

+ + ) } export default Placeholder2 diff --git a/src/components/app-body/placeholder3.js b/src/components/app-body/placeholder3.js index 6a8a308..22ff854 100644 --- a/src/components/app-body/placeholder3.js +++ b/src/components/app-body/placeholder3.js @@ -3,22 +3,18 @@ */ // Global npm libraries -import React from 'react' - -class Placeholder3 extends React.Component { - constructor (props) { - super(props) +import React, { useEffect } from 'react' +function Placeholder3 (props) { + useEffect(() => { console.log('Placeholder 3 loaded.') - } + }, []) - render () { - return ( - <> -

This is placeholder View #3

- - ) - } + return ( + <> +

This is placeholder View #3

+ + ) } export default Placeholder3 diff --git a/src/components/app-body/servers/select-server-button.js b/src/components/app-body/servers/select-server-button.js new file mode 100644 index 0000000..3d544a2 --- /dev/null +++ b/src/components/app-body/servers/select-server-button.js @@ -0,0 +1,39 @@ +/* + This component contains a drop-down form that lets the user select from + a range of Global Back End servers. +*/ + +// Global npm libraries +import React from 'react' +import { Container, Row, Col, Button } from 'react-bootstrap' + +const ServerSelect = (props) => { + const { appData } = props + + // This is a click handler for the server select button. It brings up the + // server selection View. + const handleServerSelect = () => { + console.log('This function should navigate to the server selection view.') + appData.setMenuState(100) + } + + return ( + +
+ + +
+
+ Having trouble loading? Try selecting a different back-end server. +
+ +
+ +
+
+ ) +} + +export default ServerSelect diff --git a/src/components/app-body/servers/select-server-view.js b/src/components/app-body/servers/select-server-view.js new file mode 100644 index 0000000..7a44f64 --- /dev/null +++ b/src/components/app-body/servers/select-server-view.js @@ -0,0 +1,77 @@ +/* + This component is a View that allows the user to select a back end server + from a list of servers. +*/ + +// Global npm libraries +import React from 'react' +import { Container, Row, Col, Button } from 'react-bootstrap' + +function ServerSelectView (props) { + const { appData } = props + const selectedServer = appData.serverUrl // Selected server + const servers = appData.servers // List of servers + + // Update location ref after server url changes + const handleReloadServer = (event) => { + const target = event.target.id + console.log('server target: ', target) + + window.location.href = `/?restURL=${target}` + } + + return ( + <> + + + +

+ Select Alternative Server +

+

+ Select an alternative server below. The app will reload and use + the selected server. +

+ +
+
+ + { + /** Map all server data and render a row for each server */ + servers.map((server, i) => { + // Background color for each row + const isEven = i % 2 + const backgroundColor = isEven ? '#eee' : '#fff' + + return ( +
+ + + + + + + {server.label} + + +
+ ) + }) + } +
+ + ) +} + +export default ServerSelectView diff --git a/src/components/nav-menu/old-index.js b/src/components/nav-menu/old-index.js deleted file mode 100644 index 84647e8..0000000 --- a/src/components/nav-menu/old-index.js +++ /dev/null @@ -1,52 +0,0 @@ -/* - This component controlls the navigation menu. - - Inspired from this example: - https://codesandbox.io/s/react-bootstrap-hamburger-menu-example-rnud4?from-embed -*/ - -// Global npm libraries -import React from 'react' -import { Nav, Navbar, Image } from 'react-bootstrap' -import Logo from './psf-logo.png' - -class NavMenu extends React.Component { - constructor (props) { - super(props) - - // This is the event handler passed in from the Parent component. - this.parentMenuHandler = props.menuHandler - } - - render () { - // console.log(`selectedMenuItem: ${this.state.selectedMenuItem}`) - // this.handleMenuClick(this.state.selectedMenuItem) - - return ( - <> - - - {' '} - PSF Web3 Demo - - - - - - - - - ) - } - - handleClickEvent (menuItem) { - // Pass the selected menu item up to the parent component. - this.parentMenuHandler(menuItem) - } -} - -export default NavMenu diff --git a/src/components/servers/select-server-button.js b/src/components/servers/select-server-button.js deleted file mode 100644 index e6aef80..0000000 --- a/src/components/servers/select-server-button.js +++ /dev/null @@ -1,54 +0,0 @@ -/* - This component contains a drop-down form that lets the user select from - a range of Global Back End servers. -*/ - -// Global npm libraries -import React from 'react' -import { Container, Row, Col, Button } from 'react-bootstrap' - -// Local libraries -// import GistServers from '../../services/gist-servers' - -// let _this - -class ServerSelect extends React.Component { - constructor (props) { - super(props) - - this.state = { - menuHandler: props.menuHandler, - appData: props.appData - } - - this.handleServerSelect = this.handleServerSelect.bind(this) - } - - render () { - return ( - -
- - -
-
- Having trouble loading? Try selecting a different back-end server. -
- -
- -
-
- ) - } - - // This is a click handler for the server select button. It brings up the - // server selection View. - handleServerSelect () { - console.log('This function should navigate to the server selection view.') - - this.state.appData.setMenuState(100) - } -} - -export default ServerSelect diff --git a/src/components/servers/select-server-view.js b/src/components/servers/select-server-view.js deleted file mode 100644 index 1593d50..0000000 --- a/src/components/servers/select-server-view.js +++ /dev/null @@ -1,90 +0,0 @@ -/* - This component is a View that allows the user to select a back end server - from a list of servers. -*/ - -// Global npm libraries -import React from 'react' -import { Container, Row, Col, Button } from 'react-bootstrap' - -class ServerSelectView extends React.Component { - constructor (props) { - super(props) - - this.state = { - appData: props.appData - } - } - - render () { - // console.log('this.state.appData: ', this.state.appData) - const servers = this.state.appData.servers - - // Loop through each server in the list - const serverList = [] - for (let i = 0; i < servers.length; i++) { - const thisServer = servers[i] - - const serverComponent = this.singleServer(thisServer, i) - - serverList.push(serverComponent) - } - - return ( - <> - - - -

- Select Alternative Server -

-

- Select an alternative server below. The app will reload and use - the selected server. -

- -
-
- - {serverList} -
- - ) - } - - // Generate the HTML to display and select a server. - singleServer (server, i) { - const isEven = i % 2 - - const backgroundColor = isEven ? '#eee' : '#fff' - - return ( -
- - - - - - - {server.label} - - -
- ) - } - - // Click handler for the button. Reloads the app using the selected back-end server. - handleReloadServer (event) { - const target = event.target.id - console.log('server target: ', target) - - window.location.href = `/?restURL=${target}` - } -} - -export default ServerSelectView