mirror of
https://github.com/logto-io/logto.git
synced 2025-03-31 22:51:25 -05:00
refactor(console): delay module loading suspense component display by 500ms (#6345)
This commit is contained in:
parent
c6a1cab399
commit
eef3d74dc8
1 changed files with 23 additions and 2 deletions
|
@ -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';
|
||||
|
||||
|
@ -15,8 +15,29 @@ 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);
|
||||
};
|
||||
}, []);
|
||||
|
||||
if (showSpinner) {
|
||||
return <Daisy className={styles.daisy} />;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
function ConsoleContent() {
|
||||
const { scrollableContent } = useOutletContext<AppContentOutletContext>();
|
||||
const routeObjects = useConsoleRoutes();
|
||||
|
@ -33,7 +54,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 && (
|
||||
|
|
Loading…
Add table
Reference in a new issue