diff --git a/app/hyperterm.js b/app/hyperterm.js
index 8365907b..451fa624 100644
--- a/app/hyperterm.js
+++ b/app/hyperterm.js
@@ -41,6 +41,7 @@ export default class HyperTerm extends Component {
this.onResize = this.onResize.bind(this);
this.onChange = this.onChange.bind(this);
this.openExternal = this.openExternal.bind(this);
+ this.quitAndInstall = this.quitAndInstall.bind(this);
this.focusActive = this.focusActive.bind(this);
this.closeBrowser = this.closeBrowser.bind(this);
this.onHeaderMouseDown = this.onHeaderMouseDown.bind(this);
@@ -98,13 +99,23 @@ export default class HyperTerm extends Component {
{ this.state.cols }x{ this.state.rows }
- Update available (
{ this.state.updateVersion }).
+ Version
{ this.state.updateVersion } ready.
{this.state.updateNote ? ` ${this.state.updateNote}. ` : ' '}
-
Download
+
Restart
+ to apply
[x]
;
}
+ quitAndInstall (ev) {
+ ev.preventDefault();
+ this.rpc.emit('quit-and-install');
+ }
+
+ closeUpdateIndicator () {
+ // @TODO
+ }
+
openExternal (ev) {
ev.preventDefault();
this.rpc.emit('open external', { url: ev.target.href });
@@ -240,6 +251,13 @@ export default class HyperTerm extends Component {
this.rpc.on('increase font size', this.increaseFontSize);
this.rpc.on('decrease font size', this.decreaseFontSize);
this.rpc.on('reset font size', this.resetFontSize);
+
+ this.rpc.once('update-available', (data) => {
+ // hardcoded data for now
+ const updateVersion = '3.0.1';
+ const updateNote = '';
+ this.setState({ updateVersion, updateNote });
+ });
}
clearCurrentTerm () {
@@ -249,8 +267,8 @@ export default class HyperTerm extends Component {
}
onUpdateAvailable (updateVersion, updateNote = '') {
- updateNote = updateNote.replace(/\.$/, '');
- this.setState({ updateVersion, updateNote });
+ // updateNote = updateNote.replace(/\.$/, '');
+ // this.setState({ updateVersion, updateNote });
}
moveTo (n) {
diff --git a/auto-updater.js b/auto-updater.js
new file mode 100644
index 00000000..3d3c12b6
--- /dev/null
+++ b/auto-updater.js
@@ -0,0 +1,32 @@
+const { autoUpdater, dialog } = require('electron');
+// const { version } = require('./package');
+const version = '0.3.0'; // to force update available
+
+const FEED_URL = 'https://nuts-serve-nxchetcjig.now.sh/update/osx';
+
+module.exports = function AutoUpdater (rpc) {
+ autoUpdater.on('error', (err, msg) => {
+ dialog.showMessageBox({title: 'title', message: JSON.stringify(err), buttons: ['Ok error']});
+ dialog.showMessageBox({title: 'title', message: JSON.stringify(msg), buttons: ['Ok error']});
+ });
+
+ autoUpdater.setFeedURL(`${FEED_URL}/${version}`);
+
+ autoUpdater.once('update-downloaded', () => {
+ rpc.emit('update-available');
+ });
+
+ autoUpdater.once('update-available', () => {
+ dialog.showMessageBox({title: 'title', message: 'update-available', buttons: ['Ok']});
+ });
+
+ autoUpdater.once('update-not-available', () => {
+ dialog.showMessageBox({title: 'title', message: 'update-not-available', buttons: ['Ok']});
+ });
+
+ rpc.once('quit-and-install', () => {
+ autoUpdater.quitAndInstall();
+ });
+
+ autoUpdater.checkForUpdates();
+};
diff --git a/index.js b/index.js
index 3c9d3be8..c76bfd4c 100644
--- a/index.js
+++ b/index.js
@@ -5,6 +5,7 @@ const Session = require('./session');
const genUid = require('uid2');
const { resolve } = require('path');
const isDev = require('electron-is-dev');
+const AutoUpdater = require('./auto-updater');
if (isDev) {
console.log('running in dev mode');
@@ -59,6 +60,8 @@ app.on('ready', () => {
sessions.set(uid, session);
rpc.emit('new session', { uid });
+ AutoUpdater(rpc);
+
session.on('data', (data) => {
rpc.emit('data', { uid, data });
});