From 6d01122967169479c225201a66f9ebe675834e90 Mon Sep 17 00:00:00 2001 From: Igor Gassmann Date: Fri, 17 Nov 2017 17:35:37 -0300 Subject: [PATCH] Integrate React and Redux devtools into Electron --- app/main.js | 49 ++++++++++++++++++++++++++++++------------------- package.json | 3 ++- ui/js/store.js | 5 +++-- 3 files changed, 35 insertions(+), 22 deletions(-) diff --git a/app/main.js b/app/main.js index 0774c081a..897aad228 100644 --- a/app/main.js +++ b/app/main.js @@ -1,21 +1,7 @@ -module.exports = { safeQuit } +// Module imports const {app, BrowserWindow, ipcMain, Menu, Tray, globalShortcut} = require('electron'); -const url = require('url'); -const isDebug = process.env.NODE_ENV === 'development'; -const setMenu = require('./menu/main-menu.js'); - -if (isDebug) { - try - { - require('electron-debug')({showDevTools: true}); - } - catch (err) // electron-debug is in devDependencies, but some - { - console.error(err) - } -} - const path = require('path'); +const url = require('url'); const jayson = require('jayson'); const semver = require('semver'); const https = require('https'); @@ -26,8 +12,31 @@ const kill = require('tree-kill'); const child_process = require('child_process'); const assert = require('assert'); const {version: localVersion} = require(app.getAppPath() + '/package.json'); +const setMenu = require('./menu/main-menu.js'); -const VERSION_CHECK_INTERVAL = 30 * 60 * 1000; +// Debug configs +const isDebug = process.env.NODE_ENV === 'development'; +if (isDebug) { + try + { + require('electron-debug')({showDevTools: true}); + + const { default: installExtension, REACT_DEVELOPER_TOOLS, REDUX_DEVTOOLS } = require('electron-devtools-installer'); + app.on('ready', () => { + [REACT_DEVELOPER_TOOLS, REDUX_DEVTOOLS].forEach(extension => { + installExtension(extension) + .then((name) => console.log(`Added Extension: ${name}`)) + .catch((err) => console.log('An error occurred: ', err)); + }); + }); + } + catch (err) // electron-debug is in devDependencies, but some + { + console.error(err) + } +} + +// Misc constants const LATEST_RELEASE_API_URL = 'https://api.github.com/repos/lbryio/lbry-app/releases/latest'; const DAEMON_PATH = process.env.LBRY_DAEMON || path.join(__dirname, 'dist', 'lbrynet-daemon'); @@ -275,7 +284,7 @@ function handleOpenUriRequested(uri) { // Window not created yet, so store up requested URI for when it is openUri = processRequestedUri(uri); } else { - + if (win.isMinimized()) { win.restore() } else if (!win.isVisible()) { @@ -357,7 +366,7 @@ if (isSecondaryInstance) { // We're not in the original process, so quit return; } -app.on('ready', function(){ +app.on('ready', function() { launchDaemonIfNotRunning(); if (process.platform === "linux") { checkLinuxTraySupport( err => { @@ -537,3 +546,5 @@ ipcMain.on('get-auth-token', (event) => { ipcMain.on('set-auth-token', (event, token) => { keytar.setPassword("LBRY", "auth_token", token ? token.toString().trim() : null); }); + +module.exports = { safeQuit }; \ No newline at end of file diff --git a/package.json b/package.json index 052bd4b18..a6085ca0c 100644 --- a/package.json +++ b/package.json @@ -70,7 +70,8 @@ "devtron": "^1.4.0", "electron": "^1.7.9", "electron-builder": "^11.7.0", - "electron-debug": "^1.4.0" + "electron-debug": "^1.4.0", + "electron-devtools-installer": "^2.2.1" }, "license": "MIT" } diff --git a/ui/js/store.js b/ui/js/store.js index af1e68c3a..29d580b56 100644 --- a/ui/js/store.js +++ b/ui/js/store.js @@ -80,8 +80,9 @@ if (env === "development") { } // middleware.push(createActionBuffer(REHYDRATE)); // was causing issues with authentication reducers not firing - -const createStoreWithMiddleware = redux.compose( +const composeEnhancers = + window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || redux.compose; +const createStoreWithMiddleware = composeEnhancers( autoRehydrate(), redux.applyMiddleware(...middleware) )(redux.createStore);