snowballtools-base/packages/frontend/src/index.tsx

64 lines
1.8 KiB
TypeScript
Raw Normal View History

2024-04-11 23:10:39 +00:00
import React from 'react';
import ReactDOM from 'react-dom/client';
import assert from 'assert';
import { GQLClient } from 'gql-client';
2024-04-11 23:10:39 +00:00
import { ThemeProvider } from '@snowballtools/material-tailwind-react-fork';
2024-04-11 23:10:39 +00:00
import './index.css';
import '@fontsource/inter';
import '@fontsource-variable/jetbrains-mono';
import App from './App';
import reportWebVitals from './reportWebVitals';
import { GQLClientProvider } from './context/GQLClientContext';
import { SERVER_GQL_PATH } from './constants';
import { Toaster } from 'components/shared/Toast';
2024-05-01 20:00:52 +00:00
import Bugsnag from '@bugsnag/js';
import BugsnagPluginReact from '@bugsnag/plugin-react';
import BugsnagPerformance from '@bugsnag/browser-performance';
const bugsnagApiKey = import.meta.env.VITE_BUGSNAG_API_KEY;
if (bugsnagApiKey) {
Bugsnag.start({
apiKey: bugsnagApiKey,
plugins: [new BugsnagPluginReact()],
});
BugsnagPerformance.start({ apiKey: bugsnagApiKey });
}
const root = ReactDOM.createRoot(
2024-04-11 23:10:39 +00:00
document.getElementById('root') as HTMLElement,
);
assert(
2024-04-11 21:40:22 +00:00
import.meta.env.VITE_SERVER_URL,
2024-04-11 23:10:39 +00:00
'REACT_APP_SERVER_URL is not set in env',
);
2024-04-11 21:40:22 +00:00
const gqlEndpoint = `${import.meta.env.VITE_SERVER_URL}/${SERVER_GQL_PATH}`;
const gqlClient = new GQLClient({ gqlEndpoint });
2024-05-01 20:03:59 +00:00
const ErrorBoundary = bugsnagApiKey
? Bugsnag.getPlugin('react')!.createErrorBoundary(React)
: ({ children }: any) => children;
2024-05-01 20:00:52 +00:00
root.render(
2024-05-01 20:00:52 +00:00
<ErrorBoundary>
<React.StrictMode>
<ThemeProvider>
<GQLClientProvider client={gqlClient}>
<App />
<Toaster />
</GQLClientProvider>
</ThemeProvider>
</React.StrictMode>
,
</ErrorBoundary>,
);
// If you want to start measuring performance in your app, pass a function
// to log results (for example: reportWebVitals(console.log))
// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals
reportWebVitals();