refactor: move routes to an enum

This commit is contained in:
Jeremy Kahn 2022-09-20 14:22:39 -05:00
parent 4403d8df2d
commit 20d8337082
4 changed files with 16 additions and 6 deletions

View File

@ -5,6 +5,7 @@ import localforage from 'localforage'
import * as serviceWorkerRegistration from 'serviceWorkerRegistration' import * as serviceWorkerRegistration from 'serviceWorkerRegistration'
import { SettingsContext } from 'contexts/SettingsContext' import { SettingsContext } from 'contexts/SettingsContext'
import { routes } from 'config/routes'
import { Home } from 'pages/Home' import { Home } from 'pages/Home'
import { About } from 'pages/About' import { About } from 'pages/About'
import { PublicRoom } from 'pages/PublicRoom' import { PublicRoom } from 'pages/PublicRoom'
@ -85,16 +86,16 @@ function Bootstrap({
<Shell appNeedsUpdate={appNeedsUpdate} userPeerId={userId}> <Shell appNeedsUpdate={appNeedsUpdate} userPeerId={userId}>
{hasLoadedSettings ? ( {hasLoadedSettings ? (
<Routes> <Routes>
{['/', '/index.html'].map(path => ( {[routes.ROOT, routes.INDEX_HTML].map(path => (
<Route <Route
key={path} key={path}
path={path} path={path}
element={<Home userId={userId} />} element={<Home userId={userId} />}
/> />
))} ))}
<Route path="/about" element={<About />} /> <Route path={routes.ABOUT} element={<About />} />
<Route <Route
path="/public/:roomId" path={routes.PUBLIC_ROOM}
element={<PublicRoom userId={userId} />} element={<PublicRoom userId={userId} />}
/> />
</Routes> </Routes>

View File

@ -17,6 +17,7 @@ import QuestionMark from '@mui/icons-material/QuestionMark'
import Brightness4Icon from '@mui/icons-material/Brightness4' import Brightness4Icon from '@mui/icons-material/Brightness4'
import Brightness7Icon from '@mui/icons-material/Brightness7' import Brightness7Icon from '@mui/icons-material/Brightness7'
import { routes } from 'config/routes'
import { SettingsContext } from 'contexts/SettingsContext' import { SettingsContext } from 'contexts/SettingsContext'
import { PeerNameDisplay } from 'components/PeerNameDisplay' import { PeerNameDisplay } from 'components/PeerNameDisplay'
@ -90,7 +91,7 @@ export const Drawer = ({
</ListItem> </ListItem>
<Divider /> <Divider />
<List role="navigation"> <List role="navigation">
<Link to="/" onClick={onHomeLinkClick}> <Link to={routes.INDEX_HTML} onClick={onHomeLinkClick}>
<ListItem disablePadding> <ListItem disablePadding>
<ListItemButton> <ListItemButton>
<ListItemIcon> <ListItemIcon>
@ -100,7 +101,7 @@ export const Drawer = ({
</ListItemButton> </ListItemButton>
</ListItem> </ListItem>
</Link> </Link>
<Link to="/about" onClick={onAboutLinkClick}> <Link to={routes.ABOUT} onClick={onAboutLinkClick}>
<ListItem disablePadding> <ListItem disablePadding>
<ListItemButton> <ListItemButton>
<ListItemIcon> <ListItemIcon>

7
src/config/routes.ts Normal file
View File

@ -0,0 +1,7 @@
export enum routes {
ABOUT = '/about',
HOME = '/home',
INDEX_HTML = '/index.html',
PUBLIC_ROOM = '/public/:roomId',
ROOT = '/',
}

View File

@ -12,6 +12,7 @@ import GitHubIcon from '@mui/icons-material/GitHub'
import Tooltip from '@mui/material/Tooltip' import Tooltip from '@mui/material/Tooltip'
import { v4 as uuid } from 'uuid' import { v4 as uuid } from 'uuid'
import { routes } from 'config/routes'
import { ShellContext } from 'contexts/ShellContext' import { ShellContext } from 'contexts/ShellContext'
import { PeerNameDisplay } from 'components/PeerNameDisplay' import { PeerNameDisplay } from 'components/PeerNameDisplay'
import { ReactComponent as Logo } from 'img/logo.svg' import { ReactComponent as Logo } from 'img/logo.svg'
@ -42,7 +43,7 @@ export function Home({ userId }: HomeProps) {
return ( return (
<Box className="Home"> <Box className="Home">
<main className="mt-6 px-4 max-w-3xl text-center mx-auto"> <main className="mt-6 px-4 max-w-3xl text-center mx-auto">
<Link to="/about"> <Link to={routes.ABOUT}>
<Logo className="px-1 pb-4 mx-auto max-w-md" /> <Logo className="px-1 pb-4 mx-auto max-w-md" />
</Link> </Link>
<form onSubmit={handleFormSubmit} className="max-w-xl mx-auto"> <form onSubmit={handleFormSubmit} className="max-w-xl mx-auto">