index.tsx 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. import {useState} from 'react';
  2. import {createBrowserRouter, RouterProvider} from 'react-router-dom';
  3. import LoadingError from 'sentry/components/loadingError';
  4. import LoadingIndicator from 'sentry/components/loadingIndicator';
  5. import {ThemeAndStyleProvider} from 'sentry/components/themeAndStyleProvider';
  6. import {t} from 'sentry/locale';
  7. import {
  8. DEFAULT_QUERY_CLIENT_CONFIG,
  9. QueryClient,
  10. QueryClientProvider,
  11. } from 'sentry/utils/queryClient';
  12. import {useSetupWizardViewedAnalytics} from 'sentry/views/setupWizard/utils/setupWizardAnalytics';
  13. import {useOrganizationsWithRegion} from 'sentry/views/setupWizard/utils/useOrganizationsWithRegion';
  14. import {WaitingForWizardToConnect} from 'sentry/views/setupWizard/waitingForWizardToConnect';
  15. import {WizardProjectSelection} from 'sentry/views/setupWizard/wizardProjectSelection';
  16. const queryClient = new QueryClient(DEFAULT_QUERY_CLIENT_CONFIG);
  17. type Props = {
  18. hash: string;
  19. enableProjectSelection?: boolean;
  20. };
  21. function SetupWizard({hash, enableProjectSelection = false}: Props) {
  22. const [router] = useState(() =>
  23. createBrowserRouter([
  24. {
  25. path: '*',
  26. element: (
  27. <SetupWizardContent
  28. hash={hash}
  29. enableProjectSelection={enableProjectSelection}
  30. />
  31. ),
  32. },
  33. ])
  34. );
  35. return (
  36. <ThemeAndStyleProvider>
  37. <QueryClientProvider client={queryClient}>
  38. <RouterProvider router={router} />
  39. </QueryClientProvider>
  40. </ThemeAndStyleProvider>
  41. );
  42. }
  43. function SetupWizardContent({hash, enableProjectSelection}: Props) {
  44. const {data: organizations, isError, isLoading} = useOrganizationsWithRegion();
  45. useSetupWizardViewedAnalytics(organizations);
  46. if (isLoading) {
  47. return <LoadingIndicator />;
  48. }
  49. if (isError || !organizations) {
  50. return <LoadingError message={t('Failed to load organizations')} />;
  51. }
  52. return enableProjectSelection ? (
  53. <WizardProjectSelection hash={hash} organizations={organizations} />
  54. ) : (
  55. <WaitingForWizardToConnect hash={hash} organizations={organizations} />
  56. );
  57. }
  58. export default SetupWizard;