Skip to content

Commit

Permalink
refactor(console): delay module loading suspense component display by…
Browse files Browse the repository at this point in the history
… 500ms
  • Loading branch information
charIeszhao committed Jul 31, 2024
1 parent cf31e3a commit 44dde14
Showing 1 changed file with 24 additions and 2 deletions.
26 changes: 24 additions & 2 deletions packages/console/src/containers/ConsoleContent/index.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { Suspense } from 'react';
import { Suspense, useEffect, useState } from 'react';
import { useOutletContext, useRoutes } from 'react-router-dom';
import { safeLazy } from 'react-safe-lazy';

Expand All @@ -15,8 +15,30 @@ import { Skeleton } from './Sidebar';
import useTenantScopeListener from './hooks';
import styles from './index.module.scss';

const suspenseDisplayTimeout = 500; // Milliseconds
const Sidebar = safeLazy(async () => import('./Sidebar'));

function SuspenseFallback() {
const [showSpinner, setShowSpinner] = useState(false);

useEffect(() => {
const timeout = window.setTimeout(() => {
setShowSpinner(true);
}, suspenseDisplayTimeout);

return () => {
clearTimeout(timeout);
setShowSpinner(false);
};
}, []);

if (showSpinner) {
return <Daisy className={styles.daisy} />;
}

return null;
}

function ConsoleContent() {
const { scrollableContent } = useOutletContext<AppContentOutletContext>();
const routeObjects = useConsoleRoutes();
Expand All @@ -33,7 +55,7 @@ function ConsoleContent() {
</Suspense>
<OverlayScrollbar className={styles.overlayScrollbarWrapper}>
<div ref={scrollableContent} className={styles.main}>
<Suspense fallback={<Daisy className={styles.daisy} />}>{routes}</Suspense>
<Suspense fallback={<SuspenseFallback />}>{routes}</Suspense>
</div>
</OverlayScrollbar>
{isDevFeaturesEnabled && (
Expand Down

0 comments on commit 44dde14

Please sign in to comment.