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 } from "react"; const UpdateModal = forwardRef((props: any, ref: any) => { useImperativeHandle(ref, () => ({ changeModal: (data: any) => { let dataJson = JSON.parse(data) getContent() if (dataJson.type === '0') { // 打开弹窗 setIsUpdateModal(true) } else if (dataJson.type === '1') { // 下载中 返回进度值 setProgress(dataJson.value.toFixed(2)) } else if (dataJson.type === '2') { // 下载完成 setProgress(100) } } })) const [isUpdateModal, setIsUpdateModal] = useState(false); const [progress, setProgress] = useState(0); // 下载进度值 const [updateContent, setUpdateContent] = useState('') // 版本更新内容 function getContent() { fetch(`${getUpdateUrl(import.meta.env.VITE_ENV)}/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={false} >
{ !progress ?
{import.meta.env.VITE_ENV === "development" ?
setIsUpdateModal(false)}>暂不更新
: null}
: progress < 100 ?
下载进度:{progress}%
: }
) }) export default UpdateModal