feat(instant): Add analytics events for payment dropdown
This commit is contained in:
		@@ -3,6 +3,7 @@ import copy from 'copy-to-clipboard';
 | 
			
		||||
import * as React from 'react';
 | 
			
		||||
 | 
			
		||||
import { Network } from '../types';
 | 
			
		||||
import { analytics } from '../util/analytics';
 | 
			
		||||
import { envUtil } from '../util/env';
 | 
			
		||||
import { etherscanUtil } from '../util/etherscan';
 | 
			
		||||
import { format } from '../util/format';
 | 
			
		||||
@@ -20,7 +21,14 @@ export class PaymentMethodDropdown extends React.Component<PaymentMethodDropdown
 | 
			
		||||
        const { accountAddress, accountEthBalanceInWei } = this.props;
 | 
			
		||||
        const value = format.ethAddress(accountAddress);
 | 
			
		||||
        const label = format.ethBaseUnitAmount(accountEthBalanceInWei, 4, '') as string;
 | 
			
		||||
        return <Dropdown value={value} label={label} items={this._getDropdownItemConfigs()} />;
 | 
			
		||||
        return (
 | 
			
		||||
            <Dropdown
 | 
			
		||||
                value={value}
 | 
			
		||||
                label={label}
 | 
			
		||||
                items={this._getDropdownItemConfigs()}
 | 
			
		||||
                onOpen={analytics.trackPaymentMethodDropdownOpened}
 | 
			
		||||
            />
 | 
			
		||||
        );
 | 
			
		||||
    }
 | 
			
		||||
    private readonly _getDropdownItemConfigs = (): DropdownItemConfig[] => {
 | 
			
		||||
        if (envUtil.isMobileOperatingSystem()) {
 | 
			
		||||
@@ -37,11 +45,15 @@ export class PaymentMethodDropdown extends React.Component<PaymentMethodDropdown
 | 
			
		||||
        return [viewOnEtherscan, copyAddressToClipboard];
 | 
			
		||||
    };
 | 
			
		||||
    private readonly _handleEtherscanClick = (): void => {
 | 
			
		||||
        analytics.trackPaymentMethodOpenedEtherscan();
 | 
			
		||||
 | 
			
		||||
        const { accountAddress, network } = this.props;
 | 
			
		||||
        const etherscanUrl = etherscanUtil.getEtherScanEthAddressIfExists(accountAddress, network);
 | 
			
		||||
        window.open(etherscanUrl, '_blank');
 | 
			
		||||
    };
 | 
			
		||||
    private readonly _handleCopyToClipboardClick = (): void => {
 | 
			
		||||
        analytics.trackPaymentMethodCopiedAddress();
 | 
			
		||||
 | 
			
		||||
        const { accountAddress } = this.props;
 | 
			
		||||
        copy(accountAddress);
 | 
			
		||||
    };
 | 
			
		||||
 
 | 
			
		||||
@@ -19,6 +19,7 @@ export interface DropdownProps {
 | 
			
		||||
    value: string;
 | 
			
		||||
    label?: string;
 | 
			
		||||
    items: DropdownItemConfig[];
 | 
			
		||||
    onOpen?: () => void;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export interface DropdownState {
 | 
			
		||||
@@ -97,9 +98,14 @@ export class Dropdown extends React.Component<DropdownProps, DropdownState> {
 | 
			
		||||
        if (_.isEmpty(this.props.items)) {
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
        const isOpen = !this.state.isOpen;
 | 
			
		||||
        this.setState({
 | 
			
		||||
            isOpen: !this.state.isOpen,
 | 
			
		||||
            isOpen,
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
        if (isOpen && this.props.onOpen) {
 | 
			
		||||
            this.props.onOpen();
 | 
			
		||||
        }
 | 
			
		||||
    };
 | 
			
		||||
    private readonly _closeDropdown = (): void => {
 | 
			
		||||
        this.setState({
 | 
			
		||||
 
 | 
			
		||||
@@ -20,6 +20,9 @@ enum EventNames {
 | 
			
		||||
    ACCOUNT_UNLOCK_REQUESTED = 'Account - Unlock Requested',
 | 
			
		||||
    ACCOUNT_UNLOCK_DENIED = 'Account - Unlock Denied',
 | 
			
		||||
    ACCOUNT_ADDRESS_CHANGED = 'Account - Address Changed',
 | 
			
		||||
    PAYMENT_METHOD_DROPDOWN_OPENED = 'Payment Method - Dropdown Opened',
 | 
			
		||||
    PAYMENT_METHOD_OPENED_ETHERSCAN = 'Payment Method - Opened Etherscan',
 | 
			
		||||
    PAYMENT_METHOD_COPIED_ADDRESS = 'Payment Method - Copied Address',
 | 
			
		||||
}
 | 
			
		||||
const track = (eventName: EventNames, eventProperties: EventProperties = {}): void => {
 | 
			
		||||
    evaluateIfEnabled(() => {
 | 
			
		||||
@@ -94,4 +97,7 @@ export const analytics = {
 | 
			
		||||
    trackAccountUnlockDenied: trackingEventFnWithoutPayload(EventNames.ACCOUNT_UNLOCK_DENIED),
 | 
			
		||||
    trackAccountAddressChanged: (address: string) =>
 | 
			
		||||
        trackingEventFnWithPayload(EventNames.ACCOUNT_ADDRESS_CHANGED)({ address }),
 | 
			
		||||
    trackPaymentMethodDropdownOpened: trackingEventFnWithoutPayload(EventNames.PAYMENT_METHOD_DROPDOWN_OPENED),
 | 
			
		||||
    trackPaymentMethodOpenedEtherscan: trackingEventFnWithoutPayload(EventNames.PAYMENT_METHOD_OPENED_ETHERSCAN),
 | 
			
		||||
    trackPaymentMethodCopiedAddress: trackingEventFnWithoutPayload(EventNames.PAYMENT_METHOD_COPIED_ADDRESS),
 | 
			
		||||
};
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user