From 2447b2f18bd0a67415469084f803aa94f2ea0044 Mon Sep 17 00:00:00 2001
From: Tim Chow <tichow@paypal.com>
Date: Wed, 18 Dec 2024 09:20:07 -0600
Subject: [PATCH] Update all AnalyticsEventParams properties to vals (#1243)

---
 .../api/core/AnalyticsEventParams.kt          | 12 +--
 .../api/localpayment/LocalPaymentClient.kt    |  5 +-
 .../LocalPaymentClientUnitTest.java           |  5 +-
 .../api/paypal/PayPalClientUnitTest.java      | 90 +++++++++++--------
 .../api/venmo/VenmoClient.kt                  | 10 ++-
 .../api/venmo/VenmoClientUnitTest.java        |  8 +-
 6 files changed, 77 insertions(+), 53 deletions(-)

diff --git a/BraintreeCore/src/main/java/com/braintreepayments/api/core/AnalyticsEventParams.kt b/BraintreeCore/src/main/java/com/braintreepayments/api/core/AnalyticsEventParams.kt
index fa309fb55b..fbebf15c20 100644
--- a/BraintreeCore/src/main/java/com/braintreepayments/api/core/AnalyticsEventParams.kt
+++ b/BraintreeCore/src/main/java/com/braintreepayments/api/core/AnalyticsEventParams.kt
@@ -20,12 +20,12 @@ import androidx.annotation.RestrictTo
  */
 @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
 data class AnalyticsEventParams @JvmOverloads constructor(
-    var payPalContextId: String? = null,
-    var linkType: String? = null,
-    var isVaultRequest: Boolean = false,
-    var startTime: Long? = null,
-    var endTime: Long? = null,
-    var endpoint: String? = null,
+    val payPalContextId: String? = null,
+    val linkType: String? = null,
+    val isVaultRequest: Boolean = false,
+    val startTime: Long? = null,
+    val endTime: Long? = null,
+    val endpoint: String? = null,
     val experiment: String? = null,
     val paymentMethodsDisplayed: List<String> = emptyList(),
     val appSwitchUrl: String? = null
diff --git a/LocalPayment/src/main/java/com/braintreepayments/api/localpayment/LocalPaymentClient.kt b/LocalPayment/src/main/java/com/braintreepayments/api/localpayment/LocalPaymentClient.kt
index 71f91792b0..f1cbf98d85 100644
--- a/LocalPayment/src/main/java/com/braintreepayments/api/localpayment/LocalPaymentClient.kt
+++ b/LocalPayment/src/main/java/com/braintreepayments/api/localpayment/LocalPaymentClient.kt
@@ -213,8 +213,9 @@ class LocalPaymentClient internal constructor(
     }
 
     private fun sendAnalyticsEvent(eventName: String) {
-        val eventParameters = AnalyticsEventParams()
-        eventParameters.payPalContextId = payPalContextId
+        val eventParameters = AnalyticsEventParams(
+            payPalContextId = payPalContextId
+        )
         braintreeClient.sendAnalyticsEvent(eventName, eventParameters)
     }
 
diff --git a/LocalPayment/src/test/java/com/braintreepayments/api/localpayment/LocalPaymentClientUnitTest.java b/LocalPayment/src/test/java/com/braintreepayments/api/localpayment/LocalPaymentClientUnitTest.java
index 22f8b84217..360a64feba 100644
--- a/LocalPayment/src/test/java/com/braintreepayments/api/localpayment/LocalPaymentClientUnitTest.java
+++ b/LocalPayment/src/test/java/com/braintreepayments/api/localpayment/LocalPaymentClientUnitTest.java
@@ -375,8 +375,9 @@ public void createPaymentAuthRequest_success_withPaymentId_sendsAnalyticsEvents(
         sut.createPaymentAuthRequest(getIdealLocalPaymentRequest(), localPaymentAuthCallback);
 
         verify(braintreeClient).sendAnalyticsEvent(LocalPaymentAnalytics.PAYMENT_STARTED, new AnalyticsEventParams());
-        AnalyticsEventParams params = new AnalyticsEventParams();
-        params.setPayPalContextId("some-paypal-context-id");
+        AnalyticsEventParams params = new AnalyticsEventParams(
+            "some-paypal-context-id"
+        );
         verify(braintreeClient).sendAnalyticsEvent(LocalPaymentAnalytics.BROWSER_SWITCH_SUCCEEDED, params);
     }
 
diff --git a/PayPal/src/test/java/com/braintreepayments/api/paypal/PayPalClientUnitTest.java b/PayPal/src/test/java/com/braintreepayments/api/paypal/PayPalClientUnitTest.java
index 07f0418064..5f084a0072 100644
--- a/PayPal/src/test/java/com/braintreepayments/api/paypal/PayPalClientUnitTest.java
+++ b/PayPal/src/test/java/com/braintreepayments/api/paypal/PayPalClientUnitTest.java
@@ -284,8 +284,11 @@ public void createPaymentAuthRequest_whenPayPalNotEnabled_returnsError() {
                 "for more information.",
             ((PayPalPaymentAuthRequest.Failure) request).getError().getMessage());
 
-        AnalyticsEventParams params = new AnalyticsEventParams();
-        params.setVaultRequest(false);
+        AnalyticsEventParams params = new AnalyticsEventParams(
+            null,
+            null,
+            false
+        );
         verify(braintreeClient).sendAnalyticsEvent(PayPalAnalytics.TOKENIZATION_FAILED, params);
     }
 
@@ -309,8 +312,11 @@ public void createPaymentAuthRequest_whenCheckoutRequest_whenConfigError_forward
         assertTrue(request instanceof PayPalPaymentAuthRequest.Failure);
         assertEquals(authError, ((PayPalPaymentAuthRequest.Failure) request).getError());
 
-        AnalyticsEventParams params = new AnalyticsEventParams();
-        params.setVaultRequest(false);
+        AnalyticsEventParams params = new AnalyticsEventParams(
+            null,
+            null,
+            false
+        );
         verify(braintreeClient).sendAnalyticsEvent(PayPalAnalytics.TOKENIZATION_FAILED, params);
     }
 
