diff options
author | Brandon Millman <brandon.millman@gmail.com> | 2018-11-22 02:22:43 +0800 |
---|---|---|
committer | Brandon Millman <brandon.millman@gmail.com> | 2018-11-27 06:48:07 +0800 |
commit | 685d83d6d0dc7998ce231e5106d74c0e16b17f34 (patch) | |
tree | 6988fa9813bd7b7ff142b230c401ad9d3d91882e /packages/instant/src/components/buy_button.tsx | |
parent | 825911ed89e63f065c1a843ad83fb28ed72bb8ee (diff) | |
download | dexon-sol-tools-685d83d6d0dc7998ce231e5106d74c0e16b17f34.tar dexon-sol-tools-685d83d6d0dc7998ce231e5106d74c0e16b17f34.tar.gz dexon-sol-tools-685d83d6d0dc7998ce231e5106d74c0e16b17f34.tar.bz2 dexon-sol-tools-685d83d6d0dc7998ce231e5106d74c0e16b17f34.tar.lz dexon-sol-tools-685d83d6d0dc7998ce231e5106d74c0e16b17f34.tar.xz dexon-sol-tools-685d83d6d0dc7998ce231e5106d74c0e16b17f34.tar.zst dexon-sol-tools-685d83d6d0dc7998ce231e5106d74c0e16b17f34.zip |
feat(instant): implement buy events without associated properties
Diffstat (limited to 'packages/instant/src/components/buy_button.tsx')
-rw-r--r-- | packages/instant/src/components/buy_button.tsx | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/packages/instant/src/components/buy_button.tsx b/packages/instant/src/components/buy_button.tsx index 8b6121e43..6db71852e 100644 --- a/packages/instant/src/components/buy_button.tsx +++ b/packages/instant/src/components/buy_button.tsx @@ -8,6 +8,7 @@ import { oc } from 'ts-optchain'; import { WEB_3_WRAPPER_TRANSACTION_FAILED_ERROR_MSG_PREFIX } from '../constants'; import { ColorOption } from '../style/theme'; import { AffiliateInfo, ZeroExInstantError } from '../types'; +import { analytics } from '../util/analytics'; import { gasPriceEstimator } from '../util/gas_price_estimator'; import { util } from '../util/util'; @@ -59,6 +60,7 @@ export class BuyButton extends React.Component<BuyButtonProps> { // if we don't have a balance for the user, let the transaction through, it will be handled by the wallet const hasSufficientEth = _.isUndefined(accountEthBalanceInWei) || accountEthBalanceInWei.gte(ethNeededForBuy); if (!hasSufficientEth) { + analytics.trackBuyNotEnoughEth(); this.props.onValidationFail(buyQuote, ZeroExInstantError.InsufficientETH); return; } @@ -66,17 +68,21 @@ export class BuyButton extends React.Component<BuyButtonProps> { const gasInfo = await gasPriceEstimator.getGasInfoAsync(); const feeRecipient = oc(affiliateInfo).feeRecipient(); try { + analytics.trackBuyStarted(); txHash = await assetBuyer.executeBuyQuoteAsync(buyQuote, { feeRecipient, takerAddress: accountAddress, gasPrice: gasInfo.gasPriceInWei, }); + analytics.trackBuyTxSubmitted(); } catch (e) { if (e instanceof Error) { if (e.message === AssetBuyerError.SignatureRequestDenied) { + analytics.trackBuySignatureDenied(); this.props.onSignatureDenied(buyQuote); return; } else if (e.message === AssetBuyerError.TransactionValueTooLow) { + analytics.trackBuySimulationFailed(); this.props.onValidationFail(buyQuote, AssetBuyerError.TransactionValueTooLow); return; } @@ -89,12 +95,14 @@ export class BuyButton extends React.Component<BuyButtonProps> { try { await web3Wrapper.awaitTransactionSuccessAsync(txHash); } catch (e) { + analytics.trackBuyTxFailed(); if (e instanceof Error && e.message.startsWith(WEB_3_WRAPPER_TRANSACTION_FAILED_ERROR_MSG_PREFIX)) { this.props.onBuyFailure(buyQuote, txHash); return; } throw e; } + analytics.trackBuyTxSucceeded(); this.props.onBuySuccess(buyQuote, txHash); }; } |