From fdece7ae911c037e7f90a61e46a3a556627ff445 Mon Sep 17 00:00:00 2001 From: Thomas Nordquist Date: Sun, 13 Jan 2019 17:37:13 +0100 Subject: [PATCH] Notify user if auto update failed --- app/src/components/Tree/Tree.tsx | 7 ++++--- electron.js | 32 ++++++++++++++++++++++++++------ events/EventBus.ts | 3 ++- 3 files changed, 32 insertions(+), 10 deletions(-) diff --git a/app/src/components/Tree/Tree.tsx b/app/src/components/Tree/Tree.tsx index 542d01f..824fa52 100644 --- a/app/src/components/Tree/Tree.tsx +++ b/app/src/components/Tree/Tree.tsx @@ -1,10 +1,11 @@ import * as React from 'react' -import { connect } from 'react-redux' import * as q from '../../../../backend/src/Model' -import { Typography } from '@material-ui/core' -import TreeNode from './TreeNode' + import { makeConnectionMessageEvent, rendererEvents } from '../../../../events' + import { AppState } from '../../reducers' +import TreeNode from './TreeNode' +import { connect } from 'react-redux' const MovingAverage = require('moving-average') diff --git a/electron.js b/electron.js index eb64817..7ec86b2 100644 --- a/electron.js +++ b/electron.js @@ -6,7 +6,7 @@ autoUpdater.logger.transports.file.level = 'info'; log.info('App starting...'); // Modules to control application life and create native browser window -const {app, BrowserWindow} = require('electron') +const { app, BrowserWindow, Notification } = require('electron') try { require('./backend/build/backend/src/index.js') } catch (err) { @@ -29,6 +29,31 @@ function createWindow () { // and load the index.html of the app. mainWindow.loadFile('app/index.html') + mainWindow.webContents.once('dom-ready', () => { + + console.log('window loaded, check for updates') + let updateInfo + + autoUpdater.on('update-available', (info) => { + updateInfo = info + }) + + autoUpdater.on('error', () => { + const version = updateInfo ? ` (${updateInfo.version})` : '' + const releaseNotes = ((updateInfo && updateInfo.releaseNotes) ? `${updateInfo.releaseNotes}\n` : '') + let notification = new Notification({ + title: 'Update available' + version, + silent: true, + body: releaseNotes + 'https://github.com/thomasnordquist/MQTT-Explorer/releases' + }) + notification.show() + }) + try { + autoUpdater.checkForUpdatesAndNotify() + } catch (error) { + console.error(error) + } + }) // Open the DevTools. // mainWindow.webContents.openDevTools() @@ -47,11 +72,6 @@ function createWindow () { // Some APIs can only be used after this event occurs. app.on('ready', () => { createWindow() - try { - autoUpdater.checkForUpdatesAndNotify() - } catch (error) { - console.error(error) - } }) // Quit when all windows are closed. diff --git a/events/EventBus.ts b/events/EventBus.ts index efa97f3..af9e89d 100644 --- a/events/EventBus.ts +++ b/events/EventBus.ts @@ -1,5 +1,6 @@ +import { IpcMain, IpcRenderer, ipcMain, ipcRenderer } from 'electron' + import { Event } from './Events' -import { ipcMain, ipcRenderer, IpcRenderer, IpcMain } from 'electron' interface EventBusInterface { subscribe(event: Event, callback:(msg: MessageType) => void): void