auto updater

This commit is contained in:
2021-04-06 17:18:36 +02:00
parent 87a9aa6425
commit dd74820963
6 changed files with 59 additions and 4 deletions

View File

@@ -4,6 +4,7 @@ import logger from 'electron-log'
import TrayUtility from './tray'
import Settings from './settings'
import Banner from './banner'
import Updater from './updater'
export const DEV = !app.isPackaged
@@ -21,6 +22,7 @@ app
TrayUtility.init()
Settings.init()
Banner.init()
Updater.init()
logger.log('Done')
})
.catch((e) => {

View File

@@ -75,7 +75,7 @@ export default class Settings {
const entry = join(__dirname, '../front/settings/index.html')
Settings.win.loadFile(entry)
if (DEV && false) {
if (DEV) {
Settings.win.setSize(800, 485)
Settings.win.setResizable(true)
Settings.win.webContents.openDevTools()

45
src/back/updater.ts Normal file
View File

@@ -0,0 +1,45 @@
import semver from 'semver'
import axios from 'axios'
import logger from 'electron-log'
import { dialog, shell } from 'electron'
import pkg from '../../package.json'
const current = semver.coerce(pkg.version)
const url = 'https://api.github.com/repos/cupcakearmy/unpixel/tags'
const interval = 1000 * 60 * 60 * 10 // 10 Minutes
export default class Updater {
static init() {
this.check()
}
static async check() {
const { data } = await axios({
method: 'get',
url,
})
// parse tags and reverse sort them to get the highest
const tags = data.map((d) => semver.coerce(d.name)).sort(semver.rcompare)
const latest = tags[0]
if (semver.lt(current, latest)) {
logger.info('New version available')
dialog
.showMessageBox(null, {
title: 'Update available',
message: 'A newer version is available, please download.',
buttons: ['Download', 'Later'],
cancelId: 1,
})
.then(({ response }) => {
if (response === 0) {
shell.openExternal('https://github.com/cupcakearmy/unpixel/releases')
process.exit(0)
}
})
} else {
logger.info('Up to date')
setTimeout(() => this.check(), interval)
}
}
}

View File

@@ -1,5 +1,4 @@
import React from 'react'
import { render } from 'react-dom'
import '../base.css'