Skip to content

Commit

Permalink
Beta version
Browse files Browse the repository at this point in the history
  • Loading branch information
megahertz committed Oct 14, 2016
1 parent 5a75ef0 commit 38ab069
Show file tree
Hide file tree
Showing 7 changed files with 260 additions and 30 deletions.
19 changes: 18 additions & 1 deletion example/app/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,13 @@
table { table-layout: fixed }
.pre { white-space: pre; overflow: auto }
col { width: 80px }
.alert { white-space: pre; overflow: auto }
</style>
</head>
<body>

<div id="messages"></div>

<table class="table table-hover">
<colgroup>
<col>
Expand All @@ -28,9 +31,13 @@
</table>

<script>
const { remote } = require('electron');
const { remote, ipcRenderer } = require('electron');
const { app } = remote;

ipcRenderer.on('update-available', (e, m) => showMessage('Update found', m));
ipcRenderer.on('update-not-available', () => showMessage('Update not found'));
ipcRenderer.on('update-downloaded', (e, m) => showMessage('Update downloaded', m));

renderData([
['Command line', JSON.stringify(remote.process.argv, null, ' '), 'pre'],
['Executable', app.getPath('exe')],
Expand All @@ -42,6 +49,16 @@
['ENV', JSON.stringify(remote.process.env, null, ' '), 'pre'],
]);

function showMessage(text, meta) {
if (meta) {
text += ': ' + JSON.stringify(meta, null, ' ');
}
const messages = document.getElementById('messages');
const div = document.createElement('div');
div.className = 'alert alert-info';
div.appendChild(document.createTextNode(text));
messages.appendChild(div);
}

function renderData(data) {
const tableBody = document.getElementById('rows');
Expand Down
29 changes: 25 additions & 4 deletions example/app/main.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,16 +4,37 @@ const {app, BrowserWindow} = require('electron');
const updater = require('electron-simple-updater');


updater.init({
logger: require('electron-log')
});

let mainWindow;

updater
.init({
logger: require('electron-log'),
checkUpdatesOnStart: false
})
.on('update-available', (meta) => {
if (mainWindow) {
mainWindow.webContents.send('update-available', meta);
}
})
.on('update-not-available', () => {
if (mainWindow) {
mainWindow.webContents.send('update-not-available');
}
})
.on('update-downloaded', (meta) => {
if (mainWindow) {
mainWindow.webContents.send('update-downloaded', meta);
}
});


app.on('ready', () => {
mainWindow = new BrowserWindow({
height: 600,
width: 800
});

mainWindow.loadURL('file://' + __dirname + '/index.html');

updater.checkForUpdates();
});
4 changes: 2 additions & 2 deletions example/app/package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "simple-updater-example",
"productName": "Simple Updater Example",
"version": "0.0.2",
"version": "0.0.1",
"description": "Example of using electron-simple-updater",
"main": "main.js",
"author": "Alexey Prokhorov",
Expand All @@ -14,6 +14,6 @@
},
"dependencies": {
"electron-log": "^1.1.1",
"electron-simple-updater": "0.0.4"
"electron-simple-updater": "0.0.19"
}
}
53 changes: 38 additions & 15 deletions index.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,33 @@ const { autoUpdater } = require('electron');
const events = require('events');

const win32 = require('./lib/win32');
const linux = require('./lib/linux');
const getUpdatesMeta = require('./lib/get-updates-meta');
const normalizeOptions = require('./lib/normalize-options');


class SimpleUpdater extends events.EventEmitter {
constructor() {
super();

/**
* @event update-downloaded
* @param {Object} meta Update metadata
*/
autoUpdater.on('update-downloaded', () => {
const version = this.meta.version;
this.options.logger.info(`New version ${version} has been downloaded`);
this.emit('update-downloaded', this.meta);
});

this.on('error', (e) => {
if (this.options.logger) {
this.options.logger.warn(e);
}
});
autoUpdater.on('error', e => this.emit('error', e));
}

init(options) {
if (this.options) {
this.options.logger.warn(
Expand All @@ -30,15 +52,7 @@ class SimpleUpdater extends events.EventEmitter {
this.checkForUpdates();
}

/**
* @event update-downloaded
* @param {Object} meta Update metadata
*/
autoUpdater.on('update-downloaded', () => {
const version = this.meta.version;
this.options.logger.info(`New version ${version} has been downloaded`);
this.emit('update-downloaded', this.meta);
});
return this;
}

setFeedURL(url) {
Expand Down Expand Up @@ -71,23 +85,32 @@ class SimpleUpdater extends events.EventEmitter {
this.emit('update-not-available');
}
})
.catch((e) => {
opt.logger.warn(e);
this.emit('error', e);
});
.catch(e => this.emit('error', e));
}

downloadUpdate() {
if (!this.meta) {
const msg = 'There is no metadata for update. Run checkForUpdates first.';
this.emit('error', msg);
}

let feedUrl = autoUpdater.getFeedURL();
/**
* @event update-downloading
* @param {Object} meta Update metadata
*/
this.emit('update-downloading', this.meta);


if (this.meta.platform === 'linux') {
feedUrl = this.meta.updateUrl;

linux.downloadUpdate(feedUrl)
.then(() => {
const version = this.meta.version;
this.options.logger.info(`New version ${version} has been downloaded`);
this.emit('update-downloaded', this.meta);
})
.catch(e => this.emit('error', e));
} else {
autoUpdater.checkForUpdates();
}
Expand Down Expand Up @@ -142,7 +165,7 @@ class SimpleUpdater extends events.EventEmitter {

checkIsInitialized() {
if (!this.options) {
console.warn('electron-simple-updater is not initialized');
this.emit('error', 'electron-simple-updater is not initialized');
return false;
} else {
return true;
Expand Down
6 changes: 3 additions & 3 deletions lib/get-updates-meta.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
'use strict';

const semver = require('semver');
const httpGet = require('http-get-shim');
const request = require('httpreq');

module.exports = getUpdatesMeta;

Expand Down Expand Up @@ -37,12 +37,12 @@ function extractUpdateMeta(updatesMeta, build, channel, version) {

function getJson(url) {
return new Promise((resolve, reject) => {
httpGet(url, (err, respose, data) => {
request.get(url, (err, respose) => {
if (err) {
reject(err);
} else {
try {
resolve(JSON.parse(data));
resolve(JSON.parse(respose.body));
} catch(e) {
e.message =
`Error while parsing '${url}'. ${e.message}. Data:\n ${data}`;
Expand Down
Loading

0 comments on commit 38ab069

Please sign in to comment.