Files
discord-decomp/modules/premium/native/gifting/PremiumGiftAnalytics.tsx
T
2026-11-01 12:12:55 +02:00

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;
};