UNPKG

geekbase

Version:

geek app base library

74 lines (60 loc) 2.23 kB
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] }