2023-09-11 15:26:44 +00:00
|
|
|
import { init, Integrations } from '@sentry/browser';
|
|
|
|
|
2023-01-20 03:32:35 +00:00
|
|
|
import '@fontsource/inter/variable.css';
|
2023-09-11 15:26:44 +00:00
|
|
|
|
2023-02-28 05:29:48 +00:00
|
|
|
import { defaultContext } from '@tanstack/react-query';
|
2022-08-03 15:36:03 +00:00
|
|
|
import { ReactQueryDevtools } from '@tanstack/react-query-devtools';
|
2022-10-01 17:37:35 +00:00
|
|
|
import dayjs from 'dayjs';
|
|
|
|
import advancedFormat from 'dayjs/plugin/advancedFormat';
|
|
|
|
import duration from 'dayjs/plugin/duration';
|
|
|
|
import relativeTime from 'dayjs/plugin/relativeTime';
|
2023-03-15 16:11:47 +00:00
|
|
|
import { RouterProvider, RouterProviderProps } from 'react-router-dom';
|
2023-08-29 17:54:58 +00:00
|
|
|
import {
|
|
|
|
NotificationContextProvider,
|
|
|
|
P2PContextProvider,
|
|
|
|
useDebugState,
|
|
|
|
useLoadBackendFeatureFlags
|
|
|
|
} from '@sd/client';
|
2023-10-07 03:46:44 +00:00
|
|
|
import { TooltipProvider } from '@sd/ui';
|
2023-09-11 15:26:44 +00:00
|
|
|
|
2023-11-13 07:02:03 +00:00
|
|
|
import { P2P, useP2PErrorToast } from './app/p2p';
|
2023-10-03 16:18:16 +00:00
|
|
|
import { WithPrismTheme } from './components/TextViewer/prism';
|
2023-10-30 00:44:33 +00:00
|
|
|
import ErrorFallback, { BetterErrorBoundary } from './ErrorFallback';
|
2023-02-28 05:29:48 +00:00
|
|
|
|
|
|
|
export { ErrorPage } from './ErrorFallback';
|
2023-03-15 16:11:47 +00:00
|
|
|
export * from './app';
|
2023-06-15 14:50:43 +00:00
|
|
|
export * from './util/Platform';
|
|
|
|
export * from './util/keybind';
|
2022-04-27 01:14:39 +00:00
|
|
|
|
2022-10-01 17:37:35 +00:00
|
|
|
dayjs.extend(advancedFormat);
|
|
|
|
dayjs.extend(relativeTime);
|
|
|
|
dayjs.extend(duration);
|
|
|
|
|
2022-10-29 09:06:09 +00:00
|
|
|
init({
|
2022-11-01 13:32:56 +00:00
|
|
|
dsn: 'https://2fb2450aabb9401b92f379b111402dbc@o1261130.ingest.sentry.io/4504053670412288',
|
|
|
|
environment: import.meta.env.MODE,
|
|
|
|
defaultIntegrations: false,
|
2023-02-28 05:29:48 +00:00
|
|
|
integrations: [new Integrations.HttpContext(), new Integrations.Dedupe()]
|
2022-10-29 09:06:09 +00:00
|
|
|
});
|
|
|
|
|
2023-02-28 05:29:48 +00:00
|
|
|
const Devtools = () => {
|
2022-10-25 01:41:46 +00:00
|
|
|
const debugState = useDebugState();
|
|
|
|
|
2023-02-28 05:29:48 +00:00
|
|
|
// The `context={defaultContext}` part is required for this to work on Windows.
|
|
|
|
// Why, idk, don't question it
|
2022-10-25 01:41:46 +00:00
|
|
|
return debugState.reactQueryDevtools !== 'disabled' ? (
|
|
|
|
<ReactQueryDevtools
|
|
|
|
position="bottom-right"
|
|
|
|
context={defaultContext}
|
|
|
|
toggleButtonProps={{
|
2023-04-21 14:18:16 +00:00
|
|
|
tabIndex: -1,
|
2022-10-25 01:41:46 +00:00
|
|
|
className: debugState.reactQueryDevtools === 'invisible' ? 'opacity-0' : ''
|
|
|
|
}}
|
|
|
|
/>
|
|
|
|
) : null;
|
2023-02-28 05:29:48 +00:00
|
|
|
};
|
|
|
|
|
2023-03-15 16:11:47 +00:00
|
|
|
export const SpacedriveInterface = (props: { router: RouterProviderProps['router'] }) => {
|
2023-08-29 17:54:58 +00:00
|
|
|
useLoadBackendFeatureFlags();
|
2023-11-13 07:02:03 +00:00
|
|
|
useP2PErrorToast();
|
2023-08-29 17:54:58 +00:00
|
|
|
|
2023-02-28 05:29:48 +00:00
|
|
|
return (
|
2023-10-30 00:44:33 +00:00
|
|
|
<BetterErrorBoundary FallbackComponent={ErrorFallback}>
|
2023-10-07 03:46:44 +00:00
|
|
|
<TooltipProvider>
|
|
|
|
<P2PContextProvider>
|
|
|
|
<NotificationContextProvider>
|
|
|
|
<P2P />
|
|
|
|
<Devtools />
|
|
|
|
<WithPrismTheme />
|
|
|
|
<RouterProvider router={props.router} />
|
|
|
|
</NotificationContextProvider>
|
|
|
|
</P2PContextProvider>
|
|
|
|
</TooltipProvider>
|
2023-10-30 00:44:33 +00:00
|
|
|
</BetterErrorBoundary>
|
2023-02-28 05:29:48 +00:00
|
|
|
);
|
|
|
|
};
|