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.
 
 
 

53 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
}