Skip to content

Commit 8c7135d

Browse files
Remove all direct ApiConfiguration.State DI injections
Every Dagger-injected instance of ApiConfiguration.State is now () -> ApiConfiguration.State. This eliminates all possible eager resolution at component construction time. Deleted ApiConfigurationStateFromProviderModule — no longer needed since nothing injects ApiConfiguration.State directly from Dagger. Classes updated: - PaymentAnalyticsRequestFactory (@Inject constructor) - DefaultPaymentNextActionHandlerRegistry (@Inject constructor) - PaymentLauncherModule (@provides) - CustomerSheetViewModel (constructor) - AttestationComponent (@BindsInstance) - AutocompleteViewModelFactoryComponent (@BindsInstance) - AddressElementViewModelFactoryComponent (@BindsInstance) - TapToAddCollectionHandler / TapToAddModule Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Committed-By-Agent: claude
1 parent 1d018c5 commit 8c7135d

32 files changed

Lines changed: 41 additions & 81 deletions

payments-core/src/main/java/com/stripe/android/challenge/confirmation/di/IntentConfirmationChallengeComponent.kt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import com.stripe.android.challenge.confirmation.IntentConfirmationChallengeView
77
import com.stripe.android.core.injection.CoreCommonModule
88
import com.stripe.android.core.injection.CoroutineContextModule
99
import com.stripe.android.networking.PaymentElementRequestSurfaceModule
10-
import com.stripe.android.payments.core.injection.ApiConfigurationStateFromProviderModule
1110
import com.stripe.android.payments.core.injection.ApiRequestOptionsModule
1211
import com.stripe.android.payments.core.injection.StripeRepositoryModule
1312
import dagger.BindsInstance
@@ -25,7 +24,6 @@ import javax.inject.Singleton
2524
CoroutineContextModule::class,
2625
StripeRepositoryModule::class,
2726
PaymentElementRequestSurfaceModule::class,
28-
ApiConfigurationStateFromProviderModule::class,
2927
ApiRequestOptionsModule::class,
3028
]
3129
)

payments-core/src/main/java/com/stripe/android/challenge/passive/PassiveChallengeComponent.kt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ import com.stripe.android.core.injection.CoreCommonModule
66
import com.stripe.android.core.injection.CoroutineContextModule
77
import com.stripe.android.hcaptcha.HCaptchaModule
88
import com.stripe.android.model.PassiveCaptchaParams
9-
import com.stripe.android.payments.core.injection.ApiConfigurationStateFromProviderModule
109
import com.stripe.android.payments.core.injection.PRODUCT_USAGE
1110
import com.stripe.android.payments.core.injection.StripeRepositoryModule
1211
import dagger.BindsInstance
@@ -22,7 +21,6 @@ import javax.inject.Singleton
2221
StripeRepositoryModule::class,
2322
CoreCommonModule::class,
2423
CoroutineContextModule::class,
25-
ApiConfigurationStateFromProviderModule::class,
2624
]
2725
)
2826
internal interface PassiveChallengeComponent {

payments-core/src/main/java/com/stripe/android/challenge/passive/warmer/activity/PassiveChallengeWarmerActivityComponent.kt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import com.stripe.android.core.injection.CoreCommonModule
77
import com.stripe.android.core.injection.CoroutineContextModule
88
import com.stripe.android.hcaptcha.HCaptchaModule
99
import com.stripe.android.model.PassiveCaptchaParams
10-
import com.stripe.android.payments.core.injection.ApiConfigurationStateFromProviderModule
1110
import com.stripe.android.payments.core.injection.PRODUCT_USAGE
1211
import com.stripe.android.payments.core.injection.StripeRepositoryModule
1312
import dagger.BindsInstance
@@ -23,7 +22,6 @@ import javax.inject.Singleton
2322
StripeRepositoryModule::class,
2423
CoreCommonModule::class,
2524
CoroutineContextModule::class,
26-
ApiConfigurationStateFromProviderModule::class,
2725
]
2826
)
2927
internal interface PassiveChallengeWarmerActivityComponent {

payments-core/src/main/java/com/stripe/android/networking/PaymentAnalyticsRequestFactory.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,13 +68,13 @@ class PaymentAnalyticsRequestFactory @VisibleForTesting internal constructor(
6868
@Inject
6969
internal constructor(
7070
context: Context,
71-
apiConfigurationState: ApiConfiguration.State,
71+
apiConfigurationProvider: Provider<() -> ApiConfiguration.State>,
7272
@Named(PRODUCT_USAGE) defaultProductUsageTokens: Set<String>
7373
) : this(
7474
packageManager = context.applicationContext.packageManager,
7575
packageInfo = context.applicationContext.packageInfo,
7676
packageName = context.applicationContext.packageName.orEmpty(),
77-
publishableKeyProvider = Provider { apiConfigurationState.publishableKey },
77+
publishableKeyProvider = Provider { apiConfigurationProvider.get()().publishableKey },
7878
networkTypeProvider = NetworkTypeDetector(context)::invoke,
7979
defaultProductUsageTokens = defaultProductUsageTokens,
8080
)

payments-core/src/main/java/com/stripe/android/payments/bankaccount/di/CollectBankAccountComponent.kt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ import com.stripe.android.networking.PaymentElementRequestSurfaceModule
88
import com.stripe.android.payments.bankaccount.navigation.CollectBankAccountContract
99
import com.stripe.android.payments.bankaccount.ui.CollectBankAccountViewEffect
1010
import com.stripe.android.payments.bankaccount.ui.CollectBankAccountViewModel
11-
import com.stripe.android.payments.core.injection.ApiConfigurationStateFromProviderModule
1211
import com.stripe.android.payments.core.injection.StripeRepositoryModule
1312
import dagger.BindsInstance
1413
import dagger.Component
@@ -23,7 +22,6 @@ import javax.inject.Singleton
2322
StripeRepositoryModule::class,
2423
PaymentElementRequestSurfaceModule::class,
2524
CoreCommonModule::class,
26-
ApiConfigurationStateFromProviderModule::class,
2725
]
2826
)
2927
internal interface CollectBankAccountComponent {

payments-core/src/main/java/com/stripe/android/payments/core/authentication/DefaultPaymentNextActionHandlerRegistry.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,14 +36,14 @@ internal class DefaultPaymentNextActionHandlerRegistry @Inject internal construc
3636
@IntentAuthenticatorMap private val paymentNextActionHandlers: Map<NextActionHandlerKey, NextActionHandler>,
3737
@Named(INCLUDE_PAYMENT_SHEET_NEXT_ACTION_HANDLERS) private val includePaymentSheetNextActionHandlers: Boolean,
3838
applicationContext: Context,
39-
apiConfigurationState: ApiConfiguration.State,
39+
apiConfigurationProvider: () -> ApiConfiguration.State,
4040
) : PaymentNextActionHandlerRegistry {
4141

4242
private val paymentSheetNextActionHandlers: Map<NextActionHandlerKey, NextActionHandler> by lazy {
4343
paymentSheetNextActionHandlers(
4444
includePaymentSheetNextActionHandlers,
4545
applicationContext,
46-
apiConfigurationState.publishableKey,
46+
apiConfigurationProvider().publishableKey,
4747
)
4848
}
4949

payments-core/src/main/java/com/stripe/android/payments/core/injection/ApiConfigurationFromPaymentConfigurationModule.kt

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -25,21 +25,6 @@ class ApiConfigurationFromPaymentConfigurationModule {
2525
}
2626
}
2727