@@ -334,8 +340,11 @@ public void requestBillingAgreement_whenConfigError_forwardsErrorToListener() {
         assertTrue(request instanceof PayPalPaymentAuthRequest.Failure);
         assertEquals(authError, ((PayPalPaymentAuthRequest.Failure) request).getError());
 
-        AnalyticsEventParams params = new AnalyticsEventParams();
-        params.setVaultRequest(true);
+        AnalyticsEventParams params = new AnalyticsEventParams(
+            null,
+            null,
+            true
+        );
         verify(braintreeClient).sendAnalyticsEvent(PayPalAnalytics.TOKENIZATION_FAILED, params);
     }
 
@@ -414,9 +423,11 @@ public void createPaymentAuthRequest_whenVaultRequest_sendsAppSwitchStartedEvent
         assertFalse(browserSwitchOptions.isLaunchAsNewTask());
 
 
-        AnalyticsEventParams params = new AnalyticsEventParams();
-        params.setVaultRequest(true);
-        params.setLinkType("universal");
+        AnalyticsEventParams params = new AnalyticsEventParams(
+            null,
+            "universal",
+            true
+        );
         verify(braintreeClient).sendAnalyticsEvent(PayPalAnalytics.APP_SWITCH_STARTED, params);
     }
 
@@ -541,8 +552,11 @@ public void tokenize_whenCancelUriReceived_notifiesCancellationAndSendsAnalytics
         PayPalResult result = captor.getValue();
         assertTrue(result instanceof PayPalResult.Cancel);
 
-        AnalyticsEventParams params = new AnalyticsEventParams();
-        params.setVaultRequest(false);
+        AnalyticsEventParams params = new AnalyticsEventParams(
+            null,
+            null,
+            false
+        );
         verify(braintreeClient).sendAnalyticsEvent(PayPalAnalytics.BROWSER_LOGIN_CANCELED, params);
     }
 
@@ -582,9 +596,11 @@ public void tokenize_whenPayPalInternalClientTokenizeResult_callsBackResult()
         assertTrue(result instanceof PayPalResult.Success);
         assertEquals(payPalAccountNonce, ((PayPalResult.Success) result).getNonce());
 
-        AnalyticsEventParams params = new AnalyticsEventParams();
-        params.setPayPalContextId("EC-HERMES-SANDBOX-EC-TOKEN");
-        params.setVaultRequest(false);
+        AnalyticsEventParams params = new AnalyticsEventParams(
+            "EC-HERMES-SANDBOX-EC-TOKEN",
+            null,
+            false
+        );
         verify(braintreeClient).sendAnalyticsEvent(PayPalAnalytics.TOKENIZATION_SUCCEEDED, params);
     }
 
@@ -624,19 +640,20 @@ public void tokenize_whenPayPalInternalClientTokenizeResult_sendsAppSwitchSuccee
         assertTrue(result instanceof PayPalResult.Success);
         assertEquals(payPalAccountNonce, ((PayPalResult.Success) result).getNonce());
 
