Refactor app bootstrap loading

This commit is contained in:
2026-01-18 00:55:52 +00:00
parent 7130919576
commit a3ad9fec6e
4 changed files with 65 additions and 57 deletions

View File

@@ -1,37 +1,11 @@
import { useEffect, useState } from 'react'
import { BrowserRouter } from 'react-router-dom'
import AppLayout from '@/components/app/AppLayout'
import LoadingScreen from '@/components/app/LoadingScreen'
import { useComponentTreeLoader } from '@/hooks/use-component-tree-loader'
import { useSeedData } from '@/hooks/data/use-seed-data'
import { preloadCriticalComponents } from '@/lib/component-registry'
import { useAppBootstrap } from '@/hooks/use-app-bootstrap'
export default function AppBootstrap() {
const { loadSeedData } = useSeedData()
const { loadComponentTrees } = useComponentTreeLoader()
const [appReady, setAppReady] = useState(false)
useEffect(() => {
const timer = setTimeout(() => {
setAppReady(true)
}, 100)
loadSeedData()
.then(() => loadComponentTrees())
.catch(err => {
console.error('[APP_ROUTER] ❌ Seed data loading failed:', err)
})
.finally(() => {
clearTimeout(timer)
setAppReady(true)
preloadCriticalComponents()
})
return () => {
clearTimeout(timer)
}
}, [loadSeedData, loadComponentTrees])
const { appReady } = useAppBootstrap({ loadComponentTrees: true })
if (!appReady) {
return <LoadingScreen />

View File

@@ -1,34 +1,11 @@
import { useEffect, useState } from 'react'
import { BrowserRouter } from 'react-router-dom'
import AppRouterLayout from '@/components/app/AppRouterLayout'
import LoadingScreen from '@/components/app/LoadingScreen'
import { useSeedData } from '@/hooks/data/use-seed-data'
import { preloadCriticalComponents } from '@/lib/component-registry'
import { useAppBootstrap } from '@/hooks/use-app-bootstrap'
export default function AppRouterBootstrap() {
const { loadSeedData } = useSeedData()
const [appReady, setAppReady] = useState(false)
useEffect(() => {
const timer = setTimeout(() => {
setAppReady(true)
}, 100)
loadSeedData()
.catch(err => {
console.error('[APP_ROUTER] ❌ Seed data loading failed:', err)
})
.finally(() => {
clearTimeout(timer)
setAppReady(true)
preloadCriticalComponents()
})
return () => {
clearTimeout(timer)
}
}, [loadSeedData])
const { appReady } = useAppBootstrap()
if (!appReady) {
return <LoadingScreen />