import * as types from "constants/action_types"; import lbry from "lbry"; import { selectDraftTransaction, selectDraftTransactionAmount, selectBalance, } from "selectors/wallet"; import { doOpenModal } from "actions/app"; export function doUpdateBalance(balance) { return { type: types.UPDATE_BALANCE, data: { balance: balance, }, }; } export function doFetchTransactions() { return function(dispatch, getState) { dispatch({ type: types.FETCH_TRANSACTIONS_STARTED, }); lbry.call("transaction_list", {}, results => { dispatch({ type: types.FETCH_TRANSACTIONS_COMPLETED, data: { transactions: results, }, }); }); }; } export function doGetNewAddress() { return function(dispatch, getState) { dispatch({ type: types.GET_NEW_ADDRESS_STARTED, }); lbry.wallet_new_address().then(function(address) { localStorage.setItem("wallet_address", address); dispatch({ type: types.GET_NEW_ADDRESS_COMPLETED, data: { address }, }); }); }; } export function doCheckAddressIsMine(address) { return function(dispatch, getState) { dispatch({ type: types.CHECK_ADDRESS_IS_MINE_STARTED, }); lbry.checkAddressIsMine(address, isMine => { if (!isMine) dispatch(doGetNewAddress()); dispatch({ type: types.CHECK_ADDRESS_IS_MINE_COMPLETED, }); }); }; } export function doSendDraftTransaction() { return function(dispatch, getState) { const state = getState(); const draftTx = selectDraftTransaction(state); const balance = selectBalance(state); const amount = selectDraftTransactionAmount(state); if (balance - amount < 1) { return dispatch(doOpenModal("insufficientBalance")); } dispatch({ type: types.SEND_TRANSACTION_STARTED, }); const successCallback = results => { if (results === true) { dispatch({ type: types.SEND_TRANSACTION_COMPLETED, }); dispatch(doOpenModal("transactionSuccessful")); } else { dispatch({ type: types.SEND_TRANSACTION_FAILED, data: { error: results }, }); dispatch(doOpenModal("transactionFailed")); } }; const errorCallback = error => { dispatch({ type: types.SEND_TRANSACTION_FAILED, data: { error: error.message }, }); dispatch(doOpenModal("transactionFailed")); }; lbry.sendToAddress( draftTx.amount, draftTx.address, successCallback, errorCallback ); }; } export function doSetDraftTransactionAmount(amount) { return { type: types.SET_DRAFT_TRANSACTION_AMOUNT, data: { amount }, }; } export function doSetDraftTransactionAddress(address) { return { type: types.SET_DRAFT_TRANSACTION_ADDRESS, data: { address }, }; }