| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 |
- /**
- * @author oldj
- * @blog http://oldj.net
- */
- 'use strict'
- const request = require('request')
- const cheerio = require('cheerio')
- const {shell, dialog} = require('electron')
- const current_version = require('../version')
- const m_lang = require('../server/lang')
- const lang = m_lang.getLang(global.user_language)
- const svr = require('./svr')
- const formatVersion = require('../libs/formatVersion')
- function convertStrVersion (v) {
- let a = v.match(/\d+/g)
- return a.map(i => parseInt(i))
- }
- function compareVersion (a, b) {
- if (typeof a === 'string') {
- a = convertStrVersion(a)
- }
- if (typeof b === 'string') {
- b = convertStrVersion(b)
- }
- let len = Math.max(a.length, b.length)
- for (let i = 0; i < len; i++) {
- let ai = a[i]
- let bi = b[i]
- if (typeof ai === 'number' && typeof bi === 'number') {
- if (ai === bi) {
- continue
- }
- return ai - bi
- }
- if (typeof ai === 'number' && typeof bi !== 'number') {
- return 1
- }
- if (typeof ai !== 'number' && typeof bi === 'number') {
- return -1
- }
- return 0
- }
- }
- exports.check = (is_silent = false) => {
- let release_url = require('../configs').url_download
- console.log('start check updates..')
- request(release_url, (err, res, body) => {
- let buttons = [lang.ok]
- if (err) {
- console.log(err)
- if (!is_silent) {
- dialog.showMessageBox({
- type: 'error',
- message: lang.check_update_err,
- buttons
- })
- }
- return
- }
- //let body = res.text
- let $ = cheerio.load(body)
- let a = $('.release-meta .css-truncate-target')
- if (a.length <= 0) {
- console.log('not found versios!')
- return
- }
- let last_v = $(a[0]).text()
- // Array.from(a).map(i => {
- // console.log($(i).text());
- // });
- let cmp = compareVersion(current_version, last_v)
- console.log('cmp', cmp)
- let message
- if (cmp >= 0) {
- // 没有发现新版本
- message = m_lang.fill(lang.check_update_nofound, formatVersion(current_version))
- } else {
- // 发现新版本
- message = m_lang.fill(lang.check_update_found, last_v)
- buttons.unshift(lang.cancel)
- svr.broadcast('update_found', last_v)
- }
- if (!is_silent) {
- dialog.showMessageBox({
- type: 'info',
- message,
- buttons
- }, (res) => {
- if (cmp < 0 && res === 1) {
- shell.openExternal(release_url)
- }
- })
- }
- })
- }
|