Files
ncd-fe/src/init/soapbox.tsx
2023-10-07 18:51:25 -05:00

44 lines
1.2 KiB
TypeScript

import { QueryClientProvider } from '@tanstack/react-query';
import React from 'react';
import { Provider } from 'react-redux';
import { StatProvider } from 'soapbox/contexts/stat-context';
import { createGlobals } from 'soapbox/globals';
import { queryClient } from 'soapbox/queries/client';
import { checkOnboardingStatus } from '../actions/onboarding';
import { preload } from '../actions/preload';
import { store } from '../store';
const SoapboxHead = React.lazy(() => import('./soapbox-head'));
const SoapboxLoad = React.lazy(() => import('./soapbox-load'));
const SoapboxMount = React.lazy(() => import('./soapbox-mount'));
// Configure global functions for developers
createGlobals(store);
// Preload happens synchronously
store.dispatch(preload() as any);
// This happens synchronously
store.dispatch(checkOnboardingStatus() as any);
/** The root React node of the application. */
const Soapbox: React.FC = () => {
return (
<Provider store={store}>
<QueryClientProvider client={queryClient}>
<StatProvider>
<SoapboxHead>
<SoapboxLoad>
<SoapboxMount />
</SoapboxLoad>
</SoapboxHead>
</StatProvider>
</QueryClientProvider>
</Provider>
);
};
export default Soapbox;