feat(send): add load address balance in send container

This commit is contained in:
George Lima 2019-02-08 01:19:45 -03:00
parent 1277ac2d12
commit 1e90f0ad49
2 changed files with 36 additions and 7 deletions

View File

@ -16,17 +16,17 @@ import {
resetSendTransaction, resetSendTransaction,
validateAddressSuccess, validateAddressSuccess,
validateAddressError, validateAddressError,
loadAddressBalanceSuccess,
loadAddressBalanceError,
} from '../redux/modules/send'; } from '../redux/modules/send';
import { filterObjectNullKeys } from '../utils/filter-object-null-keys'; import { filterObjectNullKeys } from '../utils/filter-object-null-keys';
import { ascii2hex } from '../utils/ascii-to-hexadecimal';
import type { AppState } from '../types/app-state'; import type { AppState } from '../types/app-state';
import type { Dispatch } from '../types/redux'; import type { Dispatch } from '../types/redux';
import { import { loadAddressesSuccess, loadAddressesError } from '../redux/modules/receive';
loadAddressesSuccess,
loadAddressesError,
} from '../redux/modules/receive';
export type SendTransactionInput = { export type SendTransactionInput = {
from: string, from: string,
@ -36,8 +36,8 @@ export type SendTransactionInput = {
memo: string, memo: string,
}; };
const mapStateToProps = ({ walletSummary, sendStatus, receive }: AppState) => ({ const mapStateToProps = ({ sendStatus, receive }: AppState) => ({
balance: walletSummary.total, balance: sendStatus.addressBalance,
zecPrice: sendStatus.zecPrice, zecPrice: sendStatus.zecPrice,
addresses: receive.addresses, addresses: receive.addresses,
error: sendStatus.error, error: sendStatus.error,
@ -61,7 +61,7 @@ const mapDispatchToProps = (dispatch: Dispatch) => ({
filterObjectNullKeys({ filterObjectNullKeys({
address: to, address: to,
amount: new BigNumber(amount).toNumber(), amount: new BigNumber(amount).toNumber(),
memo, memo: ascii2hex(memo),
}), }),
], ],
1, 1,
@ -144,6 +144,13 @@ const mapDispatchToProps = (dispatch: Dispatch) => ({
value: Number(store.get('ZEC_DOLLAR_PRICE')), value: Number(store.get('ZEC_DOLLAR_PRICE')),
}), }),
), ),
getAddressBalance: async ({ address }: { address: string }) => {
const [err, balance] = await eres(rpc.z_getbalance(address));
if (err) return dispatch(loadAddressBalanceError({ error: "Can't load your balance address" }));
return dispatch(loadAddressBalanceSuccess({ balance }));
},
}); });
// $FlowFixMe // $FlowFixMe

View File

@ -8,6 +8,8 @@ export const RESET_SEND_TRANSACTION = 'RESET_SEND_TRANSACTION';
export const VALIDATE_ADDRESS_SUCCESS = 'VALIDATE_ADDRESS_SUCCESS'; export const VALIDATE_ADDRESS_SUCCESS = 'VALIDATE_ADDRESS_SUCCESS';
export const VALIDATE_ADDRESS_ERROR = 'VALIDATE_ADDRESS_SUCCESS'; export const VALIDATE_ADDRESS_ERROR = 'VALIDATE_ADDRESS_SUCCESS';
export const LOAD_ZEC_PRICE = 'LOAD_ZEC_PRICE'; export const LOAD_ZEC_PRICE = 'LOAD_ZEC_PRICE';
export const LOAD_ADDRESS_BALANCE_SUCCESS = 'LOAD_ADDRESS_BALANCE_SUCCESS';
export const LOAD_ADDRESS_BALANCE_ERROR = 'LOAD_ADDRESS_BALANCE_ERROR';
export const sendTransaction = () => ({ export const sendTransaction = () => ({
type: SEND_TRANSACTION, type: SEND_TRANSACTION,
@ -52,12 +54,27 @@ export const loadZECPrice = ({ value }: { value: number }) => ({
}, },
}); });
export const loadAddressBalanceSuccess = ({ balance }: { balance: number }) => ({
type: LOAD_ADDRESS_BALANCE_SUCCESS,
payload: {
balance,
},
});
export const loadAddressBalanceError = ({ error }: { error: string }) => ({
type: LOAD_ADDRESS_BALANCE_SUCCESS,
payload: {
error,
},
});
export type State = { export type State = {
isSending: boolean, isSending: boolean,
isToAddressValid: boolean, isToAddressValid: boolean,
error: string | null, error: string | null,
operationId: string | null, operationId: string | null,
zecPrice: number, zecPrice: number,
addressBalance: number,
}; };
const initialState: State = { const initialState: State = {
@ -66,6 +83,7 @@ const initialState: State = {
operationId: null, operationId: null,
isToAddressValid: false, isToAddressValid: false,
zecPrice: 0, zecPrice: 0,
addressBalance: 0,
}; };
// eslint-disable-next-line // eslint-disable-next-line
@ -104,6 +122,10 @@ export default (state: State = initialState, action: Action): State => {
}; };
case LOAD_ZEC_PRICE: case LOAD_ZEC_PRICE:
return { ...state, zecPrice: action.payload.value }; return { ...state, zecPrice: action.payload.value };
case LOAD_ADDRESS_BALANCE_SUCCESS:
return { ...state, addressBalance: action.payload.balance };
case LOAD_ADDRESS_BALANCE_ERROR:
return { ...state, error: action.payload.error };
case RESET_SEND_TRANSACTION: case RESET_SEND_TRANSACTION:
return initialState; return initialState;
default: default: