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"