58 lines
2.5 KiB
TypeScript
58 lines
2.5 KiB
TypeScript
// Metro module 9828 (f9829).
|
|
import { useRef, useEffect } from "react";
|
|
import { AnalyticEvents } from "../../../../Constants";
|
|
import { useNativeGiftContext } from "../../../payments/native/NativeGiftContext";
|
|
import { PaymentFlowStep, getPaymentFlowStepAnalyticsFields } from "../PremiumAnalyticsUtils";
|
|
import { isIOS } from "../../../../utils/PlatformUtils";
|
|
import AnalyticsUtils from "../../../../utils/AnalyticsUtils";
|
|
import { intl, t } from "../../../../intl/index.native";
|
|
import { trackPaymentFlowStartedAnalyticsAndCTP } from "../../../experiments/trigger_points/PaymentFlowStartedTriggerPoint";
|
|
export default function PremiumGiftAnalytics({ currentStep, children }) {
|
|
const nativeGiftContext = useNativeGiftContext();
|
|
const { customGiftMessage, productId, basePurchaseAnalytics } = nativeGiftContext;
|
|
const ref = useRef(null);
|
|
const r22 = Date.now();
|
|
const ref2 = useRef(r22);
|
|
const ref3 = useRef(r22);
|
|
useEffect(() => {
|
|
if (currentStep !== ref.current) {
|
|
const current = Date.now();
|
|
if (ref.current != null) {
|
|
if (currentStep === PaymentFlowStep.CONFIRM && isIOS()) {
|
|
AnalyticsUtils.track(AnalyticEvents.PAYMENT_FLOW_SUCCEEDED, {
|
|
...getPaymentFlowStepAnalyticsFields(basePurchaseAnalytics, {
|
|
subscription_plan_gateway_plan_id: productId
|
|
}),
|
|
is_custom_message_edited: customGiftMessage !== intl.string(t.ZkOo1U),
|
|
is_custom_emoji_sound_available: false
|
|
});
|
|
}
|
|
AnalyticsUtils.track(AnalyticEvents.PAYMENT_FLOW_STEP, {
|
|
...getPaymentFlowStepAnalyticsFields(basePurchaseAnalytics, {
|
|
from_step: ref.current,
|
|
to_step: currentStep,
|
|
step_duration_ms: current - ref3.current,
|
|
flow_duration_ms: current - ref2.current,
|
|
subscription_plan_gateway_plan_id: productId
|
|
})
|
|
});
|
|
} else {
|
|
trackPaymentFlowStartedAnalyticsAndCTP(basePurchaseAnalytics);
|
|
AnalyticsUtils.track(AnalyticEvents.PAYMENT_FLOW_LOADED, {
|
|
...getPaymentFlowStepAnalyticsFields(basePurchaseAnalytics, {
|
|
initial_step: currentStep
|
|
})
|
|
});
|
|
}
|
|
ref.current = currentStep;
|
|
ref3.current = current;
|
|
}
|
|
}, [basePurchaseAnalytics, currentStep, ref, customGiftMessage, productId]);
|
|
useEffect(() => () => {
|
|
if (ref.current !== PaymentFlowStep.CONFIRM) {
|
|
AnalyticsUtils.track(AnalyticEvents.PAYMENT_FLOW_CANCELED, basePurchaseAnalytics);
|
|
}
|
|
}, [basePurchaseAnalytics, ref]);
|
|
return children;
|
|
};
|