28-
/**
29-
* Eagerly evaluates a `() -> ApiConfiguration.State` provider function to produce an
30-
* [ApiConfiguration.State] instance. Use this in components that only have a
31-
* `() -> ApiConfiguration.State` binding and need to satisfy dependencies that
32-
* take [ApiConfiguration.State] directly.
33-
*/
34-
@RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
35-
@Module
36-
class ApiConfigurationStateFromProviderModule {
37-
@Provides
38-
fun provideApiConfigurationState(
39-
provider: () -> ApiConfiguration.State
40-
): ApiConfiguration.State = provider()
41-
}
42-
4328
@RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
4429
@Module
4530
class ApiRequestOptionsModule {

payments-core/src/main/java/com/stripe/android/payments/core/injection/NextActionHandlerComponent.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@ import kotlin.coroutines.CoroutineContext
2929
WeChatPayNextActionHandlerModule::class,
3030
CoreCommonModule::class,
3131
StripeRepositoryModule::class,
32-
ApiConfigurationStateFromProviderModule::class,
3332
]
3433
)
3534
internal interface NextActionHandlerComponent {

payments-core/src/main/java/com/stripe/android/payments/core/injection/PaymentLauncherModule.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ internal class PaymentLauncherModule {
3838
@IOContext workContext: CoroutineContext,
3939
@UIContext uiContext: CoroutineContext,
4040
paymentAnalyticsRequestFactory: PaymentAnalyticsRequestFactory,
41-
apiConfigurationState: ApiConfiguration.State,
41+
apiConfigurationProvider: () -> ApiConfiguration.State,
4242
@Named(PRODUCT_USAGE) productUsage: Set<String>,
4343
@Named(IS_INSTANT_APP) isInstantApp: Boolean,
4444
@Named(INCLUDE_PAYMENT_SHEET_NEXT_ACTION_HANDLERS) includePaymentSheetNextHandlers: Boolean,
@@ -48,7 +48,7 @@ internal class PaymentLauncherModule {
4848
enableLogging = enableLogging,
4949
workContext = workContext,
5050
uiContext = uiContext,
51-
apiConfigurationState = apiConfigurationState,
51+
apiConfigurationState = apiConfigurationProvider(),
5252
productUsage = productUsage,
5353
isInstantApp = isInstantApp,
5454
includePaymentSheetNextActionHandlers = includePaymentSheetNextHandlers,

payments-core/src/main/java/com/stripe/android/payments/core/injection/PaymentLauncherViewModelFactoryComponent.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ import javax.inject.Singleton
1616
@Component(
1717
modules = [
1818
PaymentLauncherModule::class,
19-
ApiConfigurationStateFromProviderModule::class,
2019
ApiRequestOptionsModule::class,
2120
StripeRepositoryModule::class,
2221
PaymentElementRequestSurfaceModule::class,

0 commit comments

Comments
 (0)