mirror of
https://github.com/JefferyHcool/BiliNote.git
synced 2026-05-06 20:42:52 +08:00
- 更新 BackendInitDialog 组件中的提示信息,增加报错提示 - 在 config 路由中添加 sys_check 接口,用于系统检查 - 修改 useCheckBackend钩子,使用新的 sys_check接口进行系统检查
52 lines
1.2 KiB
TypeScript
52 lines
1.2 KiB
TypeScript
import { useEffect, useState } from 'react'
|
|
import request from '@/utils/request'
|
|
|
|
const MAX_RETRIES = 3
|
|
const RETRY_INTERVAL = 10000 // 10秒
|
|
|
|
export const useCheckBackend = () => {
|
|
const [loading, setLoading] = useState(false)
|
|
const [initialized, setInitialized] = useState(false)
|
|
|
|
useEffect(() => {
|
|
let retries = 0
|
|
|
|
const check = async () => {
|
|
try {
|
|
await request.get('/sys_check')
|
|
setInitialized(true)
|
|
setLoading(false)
|
|
} catch {
|
|
if (retries === 0) {
|
|
// 第一次失败时开始显示加载状态
|
|
setLoading(true)
|
|
}
|
|
|
|
if (retries < MAX_RETRIES) {
|
|
retries++
|
|
setTimeout(check, RETRY_INTERVAL)
|
|
} else {
|
|
// 达到重试上限,继续轮询直到后端就绪
|
|
waitUntilBackendReady()
|
|
}
|
|
}
|
|
}
|
|
|
|
const waitUntilBackendReady = async () => {
|
|
while (true) {
|
|
try {
|
|
await request.get('/sys_health')
|
|
setInitialized(true)
|
|
setLoading(false)
|
|
break
|
|
} catch {
|
|
await new Promise(res => setTimeout(res, RETRY_INTERVAL))
|
|
}
|
|
}
|
|
}
|
|
|
|
check()
|
|
}, [])
|
|
|
|
return { loading, initialized }
|
|
} |