Skip to content

Commit cb3b2b7

Browse files
committed
react-app: Create subrouter for ProposalDetailScreen
refs oursky#128
1 parent f9e55f0 commit cb3b2b7

File tree

3 files changed

+44
-5
lines changed

3 files changed

+44
-5
lines changed
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
import React from "react";
2+
import { useRoutes, Navigate } from "react-router-dom";
3+
import AppRoutes from "../../navigation/AppRoutes";
4+
import ProposalDetailScreen from "./ProposalDetailScreen";
5+
6+
export enum ProposalDetailPanelTab {
7+
Votes = "votes",
8+
Deposits = "deposits",
9+
}
10+
11+
const ProposalDetailRouter: React.FC = () => {
12+
return useRoutes([
13+
{
14+
path: "/",
15+
element: <ProposalDetailScreen />,
16+
children: [
17+
{
18+
path: ProposalDetailPanelTab.Votes,
19+
element: <div>votes</div>,
20+
},
21+
{
22+
path: ProposalDetailPanelTab.Deposits,
23+
element: <div>deposits</div>,
24+
},
25+
{
26+
path: "*",
27+
element: <Navigate to={AppRoutes.NotFound} />,
28+
},
29+
],
30+
},
31+
]);
32+
};
33+
34+
export default ProposalDetailRouter;

react-app/src/navigation/AppRouter.tsx

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
import React from "react";
2-
import { BrowserRouter, Route, Routes } from "react-router-dom";
2+
import { BrowserRouter, Navigate, Route, Routes } from "react-router-dom";
33
import CreateProposalScreen from "../components/CreateProposalScreen/CreateProposalScreen";
44
import DummyScreen from "../components/DummyScreen/DummyScreen";
55
import ErrorView, { ErrorType } from "../components/ErrorView/ErrorView";
66
import OverviewScreen from "../components/OverviewScreen/OverviewScreen";
77
import PortfolioScreen from "../components/PortfolioScreen/PortfolioScreen";
8-
import ProposalDetailScreen from "../components/ProposalDetailScreen/ProposalDetailScreen";
98
import ProposalScreen from "../components/ProposalScreen/ProposalScreen";
109
import WalletConnectingScreen from "../components/WalletConnectingScreen/WalletConnectingScreen";
1110
import { useWallet, ConnectionStatus } from "../providers/WalletProvider";
1211
import AppScaffold from "../components/AppScaffold/AppScaffold";
12+
import ProposalDetailRouter from "../components/ProposalDetailScreen/ProposalDetailRouter";
1313
import AppRoutes from "./AppRoutes";
1414

1515
const AppRouter: React.FC = () => {
@@ -26,13 +26,17 @@ const AppRouter: React.FC = () => {
2626
element={<CreateProposalScreen />}
2727
/>
2828
<Route
29-
path={AppRoutes.ProposalDetail}
30-
element={<ProposalDetailScreen />}
29+
path={`${AppRoutes.ProposalDetail}/*`}
30+
element={<ProposalDetailRouter />}
3131
/>
3232
<Route path={AppRoutes.Portfolio} element={<PortfolioScreen />} />
3333
</Route>
3434

35-
<Route path="*" element={<ErrorView type={ErrorType.NotFound} />} />
35+
<Route
36+
path={AppRoutes.NotFound}
37+
element={<ErrorView type={ErrorType.NotFound} />}
38+
/>
39+
<Route path="*" element={<Navigate to={AppRoutes.NotFound} />} />
3640
</Routes>
3741

3842
{wallet.status === ConnectionStatus.Connecting && (

react-app/src/navigation/AppRoutes.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ const AppRoutes = Object.freeze({
55
ProposalDetail: "/proposals/:id",
66
NewProposal: "/proposals/new",
77
Portfolio: "/portfolio",
8+
NotFound: "/not-found",
89
});
910

1011
export default AppRoutes;

0 commit comments

Comments
 (0)