From 2c282bc722f9119252abcb8ecf7cc9dc2671e286 Mon Sep 17 00:00:00 2001 From: adityagarg06 <adityagarg2003@gmail.com> Date: Sun, 4 Feb 2024 23:16:25 +0530 Subject: [PATCH] Refactor createRedirectWithUsername --- .../components/createRedirectWithUsername.jsx | 32 ++++++++----------- client/routes.jsx | 6 ++-- 2 files changed, 16 insertions(+), 22 deletions(-) diff --git a/client/components/createRedirectWithUsername.jsx b/client/components/createRedirectWithUsername.jsx index a6b69233c4..b8fb3485dd 100644 --- a/client/components/createRedirectWithUsername.jsx +++ b/client/components/createRedirectWithUsername.jsx @@ -1,29 +1,23 @@ -import React from 'react'; -import { connect } from 'react-redux'; +import { useEffect } from 'react'; +import { useSelector } from 'react-redux'; +import PropTypes from 'prop-types'; import browserHistory from '../browserHistory'; -const RedirectToUser = ({ username, url = '/:username/sketches' }) => { - React.useEffect(() => { +const RedirectToUser = ({ url = '/:username/sketches' }) => { + const username = useSelector((state) => + state.user ? state.user.username : null + ); + useEffect(() => { if (username == null) { return; } - browserHistory.replace(url.replace(':username', username)); - }, [username]); - + }, [username, url]); return null; }; -function mapStateToProps(state) { - return { - username: state.user ? state.user.username : null - }; -} - -const ConnectedRedirectToUser = connect(mapStateToProps)(RedirectToUser); - -const createRedirectWithUsername = (url) => (props) => ( - <ConnectedRedirectToUser {...props} url={url} /> -); +RedirectToUser.propTypes = { + url: PropTypes.string.isRequired +}; -export default createRedirectWithUsername; +export default RedirectToUser; diff --git a/client/routes.jsx b/client/routes.jsx index 418a5bf99d..c0e189441d 100644 --- a/client/routes.jsx +++ b/client/routes.jsx @@ -17,7 +17,7 @@ import NewPasswordView from './modules/User/pages/NewPasswordView'; import AccountView from './modules/User/pages/AccountView'; import CollectionView from './modules/User/pages/CollectionView'; import DashboardView from './modules/User/pages/DashboardView'; -import createRedirectWithUsername from './components/createRedirectWithUsername'; +import RedirectToUser from './components/createRedirectWithUsername'; import { getUser } from './modules/User/actions'; import { userIsAuthenticated, @@ -84,11 +84,11 @@ const routes = ( <Route path="/sketches" - component={createRedirectWithUsername('/:username/sketches')} + component={() => <RedirectToUser url="/:username/sketches" />} /> <Route path="/assets" - component={createRedirectWithUsername('/:username/assets')} + component={() => <RedirectToUser url="/:username/assets" />} /> <Route path="/account" component={userIsAuthenticated(AccountView)} /> <Route path="/about" component={IDEView} />