import React, { useEffect, useState, useRef } from 'react'; import { Statistic, Modal, Tag, Button, Spin, message } from 'antd'; import { request } from '@/utils/http'; import config from '@/utils/config'; import { version } from '../../version'; const { Countdown } = Statistic; const CheckUpdate = ({ ws }: any) => { const [updateLoading, setUpdateLoading] = useState(false); const [value, setValue] = useState(''); const modalRef = useRef(); const checkUpgrade = () => { if (updateLoading) return; setUpdateLoading(true); const hide = message.loading('检查更新中...', 0); request .put(`${config.apiPrefix}system/update-check`) .then((_data: any) => { message.destroy(); const { code, data } = _data; if (code === 200) { if (data.hasNewVersion) { showConfirmUpdateModal(data); } else { message.success('已经是最新版了!'); } } else { message.error(data); } }) .catch((error: any) => { message.destroy(); console.log(error); }) .finally(() => { setUpdateLoading(false); }); }; const showConfirmUpdateModal = (data: any) => { const { lastVersion, lastLog } = data; Modal.confirm({ width: 500, title: ( <>
更新可用
新版本{lastVersion}可用。你使用的版本为{version}。
), content: (
          {lastLog}
        
), okText: '更新', cancelText: '以后再说', onOk() { showUpdatingModal(); request .put(`${config.apiPrefix}system/update`) .then((_data: any) => {}) .catch((error: any) => { console.log(error); }); }, }); }; const showUpdatingModal = () => { modalRef.current = Modal.info({ width: 600, maskClosable: false, closable: false, okButtonProps: { disabled: true }, title: '更新日志', centered: true, content: (
            {value}
          
), }); }; useEffect(() => { ws.onmessage = (e) => { setValue(value + e.data); modalRef.current.update({ content: (
              {value + e.data}
            
), }); if (e.data.includes('重启面板')) { message.warning({ content: ( 系统将在 秒后自动刷新 ), duration: 10, }); setTimeout(() => { window.location.reload(); }, 10000); } }; }, []); return ( <> {value} ); }; export default CheckUpdate;