107 lines
2.9 KiB
JavaScript
107 lines
2.9 KiB
JavaScript
import { useAction, nextTick, onBeforeUnmount } from '@renderer/utils/vueTools'
|
|
import { onUpdateAvailable, onUpdateDownloaded, onUpdateError, onUpdateNotAvailable, onUpdateProgress } from '@renderer/utils/tools'
|
|
import { compareVer } from '@renderer/utils'
|
|
import { versionInfo } from '@renderer/core/share'
|
|
|
|
export default (setting) => {
|
|
const getVersionInfo = useAction('getVersionInfo')
|
|
|
|
// 更新超时定时器
|
|
let updateTimeout = setTimeout(() => {
|
|
updateTimeout = null
|
|
versionInfo.isTimeOut = true
|
|
nextTick(() => {
|
|
showUpdateModal()
|
|
})
|
|
}, 60 * 30 * 1000)
|
|
|
|
const clearUpdateTimeout = () => {
|
|
if (!updateTimeout) return
|
|
clearTimeout(updateTimeout)
|
|
updateTimeout = null
|
|
}
|
|
|
|
const showUpdateModal = () => {
|
|
(versionInfo.newVersion && versionInfo.newVersion.history
|
|
? Promise.resolve(versionInfo.newVersion)
|
|
: getVersionInfo().then(body => {
|
|
versionInfo.newVersion = body
|
|
return body
|
|
})
|
|
).catch(() => {
|
|
if (versionInfo.newVersion) return versionInfo.newVersion
|
|
versionInfo.isUnknow = true
|
|
let result = {
|
|
version: '0.0.0',
|
|
desc: null,
|
|
}
|
|
versionInfo.newVersion = result
|
|
return result
|
|
}).then(result => {
|
|
if (result.version == '0.0.0') {
|
|
versionInfo.isUnknow = true
|
|
versionInfo.showModal = true
|
|
return
|
|
}
|
|
if (compareVer(versionInfo.version, result.version) != -1) {
|
|
versionInfo.isLatestVer = true
|
|
return
|
|
}
|
|
|
|
if (result.version === setting.value.ignoreVersion) return
|
|
// console.log(this.version)
|
|
nextTick(() => {
|
|
versionInfo.showModal = true
|
|
})
|
|
})
|
|
}
|
|
|
|
const rUpdateAvailable = onUpdateAvailable((event, info) => {
|
|
versionInfo.isDownloading = true
|
|
getVersionInfo().catch(() => ({
|
|
version: info.version,
|
|
desc: info.releaseNotes,
|
|
})).then(body => {
|
|
// console.log(body)
|
|
versionInfo.newVersion = body
|
|
nextTick(() => {
|
|
versionInfo.showModal = true
|
|
})
|
|
})
|
|
})
|
|
const rUpdateNotAvailable = onUpdateNotAvailable((event, info) => {
|
|
clearUpdateTimeout()
|
|
versionInfo.newVersion = {
|
|
version: info.version,
|
|
desc: info.releaseNotes,
|
|
}
|
|
versionInfo.isLatestVer = true
|
|
})
|
|
const rUpdateError = onUpdateError((event, info) => {
|
|
clearUpdateTimeout()
|
|
versionInfo.isError = true
|
|
nextTick(() => {
|
|
showUpdateModal()
|
|
})
|
|
})
|
|
const rUpdateProgress = onUpdateProgress((event, progress) => {
|
|
versionInfo.downloadProgress = progress
|
|
})
|
|
const rUpdateDownloaded = onUpdateDownloaded((event, info) => {
|
|
clearUpdateTimeout()
|
|
versionInfo.isDownloaded = true
|
|
nextTick(() => {
|
|
showUpdateModal()
|
|
})
|
|
})
|
|
|
|
onBeforeUnmount(() => {
|
|
clearUpdateTimeout()
|
|
rUpdateAvailable()
|
|
rUpdateNotAvailable()
|
|
rUpdateError()
|
|
rUpdateProgress()
|
|
rUpdateDownloaded()
|
|
})
|
|
}
|