Merge pull request #121 from RSS1102/RSS1102-main

chore : electron-auto-update refinement
This commit is contained in:
草鞋没号 2023-03-09 18:39:15 +08:00 committed by GitHub
commit 2c52f297cb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 41 additions and 33 deletions

View File

@ -52,7 +52,6 @@ export function update(win: Electron.BrowserWindow) {
}
)
})
// Install now
ipcMain.handle('quit-and-install', () => {
autoUpdater.quitAndInstall(false, true)

View File

@ -11,10 +11,10 @@ const Progress: React.FC<React.PropsWithChildren<{
<div className='progress-pr'>
<div
className='progress-rate'
style={{ width: `${percent / 100}%` }}
style={{ width: `${percent}%` }}
/>
</div>
<span className='progress-num'>{percent}%</span>
<span className='progress-num'>{(percent ?? 0).toString().substring(0,4)}%</span>
</div>
)
}

View File

@ -7,6 +7,7 @@
border: 1px solid #000;
border-radius: 3px;
height: 6px;
width: 100px;
}
.progress-rate {

View File

@ -28,14 +28,12 @@ const Update = () => {
* @type {import('electron-updater').UpdateCheckResult | null | { message: string, error: Error }}
*/
const result = await ipcRenderer.invoke('check-update')
setProgressInfo({ percent: 0 })
setChecking(false)
setModalOpen(true)
if (result?.error) {
console.error(result.error)
setUpdateAvailable(false)
} else {
setUpdateAvailable(true)
setModalOpen(true)
setUpdateError(result?.error)
}
}
@ -50,20 +48,27 @@ const Update = () => {
onCancel: () => setModalOpen(false),
onOk: () => ipcRenderer.invoke('start-download'),
}))
setUpdateAvailable(true)
} else {
setUpdateAvailable(false)
setUpdateError(undefined)
}
}, [])
const onUpdateError = useCallback((_event: Electron.IpcRendererEvent, arg1: ErrorType) => {
console.error(arg1.error)
console.error('arg1.error',arg1.error)
setUpdateAvailable(false)
setUpdateError(arg1)
}, [])
const onDownloadProgress = useCallback((_event: Electron.IpcRendererEvent, arg1: ProgressInfo) => {
console.log(arg1)
setUpdateAvailable(true)
setProgressInfo(arg1)
}, [])
const onUpdateDownloaded = useCallback((_event: Electron.IpcRendererEvent, ...args: any[]) => {
setProgressInfo({ percent: 100 })
setModalBtn(state => ({
...state,
cancelText: 'Later',
@ -87,6 +92,8 @@ const Update = () => {
}
}, [])
const isUpdate = updateAvailable && versionInfo
return (
<>
<Modal
@ -95,34 +102,35 @@ const Update = () => {
okText={modalBtn?.okText}
onCancel={modalBtn?.onCancel}
onOk={modalBtn?.onOk}
footer={!versionInfo?.update ? /* hide footer */null : undefined}
footer={isUpdate ? /* hide footer */null : undefined}
>
<div className={styles.modalslot}>
{updateError ? (
<div className='update-error'>
<p>Error downloading the latest version.</p>
<p>{updateError.message}</p>
</div>
) : null}
{!updateAvailable ? (
<div className='update-not-available'>
<span>Check update is Error, Please check your Network!</span>
</div>
) : null}
{versionInfo
? (
<div>
<div>The last version is: v{versionInfo.newVersion}</div>
<div>v{versionInfo.version} -&gt; v{versionInfo.newVersion}</div>
<div className='update-progress'>
<div className='progress-title'>Update progress:</div>
<div className='progress-bar'>
<Progress percent={progressInfo?.percent} ></Progress>
{
isUpdate
? (
<div>
<div>The last version is: v{versionInfo.newVersion}</div>
<div>v{versionInfo.version} -&gt; v{versionInfo.newVersion}</div>
<div className='update-progress'>
<div className='progress-title'>Update progress:</div>
<div className='progress-bar'>
<Progress percent={progressInfo?.percent} ></Progress>
</div>
</div>
</div>
</div>
)
: <span>Checking...</span>}
)
: updateError
? (
<div className='update-error'>
<p>Error downloading the latest version.</p>
<p>{updateError.message}</p>
</div>
) : (
<div>
<div>The last version is: v{versionInfo?.version}</div>
</div>
)
}
</div>
</Modal>
<button disabled={checking} onClick={checkUpdate}>