2017-12-23 03:38:19 -05:00
|
|
|
import { dialog, shell } from 'electron'
|
2019-12-19 06:17:21 -05:00
|
|
|
import db from '#/datastore'
|
2017-12-23 03:38:19 -05:00
|
|
|
import axios from 'axios'
|
2019-12-19 06:17:21 -05:00
|
|
|
import pkg from 'root/package.json'
|
2020-04-30 04:47:09 -04:00
|
|
|
import { lt } from 'semver'
|
2017-12-23 03:38:19 -05:00
|
|
|
const version = pkg.version
|
2020-01-08 23:09:54 -05:00
|
|
|
const releaseUrl = 'https://api.github.com/repos/Molunerfinn/PicGo/releases/latest'
|
|
|
|
const releaseUrlBackup = 'https://cdn.jsdelivr.net/gh/Molunerfinn/PicGo@latest/package.json'
|
2017-12-23 03:38:19 -05:00
|
|
|
const downloadUrl = 'https://github.com/Molunerfinn/PicGo/releases/latest'
|
|
|
|
|
|
|
|
const checkVersion = async () => {
|
2019-09-11 07:30:08 -04:00
|
|
|
let showTip = db.get('settings.showUpdateTip')
|
2017-12-23 03:38:19 -05:00
|
|
|
if (showTip === undefined) {
|
2019-09-11 07:30:08 -04:00
|
|
|
db.set('settings.showUpdateTip', true)
|
2017-12-23 03:38:19 -05:00
|
|
|
showTip = true
|
|
|
|
}
|
|
|
|
if (showTip) {
|
2019-12-19 06:17:21 -05:00
|
|
|
let res: any
|
|
|
|
try {
|
2020-01-08 23:09:54 -05:00
|
|
|
res = await axios.get(releaseUrl).catch(async () => {
|
|
|
|
const result = await axios.get(releaseUrlBackup)
|
|
|
|
return result
|
|
|
|
})
|
2019-12-19 06:17:21 -05:00
|
|
|
} catch (err) {
|
|
|
|
console.log(err)
|
|
|
|
}
|
2017-12-23 03:38:19 -05:00
|
|
|
if (res.status === 200) {
|
2020-01-08 23:09:54 -05:00
|
|
|
const latest = res.data.version || res.data.name
|
2017-12-23 03:38:19 -05:00
|
|
|
const result = compareVersion2Update(version, latest)
|
|
|
|
if (result) {
|
|
|
|
dialog.showMessageBox({
|
|
|
|
type: 'info',
|
|
|
|
title: '发现新版本',
|
|
|
|
buttons: ['Yes', 'No'],
|
2019-01-13 03:21:48 -05:00
|
|
|
message: `发现新版本${latest},更新了很多功能,是否去下载最新的版本?`,
|
2017-12-23 03:38:19 -05:00
|
|
|
checkboxLabel: '以后不再提醒',
|
|
|
|
checkboxChecked: false
|
2019-12-19 06:17:21 -05:00
|
|
|
}).then(res => {
|
|
|
|
if (res.response === 0) { // if selected yes
|
2017-12-23 03:38:19 -05:00
|
|
|
shell.openExternal(downloadUrl)
|
|
|
|
}
|
2019-12-19 06:17:21 -05:00
|
|
|
db.set('settings.showUpdateTip', !res.checkboxChecked)
|
2017-12-23 03:38:19 -05:00
|
|
|
})
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
return false
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
return false
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// if true -> update else return false
|
2019-12-19 06:17:21 -05:00
|
|
|
const compareVersion2Update = (current: string, latest: string) => {
|
2020-04-30 04:47:09 -04:00
|
|
|
try {
|
|
|
|
if (latest.includes('Beta')) {
|
|
|
|
const isCheckBetaUpdate = db.get('settings.checkBetaUpdate') !== false
|
|
|
|
if (!isCheckBetaUpdate) {
|
|
|
|
return false
|
|
|
|
}
|
2017-12-23 03:38:19 -05:00
|
|
|
}
|
2020-04-30 04:47:09 -04:00
|
|
|
return lt(current, latest)
|
|
|
|
} catch (e) {
|
|
|
|
return false
|
2017-12-23 03:38:19 -05:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
export default checkVersion
|