NTP-8966 | Anmol Agrawal | PMS OE changes (#13677)

This commit is contained in:
Anmol Agrawal
2024-11-20 17:11:43 +05:30
committed by GitHub
parent fbf56a2f76
commit ef0897dc5b
24 changed files with 423 additions and 158 deletions

View File

@@ -56,7 +56,7 @@ sealed class MetricInfo<T>(
override val isNae: (RepoResult<T>) -> Boolean = {
it.error != null || !it.errors.isNullOrEmpty()
},
) : MetricInfo<RepoResult<T>>(screen = screen, vertical = ModuleNameV2.PMS.name, isNae = isNae)
) : MetricInfo<RepoResult<T>>(screen = screen, vertical = ModuleNameV2.PG.name, isNae = isNae)
data class InsuranceMetricInfo<T>(
override val screen: String,

View File

@@ -42,7 +42,7 @@ fun getEventNameWithVerticalPrefix(eventName: String, vertical: String): String
return when (vertical) {
ModuleNameV2.NAVIPAY.name -> "NaviPay_$eventName"
ModuleNameV2.BBPS.name -> "NaviBBPS_$eventName"
ModuleNameV2.PG.name -> "navi_pmt_$eventName"
ModuleNameV2.PG.name -> "NaviPMT_$eventName"
ModuleNameV2.AMC.name -> "amc_$eventName"
ModuleNameV2.COIN.name -> "navi_coin_$eventName"
ModuleNameV2.Insurance.name -> "gi_$eventName"

View File

@@ -26,7 +26,6 @@ enum class ModuleNameV2 {
App, // For App module
BBPS,
GOLD,
PMS,
ALCHEMIST,
CRM
}

View File

@@ -23,7 +23,7 @@ class NaviPaymentAnalytics private constructor() {
fun onSubmitFeedback(selectedFeedbackOptions: Set<String>, feedBackComment: String) {
NaviTrackEvent.trackEventOnClickStream(
eventName = "${NAVI_PMT}_feedback_submit",
eventName = "${NAVI_PMT}_FeedbackSubmit",
eventValues =
mapOf(
"selected_feedback_options" to selectedFeedbackOptions.toString(),
@@ -48,14 +48,14 @@ class NaviPaymentAnalytics private constructor() {
putAll(baseAttributes)
}
NaviTrackEvent.trackEventOnClickStream(
eventName = "${NAVI_PMT}_${screenName}_validate_vpa_result",
eventName = "${NAVI_PMT}_${screenName}_ValidateVpaResult",
eventValues = eventAttributes
)
}
fun onBackPress(screenName: String) {
NaviTrackEvent.trackEventOnClickStream(
eventName = "${NAVI_PMT}_${screenName}_back_pressed",
eventName = "${NAVI_PMT}_${screenName}_BackPressed",
)
}
@@ -69,7 +69,7 @@ class NaviPaymentAnalytics private constructor() {
put("vpa", vpa)
}
NaviTrackEvent.trackEventOnClickStream(
eventName = "${NAVI_PMT}_${screenName}_vpa_handle_suggestion_clicked",
eventName = "${NAVI_PMT}_${screenName}_VpaHandleSuggestionClicked",
eventValues = eventAttributes
)
}
@@ -85,7 +85,7 @@ class NaviPaymentAnalytics private constructor() {
)
NaviTrackEvent.trackEventOnClickStream(
eventName =
"${NAVI_PMT}_${NaviPaymentAnalyticScreenName.FULL_PAYMENT_SCREEN.screenName}_landed",
"${NAVI_PMT}_${NaviPaymentAnalyticScreenName.FULL_PAYMENT_SCREEN.screenName}_Landed",
eventValues = updatedAttributes
)
}
@@ -106,7 +106,7 @@ class NaviPaymentAnalytics private constructor() {
}
NaviTrackEvent.trackEventOnClickStream(
eventName =
"${NAVI_PMT}_${NaviPaymentAnalyticScreenName.FULL_PAYMENT_SCREEN.screenName}_naviupi_info_message_shown",
"${NAVI_PMT}_${NaviPaymentAnalyticScreenName.FULL_PAYMENT_SCREEN.screenName}_NaviUpiInfoMessageShown",
eventValues = eventAttributes
)
}
@@ -123,7 +123,7 @@ class NaviPaymentAnalytics private constructor() {
}
NaviTrackEvent.trackEventOnClickStream(
eventName =
"${NAVI_PMT}_${NaviPaymentAnalyticScreenName.FULL_PAYMENT_SCREEN.screenName}_naviupi_bank_account_clicked",
"${NAVI_PMT}_${NaviPaymentAnalyticScreenName.FULL_PAYMENT_SCREEN.screenName}_NaviUpiBankAccountClicked",
eventValues = eventAttributes
)
}
@@ -131,7 +131,7 @@ class NaviPaymentAnalytics private constructor() {
fun onNaviUpiBankAddAccountClicked(baseAttributes: Map<String, String>) {
NaviTrackEvent.trackEventOnClickStream(
eventName =
"${NAVI_PMT}_${NaviPaymentAnalyticScreenName.FULL_PAYMENT_SCREEN.screenName}_naviupi_add_account_clicked",
"${NAVI_PMT}_${NaviPaymentAnalyticScreenName.FULL_PAYMENT_SCREEN.screenName}_NaviUpiAddAccountClicked",
eventValues = baseAttributes
)
}
@@ -143,7 +143,7 @@ class NaviPaymentAnalytics private constructor() {
}
NaviTrackEvent.trackEventOnClickStream(
eventName =
"${NAVI_PMT}_${NaviPaymentAnalyticScreenName.FULL_PAYMENT_SCREEN.screenName}_redirection_to_naviupi",
"${NAVI_PMT}_${NaviPaymentAnalyticScreenName.FULL_PAYMENT_SCREEN.screenName}_RedirectionToNaviUpi",
eventValues = eventAttributes
)
}
@@ -155,7 +155,7 @@ class NaviPaymentAnalytics private constructor() {
}
NaviTrackEvent.trackEventOnClickStream(
eventName =
"${NAVI_PMT}_${NaviPaymentAnalyticScreenName.FULL_PAYMENT_SCREEN.screenName}_redirection_from_naviupi",
"${NAVI_PMT}_${NaviPaymentAnalyticScreenName.FULL_PAYMENT_SCREEN.screenName}_RedirectionFromNaviUpi",
eventValues = eventAttributes
)
}
@@ -170,7 +170,7 @@ class NaviPaymentAnalytics private constructor() {
}
NaviTrackEvent.trackEventOnClickStream(
eventName =
"${NAVI_PMT}_${NaviPaymentAnalyticScreenName.FULL_PAYMENT_SCREEN.screenName}_upi_intent_app_selected",
"${NAVI_PMT}_${NaviPaymentAnalyticScreenName.FULL_PAYMENT_SCREEN.screenName}_UpiIntentAppSelected",
eventValues = eventAttributes
)
}
@@ -178,7 +178,7 @@ class NaviPaymentAnalytics private constructor() {
fun onUpiCollectSelected(baseAttributes: Map<String, String>) {
NaviTrackEvent.trackEventOnClickStream(
eventName =
"${NAVI_PMT}_${NaviPaymentAnalyticScreenName.FULL_PAYMENT_SCREEN.screenName}_upi_collect_selected",
"${NAVI_PMT}_${NaviPaymentAnalyticScreenName.FULL_PAYMENT_SCREEN.screenName}_UpiCollectSelected",
eventValues = baseAttributes
)
}
@@ -190,7 +190,7 @@ class NaviPaymentAnalytics private constructor() {
}
NaviTrackEvent.trackEventOnClickStream(
eventName =
"${NAVI_PMT}_${NaviPaymentAnalyticScreenName.FULL_PAYMENT_SCREEN.screenName}_upi_app_launched",
"${NAVI_PMT}_${NaviPaymentAnalyticScreenName.FULL_PAYMENT_SCREEN.screenName}_UpiAppLaunched",
eventValues = eventAttributes
)
}
@@ -202,7 +202,7 @@ class NaviPaymentAnalytics private constructor() {
}
NaviTrackEvent.trackEventOnClickStream(
eventName =
"${NAVI_PMT}_${NaviPaymentAnalyticScreenName.FULL_PAYMENT_SCREEN.screenName}_upi_app_result_received",
"${NAVI_PMT}_${NaviPaymentAnalyticScreenName.FULL_PAYMENT_SCREEN.screenName}_UpiAppResultReceived",
eventValues = eventAttributes
)
}
@@ -210,7 +210,7 @@ class NaviPaymentAnalytics private constructor() {
fun onUpiIntentWidgetClicked(baseAttributes: Map<String, String>) {
NaviTrackEvent.trackEventOnClickStream(
eventName =
"${NAVI_PMT}_${NaviPaymentAnalyticScreenName.FULL_PAYMENT_SCREEN.screenName}_upi_intent_card_clicked",
"${NAVI_PMT}_${NaviPaymentAnalyticScreenName.FULL_PAYMENT_SCREEN.screenName}_UpiIntentWidgetClicked",
eventValues = baseAttributes
)
}
@@ -222,7 +222,7 @@ class NaviPaymentAnalytics private constructor() {
}
NaviTrackEvent.trackEventOnClickStream(
eventName =
"${NAVI_PMT}_${NaviPaymentAnalyticScreenName.FULL_PAYMENT_SCREEN.screenName}_card_widget_clicked",
"${NAVI_PMT}_${NaviPaymentAnalyticScreenName.FULL_PAYMENT_SCREEN.screenName}_CardWidgetClicked",
eventValues = eventAttributes
)
}
@@ -230,7 +230,7 @@ class NaviPaymentAnalytics private constructor() {
fun onNetBankingWidgetClicked(baseAttributes: Map<String, String>) {
NaviTrackEvent.trackEventOnClickStream(
eventName =
"${NAVI_PMT}_${NaviPaymentAnalyticScreenName.FULL_PAYMENT_SCREEN.screenName}_net_banking_widget_clicked",
"${NAVI_PMT}_${NaviPaymentAnalyticScreenName.FULL_PAYMENT_SCREEN.screenName}_NetBankingWidgetClicked",
eventValues = baseAttributes
)
}
@@ -253,7 +253,7 @@ class NaviPaymentAnalytics private constructor() {
}
NaviTrackEvent.trackEventOnClickStream(
eventName =
"${NAVI_PMT}_${NaviPaymentAnalyticScreenName.FULL_PAYMENT_SCREEN.screenName}_pay_now_clicked",
"${NAVI_PMT}_${NaviPaymentAnalyticScreenName.FULL_PAYMENT_SCREEN.screenName}_PayNowClicked",
eventValues = eventAttributes
)
}
@@ -270,7 +270,7 @@ class NaviPaymentAnalytics private constructor() {
}
NaviTrackEvent.trackEventOnClickStream(
eventName =
"${NAVI_PMT}_${NaviPaymentAnalyticScreenName.FULL_PAYMENT_SCREEN.screenName}_discount_applied",
"${NAVI_PMT}_${NaviPaymentAnalyticScreenName.FULL_PAYMENT_SCREEN.screenName}_DiscountApplied",
eventValues = eventAttributes
)
}
@@ -278,7 +278,7 @@ class NaviPaymentAnalytics private constructor() {
fun onFomoBottomSheetShown(baseAttributes: Map<String, String>) {
NaviTrackEvent.trackEventOnClickStream(
eventName =
"${NAVI_PMT}_${NaviPaymentAnalyticScreenName.FULL_PAYMENT_SCREEN.screenName}_fomo_bottom_sheet_shown",
"${NAVI_PMT}_${NaviPaymentAnalyticScreenName.FULL_PAYMENT_SCREEN.screenName}_FomoBottomSheetShown",
eventValues = baseAttributes
)
}
@@ -286,7 +286,7 @@ class NaviPaymentAnalytics private constructor() {
fun onFomoBottomSheetDismissed(baseAttributes: Map<String, String>) {
NaviTrackEvent.trackEventOnClickStream(
eventName =
"${NAVI_PMT}_${NaviPaymentAnalyticScreenName.FULL_PAYMENT_SCREEN.screenName}_fomo_bottom_sheet_dismissed",
"${NAVI_PMT}_${NaviPaymentAnalyticScreenName.FULL_PAYMENT_SCREEN.screenName}_FomoBottomSheetDismissed",
eventValues = baseAttributes
)
}
@@ -298,7 +298,7 @@ class NaviPaymentAnalytics private constructor() {
}
NaviTrackEvent.trackEventOnClickStream(
eventName =
"${NAVI_PMT}_${NaviPaymentAnalyticScreenName.FULL_PAYMENT_SCREEN.screenName}_fomo_bottom_sheet_cta_clicked",
"${NAVI_PMT}_${NaviPaymentAnalyticScreenName.FULL_PAYMENT_SCREEN.screenName}_FomoBottomSheetCtaClicked",
eventValues = eventAttributes
)
}
@@ -314,7 +314,7 @@ class NaviPaymentAnalytics private constructor() {
)
NaviTrackEvent.trackEventOnClickStream(
eventName =
"${NAVI_PMT}_${NaviPaymentAnalyticScreenName.UPI_INTENT_SCREEN.screenName}_landed",
"${NAVI_PMT}_${NaviPaymentAnalyticScreenName.UPI_INTENT_SCREEN.screenName}_Landed",
eventValues = updatedAttributes
)
}
@@ -326,7 +326,7 @@ class NaviPaymentAnalytics private constructor() {
}
NaviTrackEvent.trackEventOnClickStream(
eventName =
"${NAVI_PMT}_${NaviPaymentAnalyticScreenName.UPI_INTENT_SCREEN.screenName}_upi_app_selected",
"${NAVI_PMT}_${NaviPaymentAnalyticScreenName.UPI_INTENT_SCREEN.screenName}_UpiAppSelected",
eventValues = eventAttributes
)
}
@@ -334,7 +334,7 @@ class NaviPaymentAnalytics private constructor() {
fun onUpiCollectSelected(baseAttributes: Map<String, String>) {
NaviTrackEvent.trackEventOnClickStream(
eventName =
"${NAVI_PMT}_${NaviPaymentAnalyticScreenName.UPI_INTENT_SCREEN.screenName}_collect_selected",
"${NAVI_PMT}_${NaviPaymentAnalyticScreenName.UPI_INTENT_SCREEN.screenName}_CollectSelected",
eventValues = baseAttributes
)
}
@@ -346,7 +346,7 @@ class NaviPaymentAnalytics private constructor() {
}
NaviTrackEvent.trackEventOnClickStream(
eventName =
"${NAVI_PMT}_${NaviPaymentAnalyticScreenName.UPI_INTENT_SCREEN.screenName}_upi_app_launched",
"${NAVI_PMT}_${NaviPaymentAnalyticScreenName.UPI_INTENT_SCREEN.screenName}_UpiAppLaunched",
eventValues = eventAttributes
)
}
@@ -358,7 +358,7 @@ class NaviPaymentAnalytics private constructor() {
}
NaviTrackEvent.trackEventOnClickStream(
eventName =
"${NAVI_PMT}_${NaviPaymentAnalyticScreenName.UPI_INTENT_SCREEN.screenName}_upi_app_result_received",
"${NAVI_PMT}_${NaviPaymentAnalyticScreenName.UPI_INTENT_SCREEN.screenName}_UpiAppResultReceived",
eventValues = eventAttributes
)
}
@@ -377,7 +377,7 @@ class NaviPaymentAnalytics private constructor() {
}
NaviTrackEvent.trackEventOnClickStream(
eventName =
"${NAVI_PMT}_${NaviPaymentAnalyticScreenName.UPI_INTENT_SCREEN.screenName}_pay_now_clicked",
"${NAVI_PMT}_${NaviPaymentAnalyticScreenName.UPI_INTENT_SCREEN.screenName}_PayNowClicked",
eventValues = eventAttributes
)
}
@@ -388,7 +388,7 @@ class NaviPaymentAnalytics private constructor() {
fun onBackPressed(baseAttributes: Map<String, String>) {
NaviTrackEvent.trackEventOnClickStream(
eventName =
"${NAVI_PMT}_${NaviPaymentAnalyticScreenName.NET_BANKING_SCREEN.screenName}_back_pressed",
"${NAVI_PMT}_${NaviPaymentAnalyticScreenName.NET_BANKING_SCREEN.screenName}_BackPressed",
eventValues = baseAttributes
)
}
@@ -401,7 +401,7 @@ class NaviPaymentAnalytics private constructor() {
)
NaviTrackEvent.trackEventOnClickStream(
eventName =
"${NAVI_PMT}_${NaviPaymentAnalyticScreenName.NET_BANKING_SCREEN.screenName}_landed",
"${NAVI_PMT}_${NaviPaymentAnalyticScreenName.NET_BANKING_SCREEN.screenName}_Landed",
eventValues = updatedAttributes
)
}
@@ -420,7 +420,7 @@ class NaviPaymentAnalytics private constructor() {
}
NaviTrackEvent.trackEventOnClickStream(
eventName =
"${NAVI_PMT}_${NaviPaymentAnalyticScreenName.NET_BANKING_SCREEN.screenName}_bank_selected",
"${NAVI_PMT}_${NaviPaymentAnalyticScreenName.NET_BANKING_SCREEN.screenName}_BankSelected",
eventValues = eventAttributes
)
}
@@ -432,7 +432,7 @@ class NaviPaymentAnalytics private constructor() {
}
NaviTrackEvent.trackEventOnClickStream(
eventName =
"${NAVI_PMT}_${NaviPaymentAnalyticScreenName.NET_BANKING_SCREEN.screenName}_search_bank_query",
"${NAVI_PMT}_${NaviPaymentAnalyticScreenName.NET_BANKING_SCREEN.screenName}_SearchBankQuery",
eventValues = eventAttributes
)
}
@@ -444,7 +444,7 @@ class NaviPaymentAnalytics private constructor() {
}
NaviTrackEvent.trackEventOnClickStream(
eventName =
"${NAVI_PMT}_${NaviPaymentAnalyticScreenName.NET_BANKING_SCREEN.screenName}_no_bank_found",
"${NAVI_PMT}_${NaviPaymentAnalyticScreenName.NET_BANKING_SCREEN.screenName}_NoBankFound",
eventValues = eventAttributes
)
}
@@ -455,14 +455,14 @@ class NaviPaymentAnalytics private constructor() {
fun onJuspayPaymentStarted() {
NaviTrackEvent.trackEventOnClickStream(
eventName =
"${NAVI_PMT}_${NaviPaymentAnalyticScreenName.CARD_SCREEN.screenName}_juspay_payment_initiated"
"${NAVI_PMT}_${NaviPaymentAnalyticScreenName.CARD_SCREEN.screenName}_JuspayPaymentInitiated"
)
}
fun onJuspayPaymentCallbackReceived(juspayJsonResponseString: String) {
NaviTrackEvent.trackEventOnClickStream(
eventName =
"${NAVI_PMT}_${NaviPaymentAnalyticScreenName.CARD_SCREEN.screenName}_juspay_payment_callback_received",
"${NAVI_PMT}_${NaviPaymentAnalyticScreenName.CARD_SCREEN.screenName}_JuspayPaymentCallbackReceived",
eventValues = mapOf("juspayResponse" to juspayJsonResponseString)
)
}
@@ -470,7 +470,7 @@ class NaviPaymentAnalytics private constructor() {
fun onBackPress(baseAttributes: Map<String, String>) {
NaviTrackEvent.trackEventOnClickStream(
eventName =
"${NAVI_PMT}_${NaviPaymentAnalyticScreenName.CARD_SCREEN.screenName}_back_pressed",
"${NAVI_PMT}_${NaviPaymentAnalyticScreenName.CARD_SCREEN.screenName}_BackPressed",
eventValues = baseAttributes
)
}
@@ -480,7 +480,7 @@ class NaviPaymentAnalytics private constructor() {
addScreenName(baseAttributes, NaviPaymentAnalyticScreenName.CARD_SCREEN.screenName)
NaviTrackEvent.trackEventOnClickStream(
eventName =
"${NAVI_PMT}_${NaviPaymentAnalyticScreenName.CARD_SCREEN.screenName}_landed",
"${NAVI_PMT}_${NaviPaymentAnalyticScreenName.CARD_SCREEN.screenName}_Landed",
eventValues = updatedAttributes
)
}
@@ -493,7 +493,7 @@ class NaviPaymentAnalytics private constructor() {
) {
NaviTrackEvent.trackEventOnClickStream(
eventName =
"${NAVI_PMT}_${NaviPaymentAnalyticScreenName.CARD_SCREEN.screenName}_pay_now_clicked",
"${NAVI_PMT}_${NaviPaymentAnalyticScreenName.CARD_SCREEN.screenName}_PayNowClicked",
eventValues =
baseAnalyticsParams.plus(
mapOf(
@@ -514,7 +514,7 @@ class NaviPaymentAnalytics private constructor() {
addScreenName(baseAttributes, NaviPaymentAnalyticScreenName.CARD_SCREEN.screenName)
NaviTrackEvent.trackEventOnClickStream(
eventName =
"${NAVI_PMT}_${NaviPaymentAnalyticScreenName.SDK_INTEGRATION_SCREEN.screenName}_landed",
"${NAVI_PMT}_${NaviPaymentAnalyticScreenName.SDK_INTEGRATION_SCREEN.screenName}_Landed",
eventValues = updatedAttributes
)
}
@@ -522,7 +522,7 @@ class NaviPaymentAnalytics private constructor() {
fun onInitiateSdkCalled(provider: String) {
NaviTrackEvent.trackEventOnClickStream(
eventName =
"${NAVI_PMT}_${NaviPaymentAnalyticScreenName.SDK_INTEGRATION_SCREEN.screenName}_initiate_called",
"${NAVI_PMT}_${NaviPaymentAnalyticScreenName.SDK_INTEGRATION_SCREEN.screenName}_InitiateCalled",
eventValues = mapOf("provider" to provider)
)
}
@@ -530,7 +530,7 @@ class NaviPaymentAnalytics private constructor() {
fun onInitiateSdkCompleted(provider: String) {
NaviTrackEvent.trackEventOnClickStream(
eventName =
"${NAVI_PMT}_${NaviPaymentAnalyticScreenName.SDK_INTEGRATION_SCREEN.screenName}_initiate_completed",
"${NAVI_PMT}_${NaviPaymentAnalyticScreenName.SDK_INTEGRATION_SCREEN.screenName}_InitiateCompleted",
eventValues = mapOf("provider" to provider)
)
}
@@ -538,7 +538,7 @@ class NaviPaymentAnalytics private constructor() {
fun onInitiateSdkError(provider: String, error: String) {
NaviTrackEvent.trackEventOnClickStream(
eventName =
"${NAVI_PMT}_${NaviPaymentAnalyticScreenName.SDK_INTEGRATION_SCREEN.screenName}_initiate_error",
"${NAVI_PMT}_${NaviPaymentAnalyticScreenName.SDK_INTEGRATION_SCREEN.screenName}_InitiateError",
eventValues = mapOf("provider" to provider, "error" to error)
)
}
@@ -546,7 +546,7 @@ class NaviPaymentAnalytics private constructor() {
fun onSdkPaymentStarted(provider: String, payload: String) {
NaviTrackEvent.trackEventOnClickStream(
eventName =
"${NAVI_PMT}_${NaviPaymentAnalyticScreenName.SDK_INTEGRATION_SCREEN.screenName}_payment_started",
"${NAVI_PMT}_${NaviPaymentAnalyticScreenName.SDK_INTEGRATION_SCREEN.screenName}_PaymentStarted",
eventValues = mapOf("provider" to provider, "payload" to payload)
)
}
@@ -560,7 +560,7 @@ class NaviPaymentAnalytics private constructor() {
) {
NaviTrackEvent.trackEventOnClickStream(
eventName =
"${NAVI_PMT}_${NaviPaymentAnalyticScreenName.SDK_INTEGRATION_SCREEN.screenName}_payment_response_received",
"${NAVI_PMT}_${NaviPaymentAnalyticScreenName.SDK_INTEGRATION_SCREEN.screenName}_PaymentResponseReceived",
eventValues =
mapOf(
"status" to status,
@@ -575,7 +575,7 @@ class NaviPaymentAnalytics private constructor() {
fun onSdkPaymentError(provider: String, error: String) {
NaviTrackEvent.trackEventOnClickStream(
eventName =
"${NAVI_PMT}_${NaviPaymentAnalyticScreenName.SDK_INTEGRATION_SCREEN.screenName}_payment_error",
"${NAVI_PMT}_${NaviPaymentAnalyticScreenName.SDK_INTEGRATION_SCREEN.screenName}_error",
eventValues = mapOf("provider" to provider, "error" to error)
)
}
@@ -585,7 +585,7 @@ class NaviPaymentAnalytics private constructor() {
fun onJuspayInitStarted(payload: String, sourceActivityName: String) {
NaviTrackEvent.trackEventOnClickStream(
eventName = "${NAVI_PMT}_juspay_sdk_init_started",
eventName = "${NAVI_PMT}_Juspay_SdkInitStarted",
eventValues =
mapOf("payload" to payload, "source_activity_name" to sourceActivityName)
)
@@ -593,28 +593,28 @@ class NaviPaymentAnalytics private constructor() {
fun onJuspayInitResponse(response: String) {
NaviTrackEvent.trackEventOnClickStream(
eventName = "${NAVI_PMT}_juspay_sdk_init_response",
eventName = "${NAVI_PMT}_Juspay_SdkInitResponse",
eventValues = mapOf("response" to response)
)
}
fun onJuspayProcessSdkCalled(sourceActivityName: String) {
NaviTrackEvent.trackEventOnClickStream(
eventName = "${NAVI_PMT}_juspay_process_sdk_called",
eventName = "${NAVI_PMT}_Juspay_ProcessSdkCalled",
eventValues = mapOf("source_activity_name" to sourceActivityName)
)
}
fun onJuspayProcessSdkResponse(response: String) {
NaviTrackEvent.trackEventOnClickStream(
eventName = "${NAVI_PMT}_juspay_process_sdk_response",
eventName = "${NAVI_PMT}_Juspay_ProcessSdkResponse",
eventValues = mapOf("response" to response)
)
}
fun onJuspaySdkLogs(log: String, logPayload: String) {
NaviTrackEvent.trackEventOnClickStream(
eventName = "${NAVI_PMT}_juspay_sdk_logs",
eventName = "${NAVI_PMT}_Juspay_SdkLogs",
eventValues = mapOf("log" to log, "log_payload" to logPayload)
)
}
@@ -623,21 +623,21 @@ class NaviPaymentAnalytics private constructor() {
inner class ErrorBottomSheet {
fun onPrimaryCtaClick(primaryButtonText: String) {
NaviTrackEvent.trackEventOnClickStream(
eventName = "${NAVI_PMT}_error_bottom_sheet_primary_cta_click",
eventName = "${NAVI_PMT}_error_BottomSheetPrimaryCtaClick",
eventValues = mapOf("cta_text" to primaryButtonText)
)
}
fun onSecondaryCtaClick(secondaryButtonText: String) {
NaviTrackEvent.trackEventOnClickStream(
eventName = "${NAVI_PMT}_error_bottom_sheet_secondary_cta_click",
eventName = "${NAVI_PMT}_error_BottomSheetSecondaryCtaClick",
eventValues = mapOf("cta_text" to secondaryButtonText)
)
}
fun onDismissClick() {
NaviTrackEvent.trackEventOnClickStream(
eventName = "${NAVI_PMT}_error_bottom_sheet_dismiss_click"
eventName = "${NAVI_PMT}_error_BottomSheetDismissClick"
)
}
@@ -699,7 +699,7 @@ class NaviPaymentAnalytics private constructor() {
const val CATEGORY_ID = "category_id"
const val PAYMENT_ORDER_REFERENCE_ID = "payment_order_ref_id"
const val NAVI_PMT = "navi_pmt"
const val NAVI_PMT = "NaviPMT"
}
}

View File

@@ -7,12 +7,14 @@
package com.navi.payment.nativepayment.repository
import com.navi.common.checkmate.model.MetricInfo
import com.navi.common.model.ModuleName
import com.navi.common.network.models.RepoResult
import com.navi.common.network.retrofit.ResponseCallback
import com.navi.payment.model.common.SignalPaymentData
import com.navi.payment.model.initiatesdk.PaymentPrefetchMethodRequest
import com.navi.payment.nativepayment.model.BasePaymentMethodResponse
import com.navi.payment.nativepayment.model.NetBankingPaymentInstrument
import com.navi.payment.network.retrofit.RetrofitService
import com.navi.payment.network.util.PaymentsSdkRetrofit
import com.navi.payment.paymentscreen.model.PayNowResponse
@@ -32,74 +34,111 @@ constructor(@PaymentsSdkRetrofit private val retrofitService: RetrofitService) :
suspend fun fetchTransactionStatus(
token: String,
request: TransactionStatusRequest? = null
request: TransactionStatusRequest? = null,
metricInfo: MetricInfo<RepoResult<TransactionStatusResponse>>,
): RepoResult<TransactionStatusResponse> =
apiResponseCallback(
retrofitService.fetchTransactionStatus(
token = token,
paymentSdkVersion = COMPOSE_PAYMENT_SDK_VERSION,
xTarget = PAYMENT_GATEWAY_MODULE,
data = request
)
response =
retrofitService.fetchTransactionStatus(
token = token,
paymentSdkVersion = COMPOSE_PAYMENT_SDK_VERSION,
xTarget = PAYMENT_GATEWAY_MODULE,
data = request
),
metricInfo = metricInfo
)
suspend fun fetchScreenData(
token: String,
paymentPrefetchMethodRequest: PaymentPrefetchMethodRequest
paymentPrefetchMethodRequest: PaymentPrefetchMethodRequest,
metricInfo: MetricInfo<RepoResult<BasePaymentMethodResponse>>
): RepoResult<BasePaymentMethodResponse> {
return apiResponseCallback(
retrofitService.fetchScreenData(
token,
COMPOSE_PAYMENT_SDK_VERSION,
ModuleName.PG.name,
paymentPrefetchMethodRequest
)
response =
retrofitService.fetchScreenData(
token,
COMPOSE_PAYMENT_SDK_VERSION,
ModuleName.PG.name,
paymentPrefetchMethodRequest
),
metricInfo = metricInfo
)
}
suspend fun verifyVPAId(
token: String,
data: ValidateVpaRequest? = null
data: ValidateVpaRequest? = null,
metricInfo: MetricInfo<RepoResult<ValidateVPAResponse>>
): RepoResult<ValidateVPAResponse> {
return apiResponseCallback(
retrofitService.verifyVPAId(
token = token,
xTarget = PAYMENT_GATEWAY_MODULE,
data = data
)
response =
retrofitService.verifyVPAId(
token = token,
xTarget = PAYMENT_GATEWAY_MODULE,
data = data
),
metricInfo = metricInfo
)
}
suspend fun postPayNow(token: String?, data: Any? = null): RepoResult<PayNowResponse> {
suspend fun postPayNow(
token: String?,
data: Any? = null,
metricInfo: MetricInfo<RepoResult<PayNowResponse>>
): RepoResult<PayNowResponse> {
return apiResponseCallback(
retrofitService.postPayNow(
token = token,
xTarget = PAYMENT_GATEWAY_MODULE,
data = data,
paymentSdkVersion = COMPOSE_PAYMENT_SDK_VERSION
)
response =
retrofitService.postPayNow(
token = token,
xTarget = PAYMENT_GATEWAY_MODULE,
data = data,
paymentSdkVersion = COMPOSE_PAYMENT_SDK_VERSION
),
metricInfo = metricInfo
)
}
suspend fun postSdkExitSignal(token: String, data: SignalPaymentData) {
suspend fun postSdkExitSignal(
token: String,
data: SignalPaymentData,
metricInfo: MetricInfo<RepoResult<Any>>
) {
apiResponseCallback(
retrofitService.postPaymentStatusV2(
token = token,
xTarget = PAYMENT_GATEWAY_MODULE,
data = data,
paymentSdkVersion = COMPOSE_PAYMENT_SDK_VERSION
)
response =
retrofitService.postPaymentStatusV2(
token = token,
xTarget = PAYMENT_GATEWAY_MODULE,
data = data,
paymentSdkVersion = COMPOSE_PAYMENT_SDK_VERSION
),
metricInfo = metricInfo
)
}
suspend fun postFeedbackBottomsheet(token: String, request: PaymentFeedbackRequest) {
suspend fun postFeedbackBottomsheet(
token: String,
request: PaymentFeedbackRequest,
metricInfo: MetricInfo<RepoResult<Any>>
) {
apiResponseCallback(
retrofitService.postPaymentFeedback(
token = token,
paymentSdkVersion = COMPOSE_PAYMENT_SDK_VERSION,
xTarget = PAYMENT_GATEWAY_MODULE,
data = request
)
response =
retrofitService.postPaymentFeedback(
token = token,
paymentSdkVersion = COMPOSE_PAYMENT_SDK_VERSION,
xTarget = PAYMENT_GATEWAY_MODULE,
data = request
),
metricInfo = metricInfo
)
}
suspend fun fetchBanks(
token: String,
metricInfo: MetricInfo<RepoResult<NetBankingPaymentInstrument>>
): RepoResult<NetBankingPaymentInstrument> {
return apiResponseCallback(
response = retrofitService.fetchBanksCompose(token, PAYMENT_GATEWAY_MODULE),
metricInfo = metricInfo
)
}
}

View File

@@ -75,6 +75,7 @@ import com.navi.payment.R
import com.navi.payment.juspay.HyperServicesHolder
import com.navi.payment.juspay.JusPayUtil
import com.navi.payment.juspay.JuspayCallbackWrapper
import com.navi.payment.nativepayment.NaviPaymentAnalyticScreenName
import com.navi.payment.nativepayment.NaviPaymentAnalytics
import com.navi.payment.nativepayment.activity.NaviPaymentActivity
import com.navi.payment.nativepayment.components.NPSHeader
@@ -539,4 +540,7 @@ private fun TriggerOnLandEvent(
LaunchedEffect(Unit) {
naviPaymentAnalytics.onScreenLanded(cardDetailScreenVM.getAnalyticsParams())
}
LaunchedEffect(Unit) {
cardDetailScreenVM.recordScreenLatency(NaviPaymentAnalyticScreenName.CARD_SCREEN.screenName)
}
}

View File

@@ -28,6 +28,7 @@ import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.runtime.snapshotFlow
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
import androidx.hilt.navigation.compose.hiltViewModel
import androidx.lifecycle.ViewModelProvider
@@ -65,6 +66,7 @@ import com.navi.pay.utils.ALL_ENABLED_ACCOUNTS
import com.navi.pay.utils.NAVI_PAY_UPI_URI_KEY
import com.navi.pay.utils.SAVINGS_ONLY_ENABLED_ACCOUNTS
import com.navi.pay.utils.isAccountIdOfTypeUpiLite
import com.navi.payment.R as PaymentR
import com.navi.payment.model.initiatesdk.AdditionalParam
import com.navi.payment.nativepayment.NaviPaymentAnalyticScreenName
import com.navi.payment.nativepayment.NaviPaymentAnalytics
@@ -161,17 +163,20 @@ fun MPSScreen(
LaunchedEffect(key1 = Unit) {
paymentViewModel.sendEvent(
"${NAVI_PMT}_${NaviPaymentAnalyticScreenName.MINI_PAYMENT_SCREEN.screenName}_landed",
"${NAVI_PMT}_${NaviPaymentAnalyticScreenName.MINI_PAYMENT_SCREEN.screenName}_Landed",
mapOf(
"screenName" to NaviPaymentScreenType.MINI_PAYMENT_SCREEN.name,
)
)
mpsViewModel.recordScreenLatency(
NaviPaymentAnalyticScreenName.MINI_PAYMENT_SCREEN.screenName
)
if (
coinBurnDetails.isNotNull() &&
bottomSheetStateHolder.bottomSheetUIState is MPSScreenUtils.MPSScreenType.Onboarded
) {
paymentViewModel.sendEvent(
"${NAVI_PMT}_${NaviPaymentAnalyticScreenName.MINI_PAYMENT_SCREEN.screenName}_coin_burn_banner_viewed",
"${NAVI_PMT}_${NaviPaymentAnalyticScreenName.MINI_PAYMENT_SCREEN.screenName}_CoinBurnBannerViewed",
mapOf(
"amount" to paymentAmount.toString(),
"redeemable_coins" to coinBurnDetails?.redeemableCoins.toString()
@@ -179,7 +184,7 @@ fun MPSScreen(
)
} else if (coinEarnBannerDetails.isNotNull()) {
paymentViewModel.sendEvent(
"${NAVI_PMT}_${NaviPaymentAnalyticScreenName.MINI_PAYMENT_SCREEN.screenName}_coin_earn_banner_viewed",
"${NAVI_PMT}_${NaviPaymentAnalyticScreenName.MINI_PAYMENT_SCREEN.screenName}_CoinEarnBannerViewed",
mapOf("amount" to paymentAmount.toString())
)
}
@@ -202,7 +207,7 @@ fun MPSScreen(
val pmsCallBack: (status: PMSSendMoneyStatus) -> Unit = { pmsSendMoneyStatus ->
paymentViewModel.sendEvent(
"${NAVI_PMT}_${NaviPaymentAnalyticScreenName.MINI_PAYMENT_SCREEN.screenName}_redirection_from_upi",
"${NAVI_PMT}_${NaviPaymentAnalyticScreenName.MINI_PAYMENT_SCREEN.screenName}_RedirectionFromNaviUpi",
mapOf("entry_point" to UpiIntent.SEND_MONEY.name)
)
when (pmsSendMoneyStatus) {
@@ -272,7 +277,7 @@ fun MPSScreen(
.filter { it.infoMessage.isNotNullAndNotEmpty() }
.forEach {
paymentViewModel.sendEvent(
"${NAVI_PMT}_${NaviPaymentAnalyticScreenName.MINI_PAYMENT_SCREEN.screenName}_info_message_shown",
"${NAVI_PMT}_${NaviPaymentAnalyticScreenName.MINI_PAYMENT_SCREEN.screenName}_NaviUpiInfoMessageShown",
mapOf(
"info_message" to it.infoMessage.orEmpty(),
"is_upi_lite" to it.accountId.isAccountIdOfTypeUpiLite().toString()
@@ -346,7 +351,7 @@ fun MPSScreen(
as? NaviPayProcessPayload)
val payeeEntity = Uri.parse(payload?.naviPayUpiUriKey).getPayeeEntity(true)
paymentViewModel.sendEvent(
"${NAVI_PMT}_${NaviPaymentAnalyticScreenName.MINI_PAYMENT_SCREEN.screenName}_redirection_to_upi",
"${NAVI_PMT}_${NaviPaymentAnalyticScreenName.MINI_PAYMENT_SCREEN.screenName}_RedirectionToNaviUpi",
mapOf(
"entry_point" to UpiIntent.SEND_MONEY.name,
NAVI_PAY_UPI_URI_KEY to payload?.naviPayUpiUriKey.orEmpty(),
@@ -384,7 +389,7 @@ fun MPSScreen(
) { result ->
val resultResponse = result.data?.extras?.getString(NAVI_PAY_RESPONSE)
paymentViewModel.sendEvent(
"${NAVI_PMT}_${NaviPaymentAnalyticScreenName.MINI_PAYMENT_SCREEN.screenName}_redirection_from_upi",
"${NAVI_PMT}_${NaviPaymentAnalyticScreenName.MINI_PAYMENT_SCREEN.screenName}_RedirectionFromNaviUpi",
mapOf("entry_point" to result.data?.extras?.getString("type").orEmpty())
)
val payloadJson = resultResponse.stringToJsonObject()
@@ -418,9 +423,16 @@ fun MPSScreen(
try {
if (mpsViewModel.isUserOnboarded().not()) {
paymentViewModel.sendEvent(
"${NAVI_PMT}_${NaviPaymentAnalyticScreenName.MINI_PAYMENT_SCREEN.screenName}_pay_via_navi_upi",
"${NAVI_PMT}_${NaviPaymentAnalyticScreenName.MINI_PAYMENT_SCREEN.screenName}_PayNowClickedNonOnboarded",
mapOf("is_discount_applied" to isDiscountApplied.toString())
)
paymentViewModel.sendEvent(
"${NAVI_PMT}_${NaviPaymentAnalyticScreenName.MINI_PAYMENT_SCREEN.screenName}_RedirectionToNaviUpi",
mapOf(
"is_discount_applied" to isDiscountApplied.toString(),
"action" to NaviPayOnboardingActionsType.E2E_ONBOARDING.name
)
)
mpsViewModel.updateBottomSheetUIState(false)
naviPaymentActivity.launchOnboardingSDK(
action = NaviPayOnboardingActionsType.E2E_ONBOARDING.name,
@@ -431,19 +443,19 @@ fun MPSScreen(
)
} else if (selectedBankAccount?.isMPinSet.orFalse().not()) {
paymentViewModel.sendEvent(
"${NAVI_PMT}_${NaviPaymentAnalyticScreenName.MINI_PAYMENT_SCREEN.screenName}_set_upi_pin_btn_click",
"${NAVI_PMT}_${NaviPaymentAnalyticScreenName.MINI_PAYMENT_SCREEN.screenName}_SetUpiPinBtnClick",
mapOf("is_discount_applied" to isDiscountApplied.toString())
)
val data = getMpinSetAction(selectedBankAccount?.accountId.orEmpty())
paymentViewModel.sendEvent(
"${NAVI_PMT}_${NaviPaymentAnalyticScreenName.MINI_PAYMENT_SCREEN.screenName}_redirection_to_upi",
"${NAVI_PMT}_${NaviPaymentAnalyticScreenName.MINI_PAYMENT_SCREEN.screenName}_RedirectionToNaviUpi",
mapOf("entry_point" to UpiIntent.SET_PIN.name)
)
mpsViewModel.updateBottomSheetUIState(mpsViewModel.isNaviUpiOnboarded.value)
mpsViewModel.startAction(naviPaymentActivity, upiResultLauncher, data)
} else {
paymentViewModel.sendEvent(
"${NAVI_PMT}_${NaviPaymentAnalyticScreenName.MINI_PAYMENT_SCREEN.screenName}_mps_pay_now",
"${NAVI_PMT}_${NaviPaymentAnalyticScreenName.MINI_PAYMENT_SCREEN.screenName}_PayNowClicked",
mapOf("is_discount_applied" to isDiscountApplied.toString())
)
mpsViewModel.startPayAmount()
@@ -455,7 +467,7 @@ fun MPSScreen(
val onOtherMethodsClick: (shouldFinishOnBackPress: Boolean) -> Unit = {
paymentViewModel.sendEvent(
"${NAVI_PMT}_${NaviPaymentAnalyticScreenName.MINI_PAYMENT_SCREEN.screenName}_other_methods_click",
"${NAVI_PMT}_${NaviPaymentAnalyticScreenName.MINI_PAYMENT_SCREEN.screenName}_OtherMethodsClick",
mapOf("is_discount_applied" to isDiscountApplied.toString())
)
if (paymentViewModel.isNpsMigrationEnabled()) {
@@ -504,10 +516,10 @@ fun MPSScreen(
val onAddAccountClick = {
try {
paymentViewModel.sendEvent(
"${NAVI_PMT}_${NaviPaymentAnalyticScreenName.MINI_PAYMENT_SCREEN.screenName}_add_upi_account_click"
"${NAVI_PMT}_${NaviPaymentAnalyticScreenName.MINI_PAYMENT_SCREEN.screenName}_AddUpiAccountClick"
)
paymentViewModel.sendEvent(
"${NAVI_PMT}_${NaviPaymentAnalyticScreenName.MINI_PAYMENT_SCREEN.screenName}_redirection_to_upi",
"${NAVI_PMT}_${NaviPaymentAnalyticScreenName.MINI_PAYMENT_SCREEN.screenName}_RedirectionToUpi",
mapOf("entry_point" to UpiIntent.ADD_BANK_ACCOUNT.name)
)
mpsViewModel.updateBottomSheetUIState(false)
@@ -537,7 +549,7 @@ fun MPSScreen(
val onDiscountClicked = { isDiscountApplied: Boolean ->
paymentViewModel.sendEvent(
"${NAVI_PMT}_${NaviPaymentAnalyticScreenName.MINI_PAYMENT_SCREEN.screenName}_discount_apply_click",
"${NAVI_PMT}_${NaviPaymentAnalyticScreenName.MINI_PAYMENT_SCREEN.screenName}_DiscountApplyClick",
mapOf(
"is_discount_applied" to isDiscountApplied.toString(),
"amount" to paymentAmount.toString(),
@@ -638,14 +650,16 @@ fun MPSScreen(
)
BottomSheetContentWithVerticalPrimarySecondaryButton(
iconId = R.drawable.ic_error_outlined,
headerText = errorData?.error?.title.orElse("Something went wrong!"),
headerText =
errorData
?.error
?.title
.orElse(stringResource(PaymentR.string.something_went_wrong)),
descriptionText =
errorData
?.error
?.message
.orElse(
"We are facing a technical issue at this time. Please check after some time."
),
.orElse(stringResource(PaymentR.string.technical_issue)),
primaryButtonText =
errorData?.error?.actions?.firstOrNull()?.title.orElse("Try again"),
secondaryButtonText =
@@ -685,7 +699,7 @@ private fun sendLatencyEvent(paymentViewModel: NaviPaymentViewModel) {
System.currentTimeMillis() - paymentViewModel.getPaymentInitiateStartTime()
TemporaryStorageHelper.payNowClickTime = 0L
paymentViewModel.sendEvent(
"${NAVI_PMT}_${NaviPaymentAnalyticScreenName.MINI_PAYMENT_SCREEN.screenName}_app_latency",
"${NAVI_PMT}_${NaviPaymentAnalyticScreenName.MINI_PAYMENT_SCREEN.screenName}_AppLatency",
mapOf(
Pair("flow", "new"),
Pair("latency_ms", timeDifference.toString()),

View File

@@ -95,6 +95,7 @@ import com.navi.payment.juspay.HyperServicesHolder
import com.navi.payment.juspay.JusPayUtil
import com.navi.payment.juspay.JuspayCallbackWrapper
import com.navi.payment.model.initiatesdk.PaymentSDKProvider
import com.navi.payment.nativepayment.NaviPaymentAnalyticScreenName
import com.navi.payment.nativepayment.NaviPaymentAnalytics
import com.navi.payment.nativepayment.activity.NaviPaymentActivity
import com.navi.payment.nativepayment.common.theme.NaviPmsColor
@@ -165,7 +166,12 @@ fun NPSScreenRoot(
val isKeyboardVisible = WindowInsets.isImeVisible
val npsScreenState by npsViewModel.state.collectAsStateWithLifecycle()
LaunchedEffect(Unit) { naviPaymentAnalytics.onNPSLanded(npsViewModel.getAnalyticsParams()) }
LaunchedEffect(Unit) {
naviPaymentAnalytics.onNPSLanded(npsViewModel.getAnalyticsParams())
npsViewModel.recordScreenLatency(
NaviPaymentAnalyticScreenName.FULL_PAYMENT_SCREEN.screenName
)
}
val scrollState = rememberScrollState()
EffectsHandler(

View File

@@ -52,6 +52,7 @@ import com.navi.payment.R
import com.navi.payment.juspay.JusPayUtil
import com.navi.payment.juspay.JuspayCallbackWrapper
import com.navi.payment.model.initiatesdk.PaymentSDKProvider
import com.navi.payment.nativepayment.NaviPaymentAnalyticScreenName
import com.navi.payment.nativepayment.NaviPaymentAnalytics
import com.navi.payment.nativepayment.activity.NaviPaymentActivity
import com.navi.payment.nativepayment.components.BankSearchField
@@ -92,6 +93,9 @@ fun NetBankingScreenRoot(
val isKeyboardVisible = WindowInsets.isImeVisible
LaunchedEffect(Unit) {
naviPaymentAnalytics.onScreenLanded(netBankingViewModel.getBaseAnalyticsParams())
netBankingViewModel.recordScreenLatency(
screenName = NaviPaymentAnalyticScreenName.NET_BANKING_SCREEN.screenName
)
}
ObserveBottomSheetEvents(activity = naviPaymentActivity, onEvent = netBankingViewModel::onEvent)

View File

@@ -70,6 +70,7 @@ import com.navi.payment.juspay.HyperServicesHolder
import com.navi.payment.juspay.JusPayUtil
import com.navi.payment.juspay.JuspayCallbackWrapper
import com.navi.payment.model.initiatesdk.PaymentSDKProvider
import com.navi.payment.nativepayment.NaviPaymentAnalyticScreenName
import com.navi.payment.nativepayment.NaviPaymentAnalytics
import com.navi.payment.nativepayment.activity.NaviPaymentActivity
import com.navi.payment.nativepayment.common.theme.NaviPmsColor
@@ -119,6 +120,9 @@ fun UpiIntentScreenRoot(
LaunchedEffect(Unit) {
naviPaymentAnalytics.onScreenLanded(upiIntentViewModel.getAnalyticsParams())
upiIntentViewModel.recordScreenLatency(
NaviPaymentAnalyticScreenName.UPI_INTENT_SCREEN.screenName
)
}
EffectsHandler(

View File

@@ -41,6 +41,7 @@ import com.navi.payment.utils.Constants.DATA
import com.navi.payment.utils.Constants.LITMUS_EXPERIMENT_NAVI_PMT_NPS_MIGRATION
import com.navi.payment.utils.Constants.MIN_APP_VERSION
import com.navi.payment.utils.getInstalledUpiApps
import com.navi.payment.utils.getPMSMetricInfo
import com.navi.paymentclients.model.thirdparty.UpiResultResponse
import dagger.hilt.android.lifecycle.HiltViewModel
import javax.inject.Inject
@@ -97,7 +98,11 @@ constructor(
val response =
paymentRepository.fetchScreenData(
paymentSdkInitParams.token,
paymentPrefetchMethodRequest
paymentPrefetchMethodRequest,
metricInfo =
getPMSMetricInfo(
screenName = NaviPaymentAnalyticScreenName.CHECKOUT_SCREEN.screenName
)
)
if (response.isSuccessWithData()) {
paymentDataProvider.updatePaymentMethodResponse(response.data)

View File

@@ -75,6 +75,7 @@ import com.navi.payment.utils.Constants.DEFAULT_MAX_CVV_LENGTH
import com.navi.payment.utils.Constants.DEFAULT_MIN_CARD_NUMBER_LENGTH
import com.navi.payment.utils.Constants.DEFAULT_MIN_CVV_LENGTH
import com.navi.payment.utils.Constants.DELAY_FOR_HIDING_KEYBOARD
import com.navi.payment.utils.getPMSMetricInfo
import com.navi.payment.utils.usecases.CardValidator
import com.navi.payment.utils.usecases.CardValidator.CardValidationError
import com.navi.payment.utils.usecases.CardValidator.CardValidationError.CREDIT_CARD_NOT_SUPPORTED
@@ -142,6 +143,7 @@ constructor(
private var isInteractionAllowed = false
init {
recordScreenLandTime(NaviPaymentAnalyticScreenName.CARD_SCREEN.screenName)
processPaymentMethodResponse()
updateInternalState(internalState.copy(paymentSdkInitParams = getSDKInitParams()))
baseAnalyticsParams.apply {
@@ -318,7 +320,12 @@ constructor(
viewModelScope.safeLaunch(Dispatchers.IO) {
paymentRepository.postSdkExitSignal(
token = internalState.paymentSdkInitParams?.token.orEmpty(),
data = SignalPaymentData()
data = SignalPaymentData(),
metricInfo =
getPMSMetricInfo(
screenName = NaviPaymentAnalyticScreenName.CARD_SCREEN.screenName,
isNae = { false }
)
)
_effect.emit(CardDetailScreenEffect.PostResultAndFinish)
}
@@ -400,7 +407,11 @@ constructor(
val response =
paymentRepository.postPayNow(
token = internalState.paymentSdkInitParams?.token,
data = payNowRequest
data = payNowRequest,
metricInfo =
getPMSMetricInfo(
screenName = NaviPaymentAnalyticScreenName.CARD_SCREEN.screenName
)
)
if (response.isSuccessWithData()) {
savePayNowResponse(response)
@@ -663,11 +674,15 @@ constructor(
in 1 ..< CARD_NETWORK_VALIDATION_MIN_LENGTH -> clearBrandLogoIfNotEmpty()
14 -> {
if (
validateCardNumberCompletely(
newCardNumber = newCardNumber,
shouldShowError = false
)
.isValid
state.value.cardNetwork.equals(
CardValidator.CardNetworks.DINERS.name,
ignoreCase = true
) &&
validateCardNumberCompletely(
newCardNumber = newCardNumber,
shouldShowError = true
)
.isValid
) {
_effect.emit(CardDetailScreenEffect.MoveFocus)
}

View File

@@ -19,6 +19,8 @@ import com.navi.base.utils.isNotNullAndNotEmpty
import com.navi.base.utils.orFalse
import com.navi.base.utils.orTrue
import com.navi.base.utils.orZero
import com.navi.common.checkmate.core.CheckMateManager
import com.navi.common.checkmate.model.MetricInfo
import com.navi.common.network.models.isSuccessWithData
import com.navi.common.upi.UpiDataType
import com.navi.common.utils.toJsonObject
@@ -72,6 +74,7 @@ import com.navi.payment.turbocheckout.model.PayAmountRequest
import com.navi.payment.turbocheckout.ui.PayNowState
import com.navi.payment.utils.Constants
import com.navi.payment.utils.Constants.COIN_DISCOUNT_APPLY_DELAY
import com.navi.payment.utils.getPMSMetricInfo
import com.navi.payment.utils.roundTo
import com.navi.paymentclients.model.thirdparty.UpiResultResponse
import dagger.hilt.android.lifecycle.HiltViewModel
@@ -180,6 +183,7 @@ constructor(
val feedBackComment = _feedBackComment.asStateFlow()
init {
recordScreenLandTime(screenName)
initSdkInitParams()
getPaymentMethodData()
viewModelScope.launch(Dispatchers.IO) { getNaviUpiConnectedAccounts() }
@@ -399,6 +403,9 @@ constructor(
)
)
} else null
),
getPMSMetricInfo(
screenName = NaviPaymentAnalyticScreenName.MINI_PAYMENT_SCREEN.screenName
)
)
@@ -465,7 +472,15 @@ constructor(
val response =
paymentRepository.fetchScreenData(
paymentSdkInitParams?.token!!,
paymentPrefetchMethodRequest
paymentPrefetchMethodRequest,
getPMSMetricInfo(
screenName =
NaviPaymentAnalyticScreenName.MINI_PAYMENT_SCREEN.screenName,
isNae = { response ->
!(response.isSuccessWithData() &&
(response.data as? S2sPaymentMethodResponse).isNotNull())
}
)
)
if (
response.isSuccessWithData() &&
@@ -478,7 +493,7 @@ constructor(
bottomSheetUIState =
MPSScreenUtils.MPSScreenType.Error(
PaymentErrorData(
error = response.errors?.firstOrNull(),
error = response.toGenericErrorResponse(),
errorReason = MPSErrorReason.GetMethodsError
)
),
@@ -487,6 +502,12 @@ constructor(
}
}
} else {
CheckMateManager.logAppErrorEvent(
metricInfo = MetricInfo.PMSMetric<Any>(screen = screenName),
errorCode = MPSErrorReason.TokenNotFoundError.toString(),
errorTitle = resourceProvider.getString(R.string.something_went_wrong),
errorDes = resourceProvider.getString(R.string.technical_issue),
)
updateBottomSheetUIState(
showBottomSheet = true,
bottomSheetUIState =
@@ -641,7 +662,16 @@ constructor(
fun postSdkExitSignal() {
coroutineScope.safeLaunch(Dispatchers.IO) {
paymentSdkInitParams?.token?.let {
paymentRepository.postSdkExitSignal(token = it, data = SignalPaymentData())
paymentRepository.postSdkExitSignal(
token = it,
data = SignalPaymentData(),
metricInfo =
getPMSMetricInfo(
screenName =
NaviPaymentAnalyticScreenName.MINI_PAYMENT_SCREEN.screenName,
isNae = { false }
)
)
}
}
}
@@ -658,6 +688,12 @@ constructor(
event = error.toJsonObject().toString(),
screenType = NaviPaymentScreenType.MINI_PAYMENT_SCREEN.name,
status = status
),
metricInfo =
getPMSMetricInfo(
screenName =
NaviPaymentAnalyticScreenName.MINI_PAYMENT_SCREEN.screenName,
isNae = { false }
)
)
}
@@ -689,6 +725,11 @@ constructor(
options = feedBackOptions.value.toList(),
comments = feedBackComment.value
)
),
metricInfo =
getPMSMetricInfo(
screenName = NaviPaymentAnalyticScreenName.MINI_PAYMENT_SCREEN.screenName,
isNae = { false }
)
)
}

View File

@@ -30,6 +30,7 @@ import com.navi.payment.paymentscreen.model.ValidateVPAResponse
import com.navi.payment.paymentscreen.utils.PaymentScreenUtil
import com.navi.payment.turbocheckout.model.ValidateVpaRequest
import com.navi.payment.utils.Constants.DELAY_FOR_HIDING_KEYBOARD
import com.navi.payment.utils.getPMSMetricInfo
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.FlowPreview
import kotlinx.coroutines.Job
@@ -270,7 +271,8 @@ abstract class NPSBaseViewModel(
coroutineScope.safeLaunch(Dispatchers.IO) {
paymentRepository.postSdkExitSignal(
token = paymentSdkInitParams?.token.orEmpty(),
data = SignalPaymentData()
data = SignalPaymentData(),
metricInfo = getPMSMetricInfo(screenName = screenName, isNae = { false })
)
}
}
@@ -299,7 +301,9 @@ abstract class NPSBaseViewModel(
val response =
paymentRepository.verifyVPAId(
token = paymentSdkInitParams?.token.orEmpty(),
data = ValidateVpaRequest(vpa)
data = ValidateVpaRequest(vpa),
metricInfo =
getPMSMetricInfo(screenName = screenName, isNae = { false })
)
if (response.isSuccessWithData()) {
validateVpaResponse = response.data

View File

@@ -104,6 +104,7 @@ import com.navi.payment.turbocheckout.model.UpiPayNowRequest
import com.navi.payment.utils.Constants
import com.navi.payment.utils.Constants.COIN_DISCOUNT_APPLY_DELAY
import com.navi.payment.utils.getInstalledUpiApps
import com.navi.payment.utils.getPMSMetricInfo
import com.navi.payment.utils.roundTo
import com.navi.payment.utils.validateUpiProcessPayload
import com.navi.paymentclients.model.thirdparty.UpiResultResponse
@@ -160,6 +161,10 @@ constructor(
val shouldFinishOnBackPress = savedStateHandle.get<Boolean>("shouldFinishOnBackPress").orFalse()
init {
recordScreenLandTime(screenName)
}
override fun setInitialState(): NPSBaseContract.State {
return NPSScreenContract.NPSScreenState(
npsBaseState =
@@ -920,7 +925,15 @@ constructor(
payNowRequest?.let {
val payNowResponse =
paymentRepository.postPayNow(token = paymentSdkInitParams?.token, data = it)
paymentRepository.postPayNow(
token = paymentSdkInitParams?.token,
data = it,
metricInfo =
getPMSMetricInfo(
screenName =
NaviPaymentAnalyticScreenName.FULL_PAYMENT_SCREEN.screenName
)
)
handlePayNowResponse(payNowResponse)
}
}
@@ -1121,7 +1134,10 @@ constructor(
val response =
paymentRepository.fetchScreenData(
paymentSdkInitParams?.token!!,
paymentPrefetchMethodRequest
paymentPrefetchMethodRequest,
getPMSMetricInfo(
screenName = NaviPaymentAnalyticScreenName.FULL_PAYMENT_SCREEN.screenName
)
)
if (response.isSuccessWithData()) {
paymentDataProvider.updatePaymentMethodResponse(response.data)
@@ -1152,6 +1168,12 @@ constructor(
event = error.toJsonObject().toString(),
screenType = NaviPaymentScreenType.FULL_PAYMENT_SCREEN.name,
status = status
),
metricInfo =
getPMSMetricInfo(
screenName =
NaviPaymentAnalyticScreenName.FULL_PAYMENT_SCREEN.screenName,
isNae = { false }
)
)
}

View File

@@ -8,6 +8,7 @@
package com.navi.payment.nativepayment.viewmodel
import androidx.lifecycle.viewModelScope
import com.navi.common.checkmate.model.MetricInfo
import com.navi.common.model.ModuleNameV2
import com.navi.common.network.models.ErrorMessage
import com.navi.common.network.models.GenericErrorResponse
@@ -94,6 +95,10 @@ abstract class NaviPaymentBaseVM(open val screenName: String) : BaseVM() {
viewModelScope.launch(Dispatchers.Main) { eventHandler.get().postErrorEvent(errorConfig) }
}
fun recordScreenLatency(screenName: String) {
recordScreenRenderLatency(metricInfo = MetricInfo.PMSMetric<Boolean>(screen = screenName))
}
companion object {
const val UNKNOWN_ERROR_CODE = "UNKNOWN"
}

View File

@@ -24,6 +24,7 @@ import com.navi.payment.paymentscreen.model.PaymentFeedbackConfig
import com.navi.payment.paymentscreen.model.PaymentFeedbackRequest
import com.navi.payment.utils.Constants.LITMUS_EXPERIMENT_NAVI_PMT_NPS_MIGRATION
import com.navi.payment.utils.Constants.PMS_LITMUS_EXPERIMENTS
import com.navi.payment.utils.getPMSMetricInfo
import dagger.hilt.android.lifecycle.HiltViewModel
import javax.inject.Inject
import kotlinx.coroutines.Dispatchers
@@ -97,6 +98,11 @@ constructor(
options = feedBackOptions.toList(),
comments = feedBackComment
)
),
metricInfo =
getPMSMetricInfo(
screenName = NaviPaymentAnalyticScreenName.PAYMENT_SCREEN.screenName,
isNae = { false }
)
)
}

View File

@@ -27,15 +27,15 @@ import com.navi.payment.nativepayment.presentation.reducer.NetBankingScreenContr
import com.navi.payment.nativepayment.presentation.reducer.NetBankingScreenEffect
import com.navi.payment.nativepayment.presentation.reducer.NetBankingScreenEvent
import com.navi.payment.nativepayment.presentation.reducer.NetBankingScreenState
import com.navi.payment.nativepayment.repository.PaymentRepository as NaviPaymentRepository
import com.navi.payment.nativepayment.repository.PaymentRepository
import com.navi.payment.network.util.PaymentsSdkRetrofit
import com.navi.payment.paymentscreen.model.ExternalPayNowResponse
import com.navi.payment.paymentscreen.model.PayNowResponse
import com.navi.payment.paymentscreen.utils.PaymentScreenUtil
import com.navi.payment.repository.PaymentRepository
import com.navi.payment.turbocheckout.model.NetBankingPayNowRequest
import com.navi.payment.turbocheckout.model.SelectedMethodDetails
import com.navi.payment.utils.Constants.DELAY_FOR_HIDING_KEYBOARD
import com.navi.payment.utils.getPMSMetricInfo
import dagger.hilt.android.lifecycle.HiltViewModel
import javax.inject.Inject
import kotlinx.coroutines.Dispatchers
@@ -57,9 +57,8 @@ import org.json.JSONObject
class NetBankingViewModel
@Inject
constructor(
private val paymentRepository: PaymentRepository,
private val paymentDataProvider: PaymentDataProvider,
private val naviPaymentRepository: NaviPaymentRepository,
private val paymentRepository: PaymentRepository,
@PaymentsSdkRetrofit private val deserializer: Gson,
) :
NaviPaymentBaseVM(NaviPaymentAnalyticScreenName.NET_BANKING_SCREEN.screenName),
@@ -84,6 +83,7 @@ constructor(
private var sortedAllBanksList: List<BankDetails>? = null
init {
recordScreenLandTime(screenName)
viewModelScope.safeLaunch(Dispatchers.IO) {
paymentSdkInitParams = getSDKInitParams()
baseAnalyticsParams.apply {
@@ -125,7 +125,13 @@ constructor(
private fun updateFetchBankResponse() {
viewModelScope.safeLaunch {
val response =
paymentRepository.fetchBanksCompose(paymentSdkInitParams?.token.orEmpty())
paymentRepository.fetchBanks(
paymentSdkInitParams?.token.orEmpty(),
metricInfo =
getPMSMetricInfo(
screenName = NaviPaymentAnalyticScreenName.NET_BANKING_SCREEN.screenName
)
)
if (response.isSuccessWithData()) {
paymentDataProvider.updateFetchBanksResponse(response.data)
} else {
@@ -223,9 +229,14 @@ constructor(
}
private suspend fun handleFeedbackSubmit() {
naviPaymentRepository.postSdkExitSignal(
paymentRepository.postSdkExitSignal(
token = paymentSdkInitParams?.token.orEmpty(),
data = SignalPaymentData()
data = SignalPaymentData(),
metricInfo =
getPMSMetricInfo(
screenName = NaviPaymentAnalyticScreenName.NET_BANKING_SCREEN.screenName,
isNae = { false }
)
)
_effect.emit(NetBankingScreenEffect.PostResultAndFinish)
}
@@ -276,7 +287,14 @@ constructor(
)
val response =
paymentRepository.postPayNow(token = paymentSdkInitParams?.token, data = data)
paymentRepository.postPayNow(
token = paymentSdkInitParams?.token,
data = data,
metricInfo =
getPMSMetricInfo(
screenName = NaviPaymentAnalyticScreenName.NET_BANKING_SCREEN.screenName
)
)
handlePayNowResponse(response)
}

View File

@@ -19,6 +19,7 @@ import com.navi.payment.nativepayment.presentation.reducer.SdkIntegrationScreenE
import com.navi.payment.nativepayment.presentation.reducer.SdkIntegrationScreenState
import com.navi.payment.nativepayment.repository.PaymentRepository
import com.navi.payment.paymentscreen.model.PaymentErrorData
import com.navi.payment.utils.getPMSMetricInfo
import dagger.hilt.android.lifecycle.HiltViewModel
import javax.inject.Inject
import kotlinx.coroutines.Dispatchers
@@ -122,7 +123,14 @@ constructor(
fun postSdkExitSignal(data: SignalPaymentData) {
viewModelScope.launch(Dispatchers.IO) {
paymentRepository.postSdkExitSignal(paymentSdkInitParams?.token.orEmpty(), data)
paymentRepository.postSdkExitSignal(
paymentSdkInitParams?.token.orEmpty(),
data,
getPMSMetricInfo(
screenName = NaviPaymentAnalyticScreenName.SDK_INTEGRATION_SCREEN.screenName,
isNae = { false }
)
)
}
}

View File

@@ -12,6 +12,7 @@ import androidx.lifecycle.SavedStateHandle
import androidx.lifecycle.viewModelScope
import com.navi.base.utils.MILLISECONDS_PER_SECOND
import com.navi.base.utils.isNotNull
import com.navi.base.utils.isNotNullAndNotEmpty
import com.navi.common.firebasedb.FirebaseStatusType
import com.navi.common.model.RequestConfig
import com.navi.common.network.models.isSuccessWithData
@@ -39,6 +40,7 @@ import com.navi.payment.paymentscreen.model.TransactionPollingApiState
import com.navi.payment.paymentscreen.model.TransactionStatusRequest
import com.navi.payment.paymentscreen.model.TransactionStatusResponseData
import com.navi.payment.utils.PaymentSource
import com.navi.payment.utils.getPMSMetricInfo
import com.navi.uitron.utils.orVal
import dagger.hilt.android.lifecycle.HiltViewModel
import javax.inject.Inject
@@ -94,7 +96,23 @@ constructor(
private fun pollTransactionStatus(pollingCount: Int = 0) {
viewModelScope.launch {
val transactionStatusData = paymentRepository.fetchTransactionStatus(token, request)
val transactionStatusData =
paymentRepository.fetchTransactionStatus(
token = token,
request = request,
metricInfo =
getPMSMetricInfo(
screenName =
NaviPaymentAnalyticScreenName.TRANSACTION_POLLING_SCREEN.screenName,
isNae = {
when {
it.errors.isNotNullAndNotEmpty() || it.data == null -> true
it.error.isNotNull() -> false
else -> false
}
}
)
)
if (transactionStatusData.isSuccessWithData()) {
val data = transactionStatusData.data
if (nextPollRequired(data, pollingCount, pollingConfiguration)) {
@@ -175,7 +193,16 @@ constructor(
fun postSdkExitSignal() {
coroutineScope.safeLaunch(Dispatchers.IO) {
paymentRepository.postSdkExitSignal(token = token, data = SignalPaymentData())
paymentRepository.postSdkExitSignal(
token = token,
data = SignalPaymentData(),
metricInfo =
getPMSMetricInfo(
screenName =
NaviPaymentAnalyticScreenName.TRANSACTION_POLLING_SCREEN.screenName,
isNae = { false }
)
)
}
}

View File

@@ -64,6 +64,7 @@ import com.navi.payment.turbocheckout.model.SelectedMethodDetails
import com.navi.payment.turbocheckout.model.UpiCollectPayNowRequest
import com.navi.payment.turbocheckout.model.UpiIntentPayNowRequest
import com.navi.payment.turbocheckout.model.UpiPayNowRequest
import com.navi.payment.utils.getPMSMetricInfo
import com.navi.payment.utils.roundTo
import dagger.hilt.android.lifecycle.HiltViewModel
import javax.inject.Inject
@@ -106,11 +107,15 @@ constructor(
override val effect: SharedFlow<NPSBaseContract.Effect>
get() = _effect.asSharedFlow()
val upiScreenState: UpiIntentScreenContract.UpiScreenState
private val upiScreenState: UpiIntentScreenContract.UpiScreenState
get() = state.value as UpiIntentScreenContract.UpiScreenState
private val naviPaymentAnalytics = NaviPaymentAnalytics.INSTANCE.UpiIntentScreen()
init {
recordScreenLandTime(screenName)
}
override fun setInitialState() =
UpiIntentScreenContract.UpiScreenState(
npsBaseState =
@@ -283,7 +288,11 @@ constructor(
val payNowResponse =
paymentRepository.postPayNow(
token = paymentSdkInitParams?.token,
data = payNowRequest
data = payNowRequest,
metricInfo =
getPMSMetricInfo(
screenName = NaviPaymentAnalyticScreenName.UPI_INTENT_SCREEN.screenName
)
)
handlePayNowResponse(payNowResponse)
}
@@ -412,6 +421,11 @@ constructor(
event = error.toJsonObject().toString(),
screenType = NaviPaymentScreenType.FULL_PAYMENT_SCREEN.name,
status = status
),
metricInfo =
getPMSMetricInfo(
screenName = NaviPaymentAnalyticScreenName.UPI_INTENT_SCREEN.screenName,
isNae = { false }
)
)
}

View File

@@ -16,9 +16,10 @@ import com.google.gson.Gson
import com.navi.base.utils.ResourceProvider
import com.navi.base.utils.isNotNull
import com.navi.base.utils.isNotNullAndNotEmpty
import com.navi.base.utils.isNull
import com.navi.base.utils.orFalse
import com.navi.base.utils.orZero
import com.navi.common.checkmate.core.CheckMateManager
import com.navi.common.checkmate.model.MetricInfo
import com.navi.common.network.models.isSuccessWithData
import com.navi.common.upi.UpiDataType
import com.navi.pay.common.setup.NaviPayManager
@@ -27,6 +28,7 @@ import com.navi.pay.management.common.sendmoney.model.view.BankAccountsState
import com.navi.pay.onboarding.account.detail.model.view.LinkedAccountEntity
import com.navi.pay.utils.getDisplayableAmount
import com.navi.pay.utils.isAccountIdOfTypeUpiLite
import com.navi.payment.R
import com.navi.payment.model.initiatesdk.PaymentPrefetchDetail
import com.navi.payment.model.initiatesdk.PaymentPrefetchMethodRequest
import com.navi.payment.nativepayment.NaviPaymentAnalyticScreenName
@@ -50,15 +52,18 @@ import com.navi.payment.nativepayment.repository.PaymentRepository
import com.navi.payment.nativepayment.utils.getPayloadBasedOnType
import com.navi.payment.nativepayment.utils.getPreferredSelectedAccount
import com.navi.payment.nativepayment.utils.mapToLinkedAccountEntity
import com.navi.payment.nativepayment.utils.toGenericErrorResponse
import com.navi.payment.nativepayment.utils.updateAccountEligibilityStatus
import com.navi.payment.nativepayment.utils.updateUpiAccountsRanking
import com.navi.payment.network.util.PaymentsSdkRetrofit
import com.navi.payment.paymentscreen.model.MPSErrorReason
import com.navi.payment.paymentscreen.model.PaymentErrorData
import com.navi.payment.turbocheckout.model.PayAmountRequest
import com.navi.payment.turbocheckout.ui.PayNowState
import com.navi.payment.utils.Constants
import com.navi.payment.utils.Constants.EMPTY_TOKEN_ERROR
import com.navi.payment.utils.getErrorData
import com.navi.payment.utils.getPMSMetricInfo
import com.navi.paymentclients.model.thirdparty.UpiResultResponse
import dagger.hilt.android.lifecycle.HiltViewModel
import javax.inject.Inject
@@ -136,7 +141,7 @@ constructor(
private fun initiate() {
var showBottomSheet = false
var screenState: WebPaymentScreenState
val screenState: WebPaymentScreenState
when (webPayAction) {
WebPaymentAction.WEB_VIEW_ONBOARDING -> {
screenState = WebPaymentScreenState.Init
@@ -203,7 +208,18 @@ constructor(
token = (webPaymentData as? WebPaymentData.WebSendMoneyData)?.token.orEmpty()
if (token.isNotNullAndNotEmpty()) {
val response =
paymentRepository.fetchScreenData(token, paymentPrefetchMethodRequest)
paymentRepository.fetchScreenData(
token,
paymentPrefetchMethodRequest,
getPMSMetricInfo(
screenName =
NaviPaymentAnalyticScreenName.WEB_PAYMENT_SCREEN.screenName,
isNae = { response ->
!(response.isSuccessWithData() &&
(response.data as? S2sPaymentMethodResponse).isNotNull())
}
)
)
if (
response.isSuccessWithData() &&
(response.data as? S2sPaymentMethodResponse).isNotNull()
@@ -214,7 +230,7 @@ constructor(
showBottomSheet = true,
bottomSheetUIState =
WebPaymentScreenState.Error(
PaymentErrorData(error = response.errors?.firstOrNull())
PaymentErrorData(error = response.toGenericErrorResponse())
),
bottomSheetStateChange = true
)
@@ -222,6 +238,12 @@ constructor(
isDismissAllowed = true
}
} else {
CheckMateManager.logAppErrorEvent(
metricInfo = MetricInfo.PMSMetric<Any>(screen = screenName),
errorCode = MPSErrorReason.TokenNotFoundError.toString(),
errorTitle = resourceProvider.getString(R.string.something_went_wrong),
errorDes = resourceProvider.getString(R.string.technical_issue),
)
updateBottomSheetUIState(
showBottomSheet = true,
bottomSheetUIState =
@@ -347,9 +369,12 @@ constructor(
payerBankAccountId = accountId,
accountType = linkedAccountType
),
),
getPMSMetricInfo(
screenName = NaviPaymentAnalyticScreenName.WEB_PAYMENT_SCREEN.screenName
)
)
if (response.error.isNull() && response.errors.isNullOrEmpty()) {
if (response.isSuccessWithData()) {
paymentDataProvider.add(
TRANSACTION_REFERENCE_ID,
response.data?.transactionReferenceId.orEmpty()
@@ -364,7 +389,7 @@ constructor(
updateBottomSheetUIState(
true,
WebPaymentScreenState.Error(
PaymentErrorData(error = response.errors?.firstOrNull())
PaymentErrorData(error = response.toGenericErrorResponse())
)
)
}

View File

@@ -16,7 +16,6 @@ import com.navi.payment.model.initiatesdk.PaymentPrefetchMethodRequest
import com.navi.payment.model.paymentmethod.GenericPaymentMethodResponse
import com.navi.payment.model.paymentmethod.PaymentMethodResponse
import com.navi.payment.model.paymentresult.PaymentPrefetchMethodDetailsResponse
import com.navi.payment.nativepayment.model.NetBankingPaymentInstrument
import com.navi.payment.network.retrofit.RetrofitService
import com.navi.payment.network.util.PaymentsSdkRetrofit
import com.navi.payment.paymentscreen.model.PayNowResponse
@@ -88,10 +87,6 @@ constructor(@PaymentsSdkRetrofit private val retrofitService: RetrofitService) :
return apiResponseCallback(retrofitService.fetchAllBanks(token, PAYMENT_GATEWAY_MODULE))
}
suspend fun fetchBanksCompose(token: String): RepoResult<NetBankingPaymentInstrument> {
return apiResponseCallback(retrofitService.fetchBanksCompose(token, PAYMENT_GATEWAY_MODULE))
}
suspend fun fetchBankByName(
token: String,
bankName: String

View File

@@ -13,7 +13,10 @@ import com.navi.base.model.CtaData
import com.navi.base.utils.BaseUtils
import com.navi.base.utils.orFalse
import com.navi.base.utils.orZero
import com.navi.common.checkmate.model.MetricInfo
import com.navi.common.network.models.GenericErrorResponse
import com.navi.common.network.models.RepoResult
import com.navi.common.network.models.isSuccessWithData
import com.navi.naviwidgets.models.response.Action
import com.navi.payment.R
import com.navi.payment.model.initiatesdk.PaymentPrefetchDetail
@@ -145,3 +148,10 @@ fun getInstalledUpiApps(): PaymentPrefetchDetail {
)
)
}
fun <T> getPMSMetricInfo(
screenName: String,
isNae: (RepoResult<T>) -> Boolean = { !it.isSuccessWithData() }
): MetricInfo<RepoResult<T>> {
return MetricInfo.PMSMetric(screenName, isNae = isNae)
}