feat(send): add load address balance in send container
This commit is contained in:
parent
1277ac2d12
commit
1e90f0ad49
|
@ -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
|
||||||
|
|
|
@ -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:
|
||||||
|
|
Loading…
Reference in New Issue