geekbase
Version:
geek app base library
74 lines (60 loc) • 2.23 kB
JavaScript
import {useEffect, useState} from 'react'
import {useStoreActions} from 'easy-peasy'
import axios from 'axios'
const fetchAppConfig = async (url) => {
try {
const result = await axios.get(`${url}?timestamp=${new Date().getTime()}`, {
timeout: 2500
})
console.log('远程配置请求结果', result)
return [result.data.data, null]
}catch (e) {
console.log('请求异常', e)
return [null, e]
}
}
export default function useAppConfig(localConfig, configUrl) {
// 全局配置actions
const setAppConfig = useStoreActions(actions => actions.GeekAppConfigModel.setAppConfig)
// 停服公告actions
const checkStopServer = useStoreActions(actions => actions.GeekStopServerModalModel.checkStopServer)
// 系统更新actions
const checkSystemUpdate = useStoreActions(actions => actions.GeekSystemUpdateModalModel.checkSystemUpdate)
// 热更新actions
const checkHotUpdate = useStoreActions(actions => actions.GeekHotUpdateModalModel.checkHotUpdate)
// 测试actions
const updateAppConfigByTestConfig = useStoreActions(actions => actions.GeekTestModalModel.updateAppConfigByTestConfig)
// 全局配置以及更新弹窗等结束
const [finish, setFinish] = useState(false)
useEffect(() => {
console.log('开始geek-app-config的hook')
const appConfigInit = async () => {
setFinish(false)
const [updatedAppConfig, err] = await fetchAppConfig(configUrl)
let appConfig = !err ? {
...localConfig,
...updatedAppConfig
} : localConfig
appConfig = await updateAppConfigByTestConfig(appConfig)
console.log('设置全局配置前')
setAppConfig(appConfig)
console.log('设置全局配置后')
console.log('合并后的配置', appConfig)
// 停服公告
console.log('停服公告前')
await checkStopServer()
console.log('停服公告后')
// 系统更新
console.log('系统更新前')
await checkSystemUpdate(false)
console.log('系统更新后')
// 热更新
console.log('热更新前')
await checkHotUpdate()
console.log('热更新后')
setFinish(true)
}
appConfigInit()
}, [])
return [finish]
}