From 3cb8d3b52233b78c443d33c191f89bf44e1e0109 Mon Sep 17 00:00:00 2001 From: Jack Mallers Date: Thu, 17 Aug 2017 23:54:53 -0500 Subject: [PATCH] feature(lnd-ipc): add redux-electron-ipc for easier send/receive IPC calls w/ redux --- app/main.dev.js | 2 +- app/reducers/info.js | 9 +++++---- app/reducers/ipc.js | 9 +++++++++ app/store/configureStore.dev.js | 15 ++++++++------- package.json | 1 + yarn.lock | 4 ++++ 6 files changed, 28 insertions(+), 12 deletions(-) create mode 100644 app/reducers/ipc.js diff --git a/app/main.dev.js b/app/main.dev.js index b78b0c3f..de3ef5fd 100644 --- a/app/main.dev.js +++ b/app/main.dev.js @@ -96,7 +96,7 @@ ipcMain.on('lnd', (event, { msg, data }) => { switch(msg) { case 'info': lnd.info() - .then(data => event.sender.send('info', data)) + .then(info => event.sender.send('receivedInfo', info)) .catch(error => console.log('info error: ', error)) break default: diff --git a/app/reducers/info.js b/app/reducers/info.js index 075e9d8d..6b661214 100644 --- a/app/reducers/info.js +++ b/app/reducers/info.js @@ -15,6 +15,7 @@ export function getInfo() { } } + export function receiveInfo(data) { return { type: RECEIVE_INFO, @@ -22,15 +23,15 @@ export function receiveInfo(data) { } } +// Send IPC event for getifno export const fetchInfo = () => async (dispatch) => { dispatch(getInfo()) ipcRenderer.send('lnd', { msg: 'info' }) - ipcRenderer.on('info', (event, info) => { - dispatch(receiveInfo(info)) - }) - // const info = await callApi('info') } +// Receive IPC event for info +export const receivedInfo = (event, data) => dispatch => dispatch({ type: RECEIVE_INFO, data }) + // ------------------------------------ // Action Handlers // ------------------------------------ diff --git a/app/reducers/ipc.js b/app/reducers/ipc.js new file mode 100644 index 00000000..f52e3856 --- /dev/null +++ b/app/reducers/ipc.js @@ -0,0 +1,9 @@ +import createIpc from 'redux-electron-ipc' +import { receivedInfo } from './info' + +// Import all receiving IPC event handlers and pass them into createIpc +const ipc = createIpc({ + 'receivedInfo': receivedInfo +}) + +export default ipc \ No newline at end of file diff --git a/app/store/configureStore.dev.js b/app/store/configureStore.dev.js index d5861fb7..b3b41237 100644 --- a/app/store/configureStore.dev.js +++ b/app/store/configureStore.dev.js @@ -1,9 +1,10 @@ -import { createStore, applyMiddleware, compose } from 'redux'; -import thunk from 'redux-thunk'; -import { createHashHistory } from 'history'; -import { routerMiddleware, routerActions } from 'react-router-redux'; -import { createLogger } from 'redux-logger'; -import rootReducer from '../reducers'; +import { createStore, applyMiddleware, compose } from 'redux' +import thunk from 'redux-thunk' +import { createHashHistory } from 'history' +import { routerMiddleware, routerActions } from 'react-router-redux' +import { createLogger } from 'redux-logger' +import rootReducer from '../reducers' +import ipc from '../reducers/ipc' const history = createHashHistory(); @@ -41,7 +42,7 @@ const configureStore = (initialState?: counterStateType) => { /* eslint-enable no-underscore-dangle */ // Apply Middleware & Compose Enhancers - enhancers.push(applyMiddleware(...middleware)); + enhancers.push(applyMiddleware(...middleware, ipc)); const enhancer = composeEnhancers(...enhancers); // Create Store diff --git a/package.json b/package.json index 6c0a05c8..1cfa0120 100644 --- a/package.json +++ b/package.json @@ -206,6 +206,7 @@ "react-svg-morph": "^0.1.10", "react-websocket": "^1.1.7", "redux": "^3.7.1", + "redux-electron-ipc": "^1.1.10", "redux-thunk": "^2.2.0", "reselect": "^3.0.1", "satoshi-bitcoin": "^1.0.4", diff --git a/yarn.lock b/yarn.lock index 5368e9ec..1ee04b9c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7289,6 +7289,10 @@ reduce-function-call@^1.0.1: dependencies: balanced-match "^0.4.2" +redux-electron-ipc@^1.1.10: + version "1.1.10" + resolved "https://registry.yarnpkg.com/redux-electron-ipc/-/redux-electron-ipc-1.1.10.tgz#0e4de0ae30eb8571209f24e75149007e965e65d1" + redux-logger@^3.0.6: version "3.0.6" resolved "https://registry.yarnpkg.com/redux-logger/-/redux-logger-3.0.6.tgz#f7555966f3098f3c88604c449cf0baf5778274bf"