-        AnalyticsEventParams params = new AnalyticsEventParams();
-        params.setPayPalContextId("EC-HERMES-SANDBOX-EC-TOKEN");
+        AnalyticsEventParams params = new AnalyticsEventParams(
+            "EC-HERMES-SANDBOX-EC-TOKEN"
+        );
         verify(braintreeClient).sendAnalyticsEvent(PayPalAnalytics.TOKENIZATION_SUCCEEDED, params);
         AnalyticsEventParams appSwitchParams = new AnalyticsEventParams(
-                "EC-HERMES-SANDBOX-EC-TOKEN",
-                null,
-                false,
-                null,
-                null,
-                null,
-                null,
-                emptyList(),
-                "sample-scheme://onetouch/v1/success?PayerID=HERMES-SANDBOX-PAYER-ID&paymentId=HERMES-SANDBOX-PAYMENT-ID&token=EC-HERMES-SANDBOX-EC-TOKEN&switch_initiated_time=17166111926211"
+            "EC-HERMES-SANDBOX-EC-TOKEN",
+            null,
+            false,
+            null,
+            null,
+            null,
+            null,
+            emptyList(),
+            "sample-scheme://onetouch/v1/success?PayerID=HERMES-SANDBOX-PAYER-ID&paymentId=HERMES-SANDBOX-PAYMENT-ID&token=EC-HERMES-SANDBOX-EC-TOKEN&switch_initiated_time=17166111926211"
         );
         verify(braintreeClient).sendAnalyticsEvent(PayPalAnalytics.APP_SWITCH_SUCCEEDED, appSwitchParams);
     }
@@ -666,19 +683,20 @@ public void tokenize_whenPayPalNotEnabled_sendsAppSwitchFailedEvents() throws JS
 
         sut.tokenize(payPalPaymentAuthResult, payPalTokenizeCallback);
 
-        AnalyticsEventParams params = new AnalyticsEventParams();
-        params.setPayPalContextId("SOME-BA");
+        AnalyticsEventParams params = new AnalyticsEventParams(
+            "SOME-BA"
+        );
         verify(braintreeClient).sendAnalyticsEvent(PayPalAnalytics.TOKENIZATION_FAILED, params);
         AnalyticsEventParams appSwitchParams = new AnalyticsEventParams(
-                "SOME-BA",
-                null,
-                false,
-                null,
-                null,
-                null,
-                null,
-                emptyList(),
-                "https://some-scheme/onetouch/v1/cancel?token=SOME-BA&switch_initiated_time=17166111926211"
+            "SOME-BA",
+            null,
+            false,
+            null,
+            null,
+            null,
+            null,
+            emptyList(),
+            "https://some-scheme/onetouch/v1/cancel?token=SOME-BA&switch_initiated_time=17166111926211"
         );
         verify(braintreeClient).sendAnalyticsEvent(PayPalAnalytics.APP_SWITCH_FAILED, appSwitchParams);
     }
diff --git a/Venmo/src/main/java/com/braintreepayments/api/venmo/VenmoClient.kt b/Venmo/src/main/java/com/braintreepayments/api/venmo/VenmoClient.kt
index efaef70666..754186192d 100644
--- a/Venmo/src/main/java/com/braintreepayments/api/venmo/VenmoClient.kt
+++ b/Venmo/src/main/java/com/braintreepayments/api/venmo/VenmoClient.kt
@@ -387,10 +387,12 @@ class VenmoClient internal constructor(
 
     private val analyticsParams: AnalyticsEventParams
         get() {
-            val eventParameters = AnalyticsEventParams(appSwitchUrl = venmoRepository.venmoUrl.toString())
-            eventParameters.payPalContextId = payPalContextId
-            eventParameters.linkType = LINK_TYPE
-            eventParameters.isVaultRequest = isVaultRequest
+            val eventParameters = AnalyticsEventParams(
+                payPalContextId = payPalContextId,
+                linkType = LINK_TYPE,
+                isVaultRequest = isVaultRequest,
+                appSwitchUrl = venmoRepository.venmoUrl.toString(),
+            )
             return eventParameters
         }
 
diff --git a/Venmo/src/test/java/com/braintreepayments/api/venmo/VenmoClientUnitTest.java b/Venmo/src/test/java/com/braintreepayments/api/venmo/VenmoClientUnitTest.java
index b0d0925f73..6807891f72 100644
--- a/Venmo/src/test/java/com/braintreepayments/api/venmo/VenmoClientUnitTest.java
+++ b/Venmo/src/test/java/com/braintreepayments/api/venmo/VenmoClientUnitTest.java
@@ -960,9 +960,11 @@ public void tokenize_withFailedVaultCall_forwardsErrorToActivityResultListener_a
         assertTrue(result instanceof VenmoResult.Failure);
         assertEquals(error, ((VenmoResult.Failure) result).getError());
 
-        AnalyticsEventParams params = new AnalyticsEventParams();
-        params.setLinkType(LINK_TYPE);
-        params.setVaultRequest(true);
+        AnalyticsEventParams params = new AnalyticsEventParams(
+            null,
+            LINK_TYPE,
+            true
+        );
         verify(braintreeClient).sendAnalyticsEvent(VenmoAnalytics.TOKENIZE_FAILED, expectedVaultAnalyticsParams);
     }