From 6ab95da7557d0a4cf1fdbe192dab48aaf2b8a974 Mon Sep 17 00:00:00 2001
From: Michael Shafrir <45020849+mshafrir-stripe@users.noreply.github.com>
Date: Mon, 22 Jun 2020 15:55:02 -0400
Subject: [PATCH] Remove PaymentSession and CustomerSession's "Activity"
Listeners (#2610)
Remove the following classes:
- `PaymentSession#ActivityPaymentSessionListener`
- `CustomerSession#ActivityCustomerRetrievalListener`
- `CustomerSession#ActivityPaymentMethodRetrievalListener`
- `CustomerSession#ActivityPaymentMethodsRetrievalListener`
- `CustomerSession#ActivitySourceRetrievalListener`
Motivation
- Simplify API
- Users should handle Activity lifecycle
---
MIGRATING.md | 4 ++
.../com/stripe/android/CustomerSession.kt | 38 -------------------
.../java/com/stripe/android/PaymentSession.kt | 14 -------
3 files changed, 4 insertions(+), 52 deletions(-)
diff --git a/MIGRATING.md b/MIGRATING.md
index e3a065bde79..3949f9444cb 100644
--- a/MIGRATING.md
+++ b/MIGRATING.md
@@ -68,6 +68,8 @@
else -> {}
}
```
+- Changes to `PaymentSession`
+ - Remove `PaymentSession#ActivityPaymentSessionListener`
- Changes to `CustomerSession`
- `CustomerSession`'s constructor no longer takes a `stripeAccountId`;
instead, instantiate `PaymentConfiguration` with a `stripeAccountId`
@@ -94,6 +96,8 @@
ephemeralKeyProvider
)
```
+ - Remove `CustomerSession#ActivityCustomerRetrievalListener`, `CustomerSession#ActivityPaymentMethodRetrievalListener`,
+ `CustomerSession#ActivityPaymentMethodsRetrievalListener`, and `CustomerSession#ActivitySourceRetrievalListener`
- Changes to `AddPaymentMethodActivity`
- When `PaymentConfiguration` is instantiated with a `stripeAccountId`, it will be used in `AddPaymentMethodActivity`
when creating a payment method
diff --git a/stripe/src/main/java/com/stripe/android/CustomerSession.kt b/stripe/src/main/java/com/stripe/android/CustomerSession.kt
index a8c707c1735..800f68ef4b1 100644
--- a/stripe/src/main/java/com/stripe/android/CustomerSession.kt
+++ b/stripe/src/main/java/com/stripe/android/CustomerSession.kt
@@ -1,6 +1,5 @@
package com.stripe.android
-import android.app.Activity
import android.content.Context
import android.os.Handler
import androidx.annotation.IntRange
@@ -12,7 +11,6 @@ import com.stripe.android.model.PaymentMethod
import com.stripe.android.model.ShippingInformation
import com.stripe.android.model.Source
import com.stripe.android.model.Source.SourceType
-import java.lang.ref.WeakReference
import java.util.Calendar
import java.util.concurrent.LinkedBlockingQueue
import java.util.concurrent.ThreadPoolExecutor
@@ -465,12 +463,6 @@ class CustomerSession @VisibleForTesting internal constructor(
return listeners.remove(operationId) as L?
}
- abstract class ActivityCustomerRetrievalListener(activity: A) : CustomerRetrievalListener {
- private val activityRef: WeakReference = WeakReference(activity)
- protected val activity: A?
- get() = activityRef.get()
- }
-
interface CustomerRetrievalListener : RetrievalListener {
fun onCustomerRetrieved(customer: Customer)
}
@@ -491,36 +483,6 @@ class CustomerSession @VisibleForTesting internal constructor(
fun onError(errorCode: Int, errorMessage: String, stripeError: StripeError?)
}
- /**
- * Abstract implementation of [PaymentMethodsRetrievalListener] that holds a
- * [WeakReference] to an `Activity` object.
- */
- abstract class ActivityPaymentMethodsRetrievalListener(activity: A) : PaymentMethodsRetrievalListener {
- private val activityRef: WeakReference = WeakReference(activity)
- protected val activity: A?
- get() = activityRef.get()
- }
-
- /**
- * Abstract implementation of [SourceRetrievalListener] that holds a
- * [WeakReference] to an `Activity` object.
- */
- abstract class ActivitySourceRetrievalListener(activity: A) : SourceRetrievalListener {
- private val activityRef: WeakReference = WeakReference(activity)
- protected val activity: A?
- get() = activityRef.get()
- }
-
- /**
- * Abstract implementation of [PaymentMethodRetrievalListener] that holds a
- * [WeakReference] to an `Activity` object.
- */
- abstract class ActivityPaymentMethodRetrievalListener(activity: A) : PaymentMethodRetrievalListener {
- private val activityRef: WeakReference = WeakReference(activity)
- protected val activity: A?
- get() = activityRef.get()
- }
-
companion object {
// The maximum number of active threads we support
private const val THREAD_POOL_SIZE = 3
diff --git a/stripe/src/main/java/com/stripe/android/PaymentSession.kt b/stripe/src/main/java/com/stripe/android/PaymentSession.kt
index 2931d5a0a23..d4c87dd56e2 100644
--- a/stripe/src/main/java/com/stripe/android/PaymentSession.kt
+++ b/stripe/src/main/java/com/stripe/android/PaymentSession.kt
@@ -22,7 +22,6 @@ import com.stripe.android.view.PaymentFlowActivity
import com.stripe.android.view.PaymentFlowActivityStarter
import com.stripe.android.view.PaymentMethodsActivity
import com.stripe.android.view.PaymentMethodsActivityStarter
-import java.lang.ref.WeakReference
/**
* Represents a single start-to-finish payment operation.
@@ -311,19 +310,6 @@ class PaymentSession @VisibleForTesting internal constructor(
fun onPaymentSessionDataChanged(data: PaymentSessionData)
}
- /**
- * Abstract implementation of [PaymentSessionListener] that holds a
- * [WeakReference] to an `Activity` object.
- */
- abstract class ActivityPaymentSessionListener(
- activity: A
- ) : PaymentSessionListener {
- private val activityRef: WeakReference = WeakReference(activity)
-
- protected val listenerActivity: A?
- get() = activityRef.get()
- }
-
internal companion object {
internal const val PRODUCT_TOKEN: String = "PaymentSession"