import styles from '@/components/UpdateModal/index.module.scss' import ImageUrl from '@/utils/package/imageUrl'; import { getUpdateUrl } from '@/utils/package/public'; import { Button, Flex, Modal, Progress } from 'antd'; import { forwardRef, useImperativeHandle, useState, memo, useEffect } from "react"; const UpdateModal = forwardRef((props: any, ref: any) => { useImperativeHandle(ref, () => ({ changeModal: (data: any) => { try { let dataJson = JSON.parse(data) if (dataJson.type === '0') { // 打开弹窗 setProgress(res => { if (res) { } else { window.electron.onDownload('1') } return res }) } else if (dataJson.type === '1') { // 下载中 返回进度值 if (dataJson.value === 100 && location.hash.indexOf('/meeting') === -1) { setIsUpdateModal(true) getContent() } setProgress(dataJson.value.toFixed(2)) } else if (dataJson.type === '2') { // 下载完成 setProgress(100) if (location.hash.indexOf('/meeting') === -1) { setIsUpdateModal(true) getContent() } } else if (dataJson.type === '3') { if (location.hash.indexOf('/meeting') === -1) { setIsUpdateModal(true) getContent() } } } catch (error) { } } })) const [isUpdateModal, setIsUpdateModal] = useState(false); const [progress, setProgress] = useState(0); // 下载进度值 const [updateContent, setUpdateContent] = useState('') // 版本更新内容 const [env, setEnv] = useState('') useEffect(() => { window.electron.getEnv().then(res => { setEnv(res) }) }, []) function getContent() { window.electron.getEnv().then(res => { fetch(`${getUpdateUrl(res)}/update.txt?t=${+new Date()}`) // 配置服务器地址 .then(async response => { if (response.status === 200) { return setUpdateContent(await response.text()) } throw new Error('Network response was not ok.'); }) .then(textContent => { }) .catch(error => { }); }) } function closeModal() { // if (progress != 100) { // window.electron.onDownload('0') // 取消下载 // } setIsUpdateModal(false) } return ( <> closeModal()} centered width={'400px'} className='modal-padding' maskClosable={false} closeIcon={progress === 100 ? false : true} >
{ !progress ?
{env === "development" ?
setIsUpdateModal(false)}>暂不更新
: null}
: progress < 100 ?
下载进度:{progress}%
: }
) }) export default memo(UpdateModal)