You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

54 lines
1.4 KiB

import { ipcRenderer } from 'electron'
// ------------------------------------
// Constants
// ------------------------------------
export const GET_BALANCE = 'GET_BALANCE'
export const RECEIVE_BALANCE = 'RECEIVE_BALANCE'
// ------------------------------------
// Actions
// ------------------------------------
export function getBalance() {
return {
type: GET_BALANCE
}
}
// Send IPC event for balance
export const fetchBalance = () => async dispatch => {
dispatch(getBalance())
ipcRenderer.send('lnd', { msg: 'balance' })
}
// Receive IPC event for balance
export const receiveBalance = (event, { walletBalance, channelBalance }) => dispatch => {
dispatch({ type: RECEIVE_BALANCE, walletBalance, channelBalance })
}
// ------------------------------------
// Action Handlers
// ------------------------------------
const ACTION_HANDLERS = {
[GET_BALANCE]: state => ({ ...state, balanceLoading: true }),
[RECEIVE_BALANCE]: (state, { walletBalance, channelBalance }) => ({
...state,
balanceLoading: false,
walletBalance,
channelBalance
})
}
// ------------------------------------
// Reducer
// ------------------------------------
const initialState = {
balanceLoading: false,
walletBalance: null,
channelBalance: null
}
export default function balanceReducer(state = initialState, action) {
const handler = ACTION_HANDLERS[action.type]
return handler ? handler(state, action) : state
}