Skip to content

Commit

Permalink
feat(recurring buy): add analytics events
Browse files Browse the repository at this point in the history
  • Loading branch information
blockdylanb committed Aug 31, 2021
1 parent d319afb commit 1d4bdbe
Show file tree
Hide file tree
Showing 4 changed files with 76 additions and 15 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -19,21 +19,22 @@ export type RecurringBuyState = {
}

export enum RecurringBuyStepType {
'INIT_PAGE',
'GET_STARTED',
'FREQUENCY',
'CHECKOUT_CONFIRM',
'SUMMARY',
'FAILURE',
'DETAILS',
'REMOVE_CONFIRM'
CHECKOUT_CONFIRM = 'CHECKOUT_CONFIRM',
DETAILS = 'DETAILS',
FAILURE = 'FAILURE',
FREQUENCY = 'FREQUENCY',
GET_STARTED = 'GET_STARTED',
INIT_PAGE = 'INIT_PAGE',
REMOVE_CONFIRM = 'REMOVE_CONFIRM',
SUMMARY = 'SUMMARY'
}

export enum RecurringBuyOrigins {
COIN_PAGE,
DETAILS_SCREEN,
SIMPLE_BUY_ORDER_SUMMARY,
RECURRING_BUYS_BANNER
BUY_CONFIRMATION = 'BUY_CONFIRMATION',
COIN_PAGE = 'COIN_PAGE',
DETAILS_SCREEN = 'DETAILS_SCREEN',
RECURRING_BUYS_BANNER = 'RECURRING_BUYS_BANNER',
SIMPLE_BUY_ORDER_SUMMARY = 'SIMPLE_BUY_ORDER_SUMMARY'
}

export type RecurringBuyStepPayload = {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ import {
FeeRate,
Order,
PageName,
RecurringBuyCancelPayload,
RecurringBuyClickedPayload,
RecurringBuyDetailsClickedPayload,
SendReceive,
WithdrawalMethod
Expand Down Expand Up @@ -1643,9 +1645,48 @@ const analyticsMiddleware = () => (store) => (next) => (action) => {
const tier = state.profile.userData.getOrElse({})?.tiers?.current ?? null
const { inputCurrency: currency }: { inputCurrency: string } =
state.components.recurringBuy.active
const stepName = action.payload.step
const stepName: RecurringBuyStepType = action.payload.step
const origin = RecurringBuyOrigins[action.payload.origin]
switch (stepName) {
case RecurringBuyStepType.REMOVE_CONFIRM: {
const {
destinationCurrency: output_currency,
inputCurrency: input_currency,
inputValue: input_amount,
paymentMethod: payment_method,
period: frequency
} = state.components.recurringBuy.active

analytics.push(AnalyticsKey.CANCEL_RECURRING_BUY_CLICKED, {
properties: {
frequency,
input_amount,
input_currency,
origin,
output_currency,
payment_method
} as RecurringBuyCancelPayload,
traits: {
email,
nabuId,
tier
}
})
break
}
case RecurringBuyStepType.GET_STARTED: {
analytics.push(AnalyticsKey.RECURRING_BUY_CLICKED, {
properties: {
origin
} as RecurringBuyClickedPayload,
traits: {
email,
nabuId,
tier
}
})
break
}
case RecurringBuyStepType.DETAILS: {
analytics.push(AnalyticsKey.RECURRING_BUY_DETAILS_CLICKED, {
properties: {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { RecurringBuyOrigins } from 'data/types'
import { SBPaymentMethodType, SBPaymentTypes } from 'core/types'
import { RecurringBuyOrigins, RecurringBuyPeriods } from 'data/types'

enum AnalyticsKey {
ADDRESS_VERIFY_MESSAGE_CLICKED = 'Address Verify Message Clicked',
Expand Down Expand Up @@ -358,6 +359,19 @@ type ReceiveDetailsCopiedPayload = BasePayload & {
currency: string
}

export type RecurringBuyCancelPayload = BasePayload & {
frequency: RecurringBuyPeriods
input_amount: number
input_currency: string
origin: keyof typeof RecurringBuyOrigins
output_currency: string
payment_method: SBPaymentTypes
}

export type RecurringBuyClickedPayload = BasePayload & {
origin: keyof typeof RecurringBuyOrigins
}

export type RecurringBuyDetailsClickedPayload = BasePayload & {
currency: string
origin: keyof typeof RecurringBuyOrigins
Expand Down Expand Up @@ -612,6 +626,8 @@ type AnalyticsProperties =
| PrivateKeysShownPayload
| ReceiveCurrencySelectedPayload
| ReceiveDetailsCopiedPayload
| RecurringBuyCancelPayload
| RecurringBuyClickedPayload
| RecurringBuyDetailsClickedPayload
| SellAmountEnteredPayload
| SellAmountMaxClickedPayload
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,10 @@ class OrderSummary extends PureComponent<Props> {
this.props.recurringBuyActions.showModal({
origin: RecurringBuyOrigins.SIMPLE_BUY_ORDER_SUMMARY
})
this.props.recurringBuyActions.setStep({ step: RecurringBuyStepType.GET_STARTED })
this.props.recurringBuyActions.setStep({
origin: RecurringBuyOrigins.BUY_CONFIRMATION, // needed for analytics tracking
step: RecurringBuyStepType.GET_STARTED
})
} else {
this.props.handleClose()
}
Expand Down

0 comments on commit 1d4bdbe

Please sign in to comment.