2022-01-28 20:06:36 +00:00
|
|
|
const { app, autoUpdater } = require('electron');
|
|
|
|
const events = require('events');
|
2021-12-09 16:25:14 +00:00
|
|
|
|
2022-01-28 20:06:36 +00:00
|
|
|
const request = require('request');
|
2021-12-09 16:25:14 +00:00
|
|
|
|
2022-01-28 20:06:36 +00:00
|
|
|
const versionParse = (s) => s.split('.').map((x) => parseInt(x));
|
|
|
|
const versionNewer = (a, b) => a.some((x, i) => {
|
|
|
|
const y = b[i];
|
|
|
|
if (x == undefined) return false;
|
|
|
|
if (y == undefined) return true;
|
2021-12-09 16:25:14 +00:00
|
|
|
|
2022-01-28 20:06:36 +00:00
|
|
|
if (x === y) return undefined;
|
|
|
|
return x > b[i];
|
|
|
|
});
|
2021-12-09 16:25:14 +00:00
|
|
|
|
2022-01-28 20:06:36 +00:00
|
|
|
class HostLinux extends events.EventEmitter {
|
2021-12-09 16:25:14 +00:00
|
|
|
setFeedURL(url) {
|
|
|
|
this.updateUrl = url;
|
|
|
|
}
|
|
|
|
|
|
|
|
quitAndInstall() {
|
2022-01-28 20:06:36 +00:00
|
|
|
app.relaunch();
|
|
|
|
app.quit();
|
2021-12-09 16:25:14 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
async checkForUpdates() {
|
2022-01-28 20:06:36 +00:00
|
|
|
const current = versionParse(app.getVersion());
|
2021-12-09 16:25:14 +00:00
|
|
|
this.emit('checking-for-update');
|
|
|
|
|
|
|
|
try {
|
2022-01-28 20:55:30 +00:00
|
|
|
const res = await new Promise((res) => request.get(this.updateUrl, (_e, r) => res(r)));
|
|
|
|
if (res.statusCode === 204) return this.emit('update-not-available');
|
2021-12-09 16:25:14 +00:00
|
|
|
|
2022-01-28 20:55:30 +00:00
|
|
|
const latest = versionParse(JSON.parse(res.body).name);
|
2021-12-09 16:25:14 +00:00
|
|
|
|
2022-01-28 20:06:36 +00:00
|
|
|
if (versionNewer(latest, current)) {
|
|
|
|
log('HostLinux', 'Outdated');
|
|
|
|
return this.emit('update-manually', latestVerStr);
|
2021-12-09 16:25:14 +00:00
|
|
|
}
|
2022-01-28 20:06:36 +00:00
|
|
|
|
|
|
|
log('HostLinux', 'Not outdated');
|
|
|
|
this.emit('update-not-available');
|
2021-12-09 16:25:14 +00:00
|
|
|
} catch (err) {
|
2022-01-28 20:06:36 +00:00
|
|
|
log('HostLinux', 'Error', this.updateUrl, err.message);
|
2021-12-09 16:25:14 +00:00
|
|
|
this.emit('error', err);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
switch (process.platform) {
|
|
|
|
case 'darwin':
|
2022-01-28 20:06:36 +00:00
|
|
|
exports.default = autoUpdater;
|
2021-12-09 16:25:14 +00:00
|
|
|
break;
|
|
|
|
|
|
|
|
case 'linux':
|
2022-01-28 20:06:36 +00:00
|
|
|
exports.default = new HostLinux();
|
2021-12-09 16:25:14 +00:00
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
|
|
|
module.exports = exports.default;
|