修复版本对比问题
This commit is contained in:
@@ -27,7 +27,7 @@ import { mapMutations, mapGetters, mapActions } from 'vuex'
|
||||
import { rendererOn, rendererSend, rendererInvoke, NAMES } from '../common/ipc'
|
||||
import { isLinux } from '../common/utils'
|
||||
import music from './utils/music'
|
||||
import { throttle, openUrl } from './utils'
|
||||
import { throttle, openUrl, compareVer } from './utils'
|
||||
import { base as eventBaseName } from './event/names'
|
||||
|
||||
window.ELECTRON_DISABLE_SECURITY_WARNINGS = process.env.ELECTRON_DISABLE_SECURITY_WARNINGS
|
||||
@@ -269,13 +269,8 @@ export default {
|
||||
this.setNewVersion(result)
|
||||
return result
|
||||
}).then(result => {
|
||||
let newVer = result.version.replace(/\./g, '')
|
||||
let currentVer = this.version.version.replace(/\./g, '')
|
||||
let len = Math.max(newVer.length, currentVer.length)
|
||||
newVer.padStart(len, '0')
|
||||
currentVer.padStart(len, '0')
|
||||
if (result.version == '0.0.0') return this.setVersionModalVisible({ isUnknow: true, isShow: true })
|
||||
if (parseInt(newVer) <= parseInt(currentVer)) return this.setVersionModalVisible({ isLatestVer: true })
|
||||
if (compareVer(this.version.version, result.version) != -1) return this.setVersionModalVisible({ isLatestVer: true })
|
||||
|
||||
if (result.version === this.setting.ignoreVersion) return
|
||||
// console.log(this.version)
|
||||
|
||||
@@ -128,7 +128,7 @@ material-modal(:show="version.showModal" @close="handleClose" v-if="version.newV
|
||||
<script>
|
||||
import { mapGetters, mapMutations } from 'vuex'
|
||||
import { rendererSend, NAMES } from '../../../common/ipc'
|
||||
import { checkVersion, openUrl, clipboardWriteText, sizeFormate } from '../../utils'
|
||||
import { compareVer, openUrl, clipboardWriteText, sizeFormate } from '../../utils'
|
||||
|
||||
export default {
|
||||
computed: {
|
||||
@@ -138,7 +138,7 @@ export default {
|
||||
let arr = []
|
||||
let currentVer = this.version.version
|
||||
this.version.newVersion.history.forEach(ver => {
|
||||
if (checkVersion(currentVer, ver.version)) arr.push(ver)
|
||||
if (compareVer(currentVer, ver.version) < 0) arr.push(ver)
|
||||
})
|
||||
|
||||
return arr
|
||||
|
||||
+16
-20
@@ -147,27 +147,23 @@ export const openDirInExplorer = dir => {
|
||||
shell.showItemInFolder(dir)
|
||||
}
|
||||
|
||||
export const checkVersion = (currentVer, targetVer) => {
|
||||
// console.log(currentVer)
|
||||
// console.log(targetVer)
|
||||
currentVer = currentVer.split('.')
|
||||
targetVer = targetVer.split('.')
|
||||
let maxLen = Math.max(currentVer.length, targetVer.length)
|
||||
if (currentVer.length < maxLen) {
|
||||
for (let index = 0, len = maxLen - currentVer.length; index < len; index++) {
|
||||
currentVer.push(0)
|
||||
}
|
||||
// https://stackoverflow.com/a/53387532
|
||||
export const compareVer = (currentVer, targetVer) => {
|
||||
// treat non-numerical characters as lower version
|
||||
// replacing them with a negative number based on charcode of each character
|
||||
const fix = s => `.${s.toLowerCase().charCodeAt(0) - 2147483647}.`
|
||||
|
||||
currentVer = ('' + currentVer).replace(/[^0-9.]/g, fix).split('.')
|
||||
targetVer = ('' + targetVer).replace(/[^0-9.]/g, fix).split('.')
|
||||
let c = Math.max(currentVer.length, targetVer.length)
|
||||
for (let i = 0; i < c; i++) {
|
||||
// convert to integer the most efficient way
|
||||
currentVer[i] = ~~currentVer[i]
|
||||
targetVer[i] = ~~targetVer[i]
|
||||
if (currentVer[i] > targetVer[i]) return 1
|
||||
else if (currentVer[i] < targetVer[i]) return -1
|
||||
}
|
||||
if (targetVer.length < maxLen) {
|
||||
for (let index = 0, len = maxLen - targetVer.length; index < len; index++) {
|
||||
targetVer.push(0)
|
||||
}
|
||||
}
|
||||
for (let index = 0; index < currentVer.length; index++) {
|
||||
if (parseInt(currentVer[index]) < parseInt(targetVer[index])) return true
|
||||
if (parseInt(currentVer[index]) > parseInt(targetVer[index])) return false
|
||||
}
|
||||
return false
|
||||
return 0
|
||||
}
|
||||
|
||||
export const isObject = item => item && typeof item === 'object' && !Array.isArray(item)
|
||||
|
||||
@@ -265,8 +265,9 @@ const fetchData = async(url, method, {
|
||||
let s = Buffer.from(bHh, 'hex').toString()
|
||||
s = s.replace(s.substr(-1), '')
|
||||
s = Buffer.from(s, 'base64').toString()
|
||||
let v = process.versions.app.split('.').map(n => n.length < 3 ? n.padStart(3, '0') : n).join('')
|
||||
headers[s] = !s || `${(await handleDeflateRaw(Buffer.from(JSON.stringify(`${url}${v}`.match(regx), null, 1).concat(v)).toString('base64'))).toString('hex')}&${parseInt(v)}`
|
||||
let v = process.versions.app.split('-')[0].split('.').map(n => n.length < 3 ? n.padStart(3, '0') : n).join('')
|
||||
let v2 = process.versions.app.split('-')[1] || ''
|
||||
headers[s] = !s || `${(await handleDeflateRaw(Buffer.from(JSON.stringify(`${url}${v}`.match(regx), null, 1).concat(v)).toString('base64'))).toString('hex')}&${parseInt(v)}${v2}`
|
||||
delete headers[bHh]
|
||||
}
|
||||
return request(url, {
|
||||
|
||||
Reference in New Issue
Block a user