Skip to content

Commit

Permalink
electron stuff finished
Browse files Browse the repository at this point in the history
  • Loading branch information
UnchartedBull committed Aug 31, 2020
1 parent 735f395 commit becd2c4
Show file tree
Hide file tree
Showing 6 changed files with 63 additions and 21 deletions.
7 changes: 1 addition & 6 deletions .eslintrc.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ module.exports = {
'plugin:import/errors',
'plugin:import/warnings',
'plugin:import/typescript',
'node'
'node',
],
parserOptions: {
ecmaVersion: 2020,
Expand Down Expand Up @@ -42,16 +42,11 @@ module.exports = {
},
],
},
env: {
node: false,
typescript: true,
},
},
{
files: '**/*.js',
env: {
node: true,
typescript: false,
},
},
],
Expand Down
35 changes: 35 additions & 0 deletions helper/discover.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
/* eslint-disable @typescript-eslint/no-var-requires */
/* eslint-disable import/no-commonjs */

const mdns = require('mdns');
const compareVersions = require('compare-versions');

const browser = mdns.createBrowser(mdns.tcp('octoprint'));
const minimumVersion = '1.3.5';
let nodes = [];

function discoverNodes(window) {
browser.on('serviceUp', service => {
nodes.push({
id: service.interfaceIndex,
name: service.name,
version: service.txtRecord.version,
url: `${service.host.replace(/\.$/, '')}:${service.port}${service.txtRecord.path}api/`,
disable: compareVersions(minimumVersion, service.txtRecord.version) === -1,
});
sendNodes(window);
});

browser.on('serviceDown', service => {
nodes = nodes.filter(node => node.id !== service.interfaceIndex);
sendNodes(window);
});

browser.start();
}

function sendNodes(window) {
window.webContents.send('discoveredNodes', nodes);
}

module.exports = discoverNodes;
11 changes: 11 additions & 0 deletions helper/listener.js
Original file line number Diff line number Diff line change
@@ -1,10 +1,14 @@
/* eslint-disable @typescript-eslint/no-var-requires */
/* eslint-disable import/no-commonjs */

const path = require('path');
const url = require('url');

const exec = require('child_process').exec;

const sendCustomStyles = require('./styles');
const { downloadUpdate, sendVersionInfo } = require('./update');
const discoverNodes = require('./discover');

function activateScreenSleepListener(ipcMain) {
ipcMain.on('screenSleep', () => {
Expand Down Expand Up @@ -43,11 +47,18 @@ function activateUpdateListener(ipcMain, window) {
});
}

function activateDiscoverListener(ipcMain, window) {
ipcMain.on('discover', () => {
discoverNodes(window);
});
}

function activateListeners(ipcMain, window, app) {
activateAppInfoListener(ipcMain, window, app);
activateScreenSleepListener(ipcMain);
activateReloadListener(ipcMain, window);
activateUpdateListener(ipcMain, window);
activateDiscoverListener(ipcMain, window);
}

module.exports = activateListeners;
3 changes: 3 additions & 0 deletions helper/styles.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
/* eslint-disable @typescript-eslint/no-var-requires */
/* eslint-disable import/no-commonjs */

const fs = require('fs');
const path = require('path');
const { app } = require('electron');
Expand Down
15 changes: 9 additions & 6 deletions helper/update.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
/* eslint-disable no-sync */
/* eslint-disable @typescript-eslint/no-var-requires */
/* eslint-disable import/no-commonjs */

const fs = require('fs');
const got = require('got');
const stream = require('stream');
Expand All @@ -6,31 +10,30 @@ const progress = require('progress-stream');

const exec = require('child_process').exec;


function downloadUpdate(updateInfo, window) {
const downloadPath = '/tmp/octodash.deb';

exec('arch', (err, stdout, stderr) => {
if (err || stderr) {
window.webContents.send('updateError', {
error: err ? err : { message: stderr },
error: err || { message: stderr },
});
}
got(updateInfo.assetsURL)
.then(releaseFiles => {
const reducer = (accumulator, currentValue) => accumulator + currentValue;
let averageETA = [];
const averageETA = [];
let downloadURL;
let packageSize;
for (let package of JSON.parse(releaseFiles.body)) {
for (const package of JSON.parse(releaseFiles.body)) {
if (package.name.includes(stdout.trim())) {
downloadURL = package.browser_download_url;
packageSize = package.size;
}
}
if (downloadURL) {
const downloadPipeline = promisify(stream.pipeline);
let downloadProgress = progress({
const downloadProgress = progress({
length: packageSize,
time: 300,
});
Expand Down Expand Up @@ -69,7 +72,7 @@ function downloadUpdate(updateInfo, window) {
exec('sudo ~/scripts/update-octodash', (err, _, stderr) => {
if (err || stderr) {
window.webContents.send('updateError', {
error: err ? err : { message: stderr },
error: err || { message: stderr },
});
} else {
window.webContents.send('updateInstalled');
Expand Down
13 changes: 4 additions & 9 deletions main.js
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
/* eslint-disable @typescript-eslint/no-var-requires */
/* eslint-disable import/no-commonjs */

const { app, BrowserWindow, ipcMain } = require('electron');
const electronStore = require('electron-store');
const path = require('path');
const url = require('url');

const store = new electronStore();

const args = process.argv.slice(1);
const big = args.some(val => val === '--big');
const dev = args.some(val => val === '--serve');
Expand All @@ -17,11 +17,6 @@ app.allowRendererProcessReuse = true;
let window;

function createWindow() {
config = store.get('config');
store.onDidChange('config', newValue => {
config = newValue;
});

const { screen, session } = require('electron');

if (!dev) {
Expand All @@ -41,7 +36,7 @@ function createWindow() {
window = new BrowserWindow({
width: dev ? (big ? 1400 : 1080) : mainScreen.size.width,
height: dev ? (big ? 502 : 342) : mainScreen.size.height,
frame: dev ? true : false,
frame: dev,
backgroundColor: '#353b48',
webPreferences: {
nodeIntegration: true,
Expand Down

0 comments on commit becd2c4

Please sign in to comment.