From bccf33c7f502a532b7049a28929a847de19cf24e Mon Sep 17 00:00:00 2001 From: Chengtin Tsai Date: Tue, 4 Nov 2025 16:40:09 -0800 Subject: [PATCH] Enable confirmation token by default in playground MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Set ConfirmationTokenSettingsDefinition default value to true - Auto-enable CustomerSessionSettingsDefinition when confirmation token is enabled - Hide CustomerSessionSettingsDefinition from UI when confirmation token is active 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Committed-By-Agent: claude --- .../ConfirmationTokenSettingsDefinition.kt | 8 +++++++- .../example/playground/settings/SettingsUI.kt | 18 ++++++++++++++++-- 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/paymentsheet-example/src/main/java/com/stripe/android/paymentsheet/example/playground/settings/ConfirmationTokenSettingsDefinition.kt b/paymentsheet-example/src/main/java/com/stripe/android/paymentsheet/example/playground/settings/ConfirmationTokenSettingsDefinition.kt index 9193c8a9c65..be700c53aea 100644 --- a/paymentsheet-example/src/main/java/com/stripe/android/paymentsheet/example/playground/settings/ConfirmationTokenSettingsDefinition.kt +++ b/paymentsheet-example/src/main/java/com/stripe/android/paymentsheet/example/playground/settings/ConfirmationTokenSettingsDefinition.kt @@ -5,7 +5,7 @@ import com.stripe.android.paymentsheet.example.playground.model.CheckoutRequest internal object ConfirmationTokenSettingsDefinition : BooleanSettingsDefinition( key = "confirmationToken", displayName = "Use Confirmation Token", - defaultValue = false, + defaultValue = true, ) { override fun applicable(configurationData: PlaygroundConfigurationData): Boolean { return configurationData.integrationType.isPaymentFlow() @@ -14,4 +14,10 @@ internal object ConfirmationTokenSettingsDefinition : BooleanSettingsDefinition( override fun configure(value: Boolean, checkoutRequestBuilder: CheckoutRequest.Builder) { checkoutRequestBuilder.isConfirmationToken(value) } + + override fun valueUpdated(value: Boolean, playgroundSettings: PlaygroundSettings) { + if (value) { + playgroundSettings[CustomerSessionSettingsDefinition] = true + } + } } diff --git a/paymentsheet-example/src/main/java/com/stripe/android/paymentsheet/example/playground/settings/SettingsUI.kt b/paymentsheet-example/src/main/java/com/stripe/android/paymentsheet/example/playground/settings/SettingsUI.kt index e01262f1c69..3abb3dde97a 100644 --- a/paymentsheet-example/src/main/java/com/stripe/android/paymentsheet/example/playground/settings/SettingsUI.kt +++ b/paymentsheet-example/src/main/java/com/stripe/android/paymentsheet/example/playground/settings/SettingsUI.kt @@ -34,8 +34,22 @@ internal fun SettingsUi( ) { val configurationData by playgroundSettings.configurationData.collectAsState() val displayableDefinitions by playgroundSettings.displayableDefinitions.collectAsState() - val filteredDefinitions = remember(displayableDefinitions, searchQuery) { - displayableDefinitions.filter { it.displayName.matchesQuery(searchQuery) } + val confirmationTokenEnabled by playgroundSettings[ConfirmationTokenSettingsDefinition].collectAsState() + + val filteredDefinitions = remember( + displayableDefinitions, + searchQuery, + confirmationTokenEnabled + ) { + displayableDefinitions + .filter { definition -> + // Hide CustomerSessionSettingsDefinition when ConfirmationToken is enabled + if (definition == CustomerSessionSettingsDefinition && confirmationTokenEnabled) { + false + } else { + definition.displayName.matchesQuery(searchQuery) + } + } } Column(