0
Fork 0
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:
Charles Zhao 2024-08-01 17:44:00 +08:00 committed by GitHub
parent c6a1cab399
commit eef3d74dc8
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -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 && (