2022-06-21 23:20:53 +00:00
|
|
|
import { useState, useEffect } from 'react';
|
2022-08-25 21:46:17 +00:00
|
|
|
import * as Sentry from '@sentry/react';
|
|
|
|
import { BrowserTracing } from '@sentry/tracing';
|
2022-04-11 17:10:36 +00:00
|
|
|
import { useLocation } from 'react-router-dom';
|
2022-06-10 09:15:38 +00:00
|
|
|
import { ThemeContext, useThemeSwitcher } from '@vegaprotocol/react-helpers';
|
2022-08-25 21:46:17 +00:00
|
|
|
import {
|
|
|
|
EnvironmentProvider,
|
|
|
|
NetworkLoader,
|
|
|
|
useEnvironment,
|
|
|
|
} from '@vegaprotocol/environment';
|
2022-07-06 15:53:35 +00:00
|
|
|
import { NetworkInfo } from '@vegaprotocol/network-info';
|
2022-02-15 14:44:09 +00:00
|
|
|
import { createClient } from './lib/apollo-client';
|
|
|
|
import { Nav } from './components/nav';
|
|
|
|
import { Header } from './components/header';
|
|
|
|
import { Main } from './components/main';
|
|
|
|
import { TendermintWebsocketProvider } from './contexts/websocket/tendermint-websocket-provider';
|
2022-08-25 21:46:17 +00:00
|
|
|
import { ENV } from './config/env';
|
2022-02-15 14:44:09 +00:00
|
|
|
|
|
|
|
function App() {
|
2022-08-25 21:46:17 +00:00
|
|
|
const { VEGA_ENV } = useEnvironment();
|
2022-03-29 12:13:25 +00:00
|
|
|
const [theme, toggleTheme] = useThemeSwitcher();
|
2022-04-01 14:20:23 +00:00
|
|
|
const [menuOpen, setMenuOpen] = useState(false);
|
2022-03-29 12:13:25 +00:00
|
|
|
|
2022-04-01 14:20:23 +00:00
|
|
|
const location = useLocation();
|
|
|
|
|
|
|
|
useEffect(() => {
|
|
|
|
setMenuOpen(false);
|
|
|
|
}, [location]);
|
|
|
|
|
2022-08-25 21:46:17 +00:00
|
|
|
useEffect(() => {
|
|
|
|
Sentry.init({
|
|
|
|
dsn: ENV.dsn,
|
|
|
|
integrations: [new BrowserTracing()],
|
|
|
|
tracesSampleRate: 1,
|
|
|
|
environment: VEGA_ENV,
|
|
|
|
});
|
|
|
|
}, [VEGA_ENV]);
|
|
|
|
|
2022-02-15 14:44:09 +00:00
|
|
|
return (
|
2022-08-25 21:46:17 +00:00
|
|
|
<ThemeContext.Provider value={theme}>
|
|
|
|
<TendermintWebsocketProvider>
|
|
|
|
<NetworkLoader createClient={createClient}>
|
|
|
|
<div
|
|
|
|
className={`${
|
|
|
|
menuOpen && 'h-[100vh] overflow-hidden'
|
|
|
|
} antialiased m-0 bg-white dark:bg-black text-black dark:text-white`}
|
|
|
|
>
|
2022-09-26 09:10:33 +00:00
|
|
|
<div className="grid grid-rows-[repeat(2,_auto)_1fr] grid-cols-[1fr] md:grid-rows-[auto_minmax(700px,_1fr)] md:grid-cols-[300px_1fr] border-neutral-700 dark:border-neutral-300 lg:border-l lg:border-r mx-auto">
|
2022-08-25 21:46:17 +00:00
|
|
|
<Header
|
2022-08-31 04:35:46 +00:00
|
|
|
theme={theme}
|
2022-08-25 21:46:17 +00:00
|
|
|
toggleTheme={toggleTheme}
|
|
|
|
menuOpen={menuOpen}
|
|
|
|
setMenuOpen={setMenuOpen}
|
|
|
|
/>
|
|
|
|
<Nav menuOpen={menuOpen} />
|
|
|
|
<Main />
|
2022-08-31 04:35:46 +00:00
|
|
|
<footer className="grid grid-rows-2 grid-cols-[1fr_auto] text-sm md:text-md md:flex md:col-span-2 p-4 gap-4 border-t border-neutral-700 dark:border-neutral-300">
|
2022-08-25 21:46:17 +00:00
|
|
|
<NetworkInfo />
|
|
|
|
</footer>
|
2022-03-29 12:13:25 +00:00
|
|
|
</div>
|
2022-08-25 21:46:17 +00:00
|
|
|
</div>
|
|
|
|
</NetworkLoader>
|
|
|
|
</TendermintWebsocketProvider>
|
|
|
|
</ThemeContext.Provider>
|
2022-02-15 14:44:09 +00:00
|
|
|
);
|
2022-02-15 14:12:27 +00:00
|
|
|
}
|
|
|
|
|
2022-08-25 21:46:17 +00:00
|
|
|
const Wrapper = () => {
|
|
|
|
return (
|
|
|
|
<EnvironmentProvider>
|
|
|
|
<App />
|
|
|
|
</EnvironmentProvider>
|
|
|
|
);
|
|
|
|
};
|
|
|
|
|
|
|
|
export default Wrapper;
|