feat: update to use links from router config

This commit is contained in:
Matthew Russell
2023-07-14 16:50:46 +01:00
parent 77843771c9
commit 90b20bbe5d
5 changed files with 41 additions and 44 deletions
@@ -24,7 +24,6 @@ import {
} from '@vegaprotocol/ui-toolkit';
import { Links, Routes } from '../../pages/client-router';
// import { SettingsButton } from '../../client-pages/settings';
import {
ProtocolUpgradeCountdown,
ProtocolUpgradeCountdownMode,
+25 -20
View File
@@ -1,18 +1,19 @@
import { TransferContainer } from '@vegaprotocol/accounts';
import { DepositContainer } from '@vegaprotocol/deposits';
import { VLogo, VegaIcon, VegaIconNames } from '@vegaprotocol/ui-toolkit';
import { Tooltip } from '../../components/tooltip';
import { create } from 'zustand';
import { Route, Routes, useParams } from 'react-router-dom';
import { Settings } from '../settings';
import classNames from 'classnames';
import { NodeHealthContainer } from '../node-health';
import { MarketInfoAccordionContainer } from '@vegaprotocol/markets';
import { t } from '@vegaprotocol/i18n';
import { DealTicketContainer } from '@vegaprotocol/deal-ticket';
import { WithdrawContainer } from '../withdraw-container';
import type { ReactNode } from 'react';
import { useEffect } from 'react';
import { Route, Routes, useParams } from 'react-router-dom';
import { create } from 'zustand';
import { TransferContainer } from '@vegaprotocol/accounts';
import { DealTicketContainer } from '@vegaprotocol/deal-ticket';
import { DepositContainer } from '@vegaprotocol/deposits';
import { t } from '@vegaprotocol/i18n';
import { MarketInfoAccordionContainer } from '@vegaprotocol/markets';
import { VegaIcon, VegaIconNames } from '@vegaprotocol/ui-toolkit';
import { NodeHealthContainer } from '../node-health';
import { Settings } from '../settings';
import { Tooltip } from '../../components/tooltip';
import { WithdrawContainer } from '../withdraw-container';
import { Routes as AppRoutes } from '../../pages/client-router';
export enum ViewType {
Order = 'Order',
@@ -53,7 +54,7 @@ export const Sidebar = () => {
<SidebarButton
view={ViewType.Settings}
icon={VegaIconNames.COG}
tooltip="Settings"
tooltip={t('Settings')}
/>
</div>
<nav className="flex flex-col items-stretch gap-2 p-1">
@@ -61,35 +62,39 @@ export const Sidebar = () => {
<SidebarButton
view={ViewType.Deposit}
icon={VegaIconNames.DEPOSIT}
tooltip="Deposit"
tooltip={t('Deposit')}
/>
<SidebarButton
view={ViewType.Withdraw}
icon={VegaIconNames.WITHDRAW}
tooltip="Withdraw"
tooltip={t('Withdraw')}
/>
<SidebarButton
view={ViewType.Transfer}
icon={VegaIconNames.TRANSFER}
tooltip="Transfer"
tooltip={t('Transfer')}
/>
{/* buttons for specific routes */}
<Routes>
<Route path="/markets/all" element={null} />
<Route
path="/markets/:marketId"
path={AppRoutes.MARKETS}
// render nothing for markets/all, otherwise markets/:marketId will match with markets/all
element={null}
/>
<Route
path={AppRoutes.MARKET}
element={
<>
<SidebarDivider />
<SidebarButton
view={ViewType.Order}
icon={VegaIconNames.TICKET}
tooltip="Order"
tooltip={t('Order')}
/>
<SidebarButton
view={ViewType.Info}
icon={VegaIconNames.BREAKDOWN}
tooltip="Market specification"
tooltip={t('Market specification')}
/>
</>
}
@@ -1,10 +1,7 @@
import { t } from '@vegaprotocol/i18n';
import {
ExternalLink,
VegaIcon,
VegaIconNames,
} from '@vegaprotocol/ui-toolkit';
import { Links, Routes } from '../../pages/client-router';
import { VegaIcon, VegaIconNames } from '@vegaprotocol/ui-toolkit';
import { Routes } from '../../pages/client-router';
import { Link } from 'react-router-dom';
export const RiskMessage = () => {
return (
@@ -30,15 +27,12 @@ export const RiskMessage = () => {
{t(
'By using the Vega Console, you acknowledge that you have read and understood the'
)}{' '}
<ExternalLink
href={`/#/${Links[Routes.DISCLAIMER]()}`}
className="underline"
>
<Link className="underline" to={Routes.DISCLAIMER} target="_blank">
<span className="flex items-center gap-1">
<span>{t('Vega Console Disclaimer')}</span>
<VegaIcon name={VegaIconNames.OPEN_EXTERNAL} />
</span>
</ExternalLink>
</Link>
</p>
</>
);
@@ -7,6 +7,7 @@ export const useMarketClickHandler = (replace = false) => {
const { marketId } = useParams();
const { pathname } = useLocation();
const isMarketPage = pathname.match(/^\/markets\/(.+)/);
return useCallback(
(selectedId: string, metaKey?: boolean) => {
const link = Links[Routes.MARKET](selectedId);
+10 -12
View File
@@ -33,34 +33,32 @@ const LazyDisclaimer = dynamic(() => import('../client-pages/disclaimer'), {
export enum Routes {
HOME = '/',
MARKET = '/markets',
MARKET = '/markets/:marketId',
MARKETS = '/markets/all',
PORTFOLIO = '/portfolio',
LIQUIDITY = 'liquidity/:marketId',
SETTINGS = 'settings',
DISCLAIMER = 'disclaimer',
LIQUIDITY = '/liquidity/:marketId',
DISCLAIMER = '/disclaimer',
}
type ConsoleLinks = { [r in Routes]: (...args: string[]) => string };
export const Links: ConsoleLinks = {
[Routes.HOME]: () => Routes.HOME,
[Routes.MARKET]: (marketId: string | null | undefined) =>
marketId ? trimEnd(`${Routes.MARKET}/${marketId}`, '/') : Routes.MARKET,
[Routes.MARKET]: (marketId: string) =>
trimEnd(Routes.MARKET.replace(':marketId', marketId)),
[Routes.MARKETS]: () => Routes.MARKETS,
[Routes.PORTFOLIO]: () => Routes.PORTFOLIO,
[Routes.LIQUIDITY]: (marketId: string | null | undefined) =>
marketId
? trimEnd(`${Routes.LIQUIDITY}/${marketId}`, '/')
: Routes.LIQUIDITY,
[Routes.SETTINGS]: () => Routes.SETTINGS,
[Routes.LIQUIDITY]: (marketId: string) =>
trimEnd(Routes.LIQUIDITY.replace(':marketId', marketId)),
[Routes.DISCLAIMER]: () => Routes.DISCLAIMER,
};
const routerConfig: RouteObject[] = [
{
path: '/',
path: '/*',
element: <Layout />,
children: [
// all pages that require the Layout component (Sidebar)
{
index: true,
element: <LazyHome />,