forked from ethereum/mist
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathupdateChecker.js
More file actions
104 lines (84 loc) · 2.42 KB
/
updateChecker.js
File metadata and controls
104 lines (84 loc) · 2.42 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
const _ = global._;
const Windows = require('./windows');
const Settings = require('./settings');
const log = require('./utils/logger').create('updateChecker');
const got = require('got');
const semver = require('semver');
/**
* Check for updates to the app.
* @return {[type]} [description]
*/
const check = exports.check = () => {
log.info('Check for update...');
let str = null;
switch (Settings.uiMode) { // eslint-disable-line default-case
case 'mist':
str = 'mist';
break;
case 'wallet':
str = 'wallet';
break;
}
return got('https://api.github.com/repos/ethereum/mist/releases', {
timeout: 3000,
json: true,
})
.then((res) => {
const releases = _.filter(res.body, (release) => {
return (
!_.get(release, 'draft')
&& _.get(release, 'name', '').toLowerCase().indexOf(str) >= 0
);
});
if (!releases.length) {
log.debug('No releases available to check against.');
return;
}
const latest = releases[0];
if (semver.gt(latest.tag_name, Settings.appVersion)) {
log.info(`App (${Settings.appVersion}) is out of date. New ${latest.tag_name} found.`);
return {
name: latest.name,
version: latest.tag_name,
url: latest.html_url,
};
}
log.info('App is up-to-date.');
})
.catch((err) => {
log.error('Error checking for update', err);
});
};
function showWindow(options) {
log.debug('Show update checker window');
return Windows.createPopup('updateAvailable', options);
}
exports.run = () => {
check().then((update) => {
if (update) {
showWindow({
sendData: {
uiAction_checkUpdateDone: update,
},
});
}
store.dispatch({ type: '[MAIN]:UPDATE_CHECKER:FINISHED' });
}).catch((err) => {
log.error(err);
});
};
exports.runVisibly = () => {
const wnd = showWindow({
sendData: 'uiAction_checkUpdateInProgress',
});
wnd.on('ready', () => {
check().then((update) => {
wnd.send({
uiAction_checkUpdateDone: update,
});
}).catch((err) => {
log.error(err);
wnd.send('uiAction_checkUpdateDone');
});
});
};