From e0584fa32f8ae7105042e72214c0a9bfaf235065 Mon Sep 17 00:00:00 2001
From: Shaheer <122449658+shaheer-deriv@users.noreply.github.com>
Date: Mon, 22 Jan 2024 11:23:06 +0400
Subject: [PATCH] [Account-v2] Shaheer / FEQ-1138 / Adds routing to account-v2
package (#13065)
* docs: text fix
* feat: adds routing for account v2
* fix: updates react router dom version
---
packages/account-v2/package.json | 1 +
packages/account-v2/src/App.tsx | 2 +
.../components/dummy-route/dummy-route.tsx | 9 ++
.../components/route-links/route-links.tsx | 40 +++++++++
.../src/router/constants/routesConfig.tsx | 86 +++++++++++++++++++
.../core/src/App/Constants/routes-config.js | 2 +-
6 files changed, 139 insertions(+), 1 deletion(-)
create mode 100644 packages/account-v2/src/router/components/dummy-route/dummy-route.tsx
create mode 100644 packages/account-v2/src/router/components/route-links/route-links.tsx
create mode 100644 packages/account-v2/src/router/constants/routesConfig.tsx
diff --git a/packages/account-v2/package.json b/packages/account-v2/package.json
index 9fd2853a229b..0c4d99d65f70 100644
--- a/packages/account-v2/package.json
+++ b/packages/account-v2/package.json
@@ -35,6 +35,7 @@
"@types/css-modules": "^1.0.2",
"@types/react-dom": "^18.0.0",
"@types/react-modal": "^3.16.3",
+ "@types/react-router-dom": "^5.1.6",
"@types/webpack": "^5.28.5",
"@typescript-eslint/eslint-plugin": "5.45.0",
"@typescript-eslint/parser": "5.45.0",
diff --git a/packages/account-v2/src/App.tsx b/packages/account-v2/src/App.tsx
index 5747c82df239..fd61ae79d70a 100644
--- a/packages/account-v2/src/App.tsx
+++ b/packages/account-v2/src/App.tsx
@@ -5,6 +5,7 @@ import { FormProgress } from './components/form-progress';
import SignupWizard from './components/SignupWizard';
import { SignupWizardProvider, useSignupWizardContext } from './context/SignupWizardContext';
import { stepProgress } from './mocks/form-progress.mock';
+import RouteLinks from './router/components/route-links/route-links';
import './index.scss';
const TriggerSignupWizardModal: React.FC = () => {
@@ -24,6 +25,7 @@ const App: React.FC = () => {
{/* [TODO]:Mock - Remove hardcoded initial value once isActive comes from Modal */}
+
);
diff --git a/packages/account-v2/src/router/components/dummy-route/dummy-route.tsx b/packages/account-v2/src/router/components/dummy-route/dummy-route.tsx
new file mode 100644
index 000000000000..c067f94889fc
--- /dev/null
+++ b/packages/account-v2/src/router/components/dummy-route/dummy-route.tsx
@@ -0,0 +1,9 @@
+import React from 'react';
+
+const DummyRoute = ({ path }: { path: string }) => (
+
+ Component for path {path}
+
+);
+
+export default DummyRoute;
diff --git a/packages/account-v2/src/router/components/route-links/route-links.tsx b/packages/account-v2/src/router/components/route-links/route-links.tsx
new file mode 100644
index 000000000000..16eec7beb8b2
--- /dev/null
+++ b/packages/account-v2/src/router/components/route-links/route-links.tsx
@@ -0,0 +1,40 @@
+import React from 'react';
+import { BrowserRouter, NavLink, Redirect, Route, Switch } from 'react-router-dom';
+import { defaultRoute, routes } from '../../constants/routesConfig';
+
+const RouteLinks = () => (
+
+
+
+ {routes.map(route => (
+
+ {route.routeName}
+
+ ))}
+
+
+
+ {routes.map(route => {
+ const Component = route.routeComponent;
+ return (
+ }
+ />
+ );
+ })}
+
+
+
+
+
+);
+
+export default RouteLinks;
diff --git a/packages/account-v2/src/router/constants/routesConfig.tsx b/packages/account-v2/src/router/constants/routesConfig.tsx
new file mode 100644
index 000000000000..faa3515e1db0
--- /dev/null
+++ b/packages/account-v2/src/router/constants/routesConfig.tsx
@@ -0,0 +1,86 @@
+import DummyRoute from '../components/dummy-route/dummy-route';
+
+export const routes = [
+ {
+ routeComponent: DummyRoute,
+ routeName: 'Personal details',
+ routePath: '/account-v2/personal_details',
+ },
+ {
+ routeComponent: DummyRoute,
+ routeName: 'Languages',
+ routePath: '/account-v2/languages',
+ },
+ {
+ routeComponent: DummyRoute,
+ routeName: 'Trading assessment',
+ routePath: '/account-v2/trading_assessment',
+ },
+ {
+ routeComponent: DummyRoute,
+ routeName: 'Financial assessment',
+ routePath: '/account-v2/financial_assessment',
+ },
+ {
+ routeComponent: DummyRoute,
+ routeName: 'Proof of identity',
+ routePath: '/account-v2/proof_of_identity',
+ },
+ {
+ routeComponent: DummyRoute,
+ routeName: 'Proof of address',
+ routePath: '/account-v2/proof_of_address',
+ },
+ {
+ routeComponent: DummyRoute,
+ routeName: 'Proof of ownership',
+ routePath: '/account-v2/proof_of_ownership',
+ },
+ {
+ routeComponent: DummyRoute,
+ routeName: 'Proof of income',
+ routePath: '/account-v2/proof_of_income',
+ },
+ {
+ routeComponent: DummyRoute,
+ routeName: 'Email and passwords',
+ routePath: '/account-v2/email_and_passwords',
+ },
+ {
+ routeComponent: DummyRoute,
+ routeName: 'Self exclusion',
+ routePath: '/account-v2/self_exclusion',
+ },
+ {
+ routeComponent: DummyRoute,
+ routeName: 'Account limits',
+ routePath: '/account-v2/account_limits',
+ },
+ {
+ routeComponent: DummyRoute,
+ routeName: 'Login history',
+ routePath: '/account-v2/login_history',
+ },
+ {
+ routeComponent: DummyRoute,
+ routeName: 'API token',
+ routePath: '/account-v2/api_token',
+ },
+ {
+ routeComponent: DummyRoute,
+ routeName: 'Connected apps',
+ routePath: '/account-v2/connected_apps',
+ },
+ {
+ routeComponent: DummyRoute,
+ routeName: 'Two-factor authentication',
+ routePath: '/account-v2/two_factor_authentication',
+ },
+ {
+ routeComponent: DummyRoute,
+ routeName: 'Close your account',
+ routePath: '/account-v2/close_your_account',
+ },
+];
+
+export const defaultRoute = routes[0].routePath;
diff --git a/packages/core/src/App/Constants/routes-config.js b/packages/core/src/App/Constants/routes-config.js
index adb657979365..7ff23ea3f251 100644
--- a/packages/core/src/App/Constants/routes-config.js
+++ b/packages/core/src/App/Constants/routes-config.js
@@ -88,7 +88,7 @@ const P2P_V2 = React.lazy(() =>
const Account_V2 = React.lazy(() =>
moduleLoader(() => {
// eslint-disable-next-line import/no-unresolved
- return import(/* webpackChunkName: "p2p-v2" */ '@deriv/account-v2');
+ return import(/* webpackChunkName: "account-v2" */ '@deriv/account-v2');
})
);