import { trackEvent } from "@scandic-hotels/tracking/base" import type { PaymentEvent, PaymentFailEvent, } from "@scandic-hotels/tracking/types" function isPaymentFailEvent(event: PaymentEvent): event is PaymentFailEvent { return "errorMessage" in event } export function trackUpdatePaymentMethod({ method }: { method: string }) { trackEvent({ event: "paymentSelection", hotelInfo: { hotelId: "", // TODO: Needs to be verified with analytics if this should even be here }, cta: { name: method, }, }) } export function trackPaymentEvent(paymentEvent: PaymentEvent) { const paymentAttempt = { event: paymentEvent.event, hotelInfo: { hotelId: paymentEvent.hotelId, }, paymentInfo: { isSavedCard: paymentEvent.isSavedCreditCard, status: paymentEvent.status, type: paymentEvent.method, smsEnable: paymentEvent.smsEnable, errorMessage: isPaymentFailEvent(paymentEvent) ? paymentEvent.errorMessage : undefined, }, } trackEvent(paymentAttempt) } export function trackGlaSaveCardAttempt({ hotelId, hasSavedCreditCard, creditCardType, lateArrivalGuarantee, }: { hotelId: string hasSavedCreditCard: boolean creditCardType?: string lateArrivalGuarantee: "mandatory" | "yes" | "no" | "na" }) { trackEvent({ event: "glaCardSaveAttempt", hotelInfo: { hotelId, lateArrivalGuarantee, guaranteedProduct: "room", }, paymentInfo: { status: "glacardsaveattempt", isSavedCreditCard: hasSavedCreditCard, type: creditCardType, }, }) }