aboutsummaryrefslogtreecommitdiffstats
path: root/packages/instant/src/util/balance.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/instant/src/util/balance.ts')
-rw-r--r--packages/instant/src/util/balance.ts30
1 files changed, 30 insertions, 0 deletions
diff --git a/packages/instant/src/util/balance.ts b/packages/instant/src/util/balance.ts
new file mode 100644
index 000000000..d442da9e0
--- /dev/null
+++ b/packages/instant/src/util/balance.ts
@@ -0,0 +1,30 @@
+import { BuyQuote } from '@0x/asset-buyer';
+import { Web3Wrapper } from '@0x/web3-wrapper';
+import { Dispatch } from 'redux';
+
+import { ZeroExInstantError } from '../types';
+
+import { errorUtil } from './error';
+
+export const balanceUtil = {
+ /**
+ * Checks to see if user has enough balance to buy assets
+ * If they do not, flash an error and return false
+ * If they do, return true
+ */
+ checkSufficientBalanceAndFlashError: async (
+ takerAddress: string,
+ buyQuote: BuyQuote,
+ web3Wrapper: Web3Wrapper,
+ dispatch: Dispatch,
+ ) => {
+ const balanceWei = await web3Wrapper.getBalanceInWeiAsync(takerAddress);
+
+ if (balanceWei < buyQuote.worstCaseQuoteInfo.totalEthAmount) {
+ const balanceError = new Error(ZeroExInstantError.InsufficientBalance);
+ errorUtil.errorFlasher.flashNewError(dispatch, balanceError);
+ return false;
+ }
+ return true;
+ },
+};