mirror of
https://github.com/cupcakearmy/unpixel.git
synced 2025-09-02 08:50:40 +00:00
auto updater
This commit is contained in:
@@ -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) => {
|
||||
|
@@ -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
45
src/back/updater.ts
Normal 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)
|
||||
}
|
||||
}
|
||||
}
|
@@ -1,5 +1,4 @@
|
||||
import React from 'react'
|
||||
import { render } from 'react-dom'
|
||||
|
||||
import '../base.css'
|
||||
|
||||
|
Reference in New Issue
Block a user