@stripe/stripe-react-native 0.55.1 → 0.57.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (126) hide show
  1. package/android/gradle.properties +1 -1
  2. package/android/src/main/java/com/reactnativestripesdk/AuBECSDebitFormView.kt +4 -3
  3. package/android/src/main/java/com/reactnativestripesdk/CardFieldView.kt +7 -6
  4. package/android/src/main/java/com/reactnativestripesdk/CardFormView.kt +11 -11
  5. package/android/src/main/java/com/reactnativestripesdk/{CollectBankAccountLauncherFragment.kt → CollectBankAccountLauncherManager.kt} +21 -44
  6. package/android/src/main/java/com/reactnativestripesdk/EmbeddedPaymentElementViewManager.kt +17 -24
  7. package/android/src/main/java/com/reactnativestripesdk/EventEmitterCompat.kt +8 -0
  8. package/android/src/main/java/com/reactnativestripesdk/{FinancialConnectionsSheetFragment.kt → FinancialConnectionsSheetManager.kt} +30 -77
  9. package/android/src/main/java/com/reactnativestripesdk/GooglePayLauncherManager.kt +107 -0
  10. package/android/src/main/java/com/reactnativestripesdk/GooglePayPaymentMethodLauncherManager.kt +37 -0
  11. package/android/src/main/java/com/reactnativestripesdk/{PaymentLauncherFragment.kt → PaymentLauncherManager.kt} +39 -77
  12. package/android/src/main/java/com/reactnativestripesdk/PaymentMethodCreateParamsFactory.kt +8 -20
  13. package/android/src/main/java/com/reactnativestripesdk/PaymentSheetAppearance.kt +366 -483
  14. package/android/src/main/java/com/reactnativestripesdk/{PaymentSheetFragment.kt → PaymentSheetManager.kt} +79 -88
  15. package/android/src/main/java/com/reactnativestripesdk/StripeAbstractComposeView.kt +3 -2
  16. package/android/src/main/java/com/reactnativestripesdk/StripeSdkModule.kt +213 -210
  17. package/android/src/main/java/com/reactnativestripesdk/addresssheet/AddressLauncherManager.kt +78 -0
  18. package/android/src/main/java/com/reactnativestripesdk/addresssheet/AddressSheetView.kt +48 -35
  19. package/android/src/main/java/com/reactnativestripesdk/customersheet/{CustomerSheetFragment.kt → CustomerSheetManager.kt} +127 -104
  20. package/android/src/main/java/com/reactnativestripesdk/customersheet/ReactNativeCustomerSessionProvider.kt +35 -0
  21. package/android/src/main/java/com/reactnativestripesdk/utils/Extensions.kt +47 -12
  22. package/android/src/main/java/com/reactnativestripesdk/utils/Mappers.kt +87 -142
  23. package/android/src/main/java/com/reactnativestripesdk/utils/StripeUIManager.kt +62 -0
  24. package/android/src/oldarch/java/com/facebook/react/viewmanagers/ApplePayButtonManagerDelegate.java +12 -0
  25. package/android/src/oldarch/java/com/facebook/react/viewmanagers/ApplePayButtonManagerInterface.java +4 -0
  26. package/android/src/oldarch/java/com/reactnativestripesdk/NativeStripeSdkModuleSpec.java +8 -64
  27. package/ios/AddressSheet/AddressSheetView.swift +1 -1
  28. package/ios/ApplePayButtonManager.m +1 -1
  29. package/ios/ApplePayButtonView.swift +2 -2
  30. package/ios/FinancialConnections.swift +2 -2
  31. package/ios/Mappers.swift +2 -4
  32. package/ios/NewArch/ApplePayButtonComponentView.mm +1 -1
  33. package/ios/OldArch/StripeSdkEventEmitterCompat.h +2 -0
  34. package/ios/OldArch/StripeSdkEventEmitterCompat.m +12 -0
  35. package/ios/PaymentMethodFactory.swift +0 -17
  36. package/ios/PushProvisioning/AddToWalletButtonView.swift +1 -1
  37. package/ios/StripeSdk.mm +14 -0
  38. package/ios/StripeSdkEmitter.swift +2 -0
  39. package/ios/StripeSdkImpl+CustomerSheet.swift +71 -20
  40. package/ios/StripeSdkImpl+PaymentSheet.swift +29 -13
  41. package/ios/StripeSdkImpl.swift +9 -7
  42. package/lib/commonjs/components/AddToWalletButton.js +1 -1
  43. package/lib/commonjs/components/AddToWalletButton.js.map +1 -1
  44. package/lib/commonjs/components/AddressSheet.js +1 -1
  45. package/lib/commonjs/components/AddressSheet.js.map +1 -1
  46. package/lib/commonjs/components/AuBECSDebitForm.js +1 -1
  47. package/lib/commonjs/components/AuBECSDebitForm.js.map +1 -1
  48. package/lib/commonjs/components/CardField.js +1 -1
  49. package/lib/commonjs/components/CardField.js.map +1 -1
  50. package/lib/commonjs/components/CardForm.js +1 -1
  51. package/lib/commonjs/components/CardForm.js.map +1 -1
  52. package/lib/commonjs/components/CustomerSheet.js +1 -1
  53. package/lib/commonjs/components/CustomerSheet.js.map +1 -1
  54. package/lib/commonjs/components/PlatformPayButton.js +1 -1
  55. package/lib/commonjs/components/PlatformPayButton.js.map +1 -1
  56. package/lib/commonjs/components/StripeContainer.js +1 -1
  57. package/lib/commonjs/components/StripeContainer.js.map +1 -1
  58. package/lib/commonjs/events.js.map +1 -1
  59. package/lib/commonjs/specs/NativeApplePayButton.js +1 -1
  60. package/lib/commonjs/specs/NativeApplePayButton.js.map +1 -1
  61. package/lib/commonjs/specs/NativeStripeSdkModule.js.map +1 -1
  62. package/lib/commonjs/types/EmbeddedPaymentElement.js +1 -1
  63. package/lib/commonjs/types/EmbeddedPaymentElement.js.map +1 -1
  64. package/lib/commonjs/types/PaymentIntent.js.map +1 -1
  65. package/lib/commonjs/types/PaymentSheet.js.map +1 -1
  66. package/lib/module/components/AddToWalletButton.js +1 -1
  67. package/lib/module/components/AddToWalletButton.js.map +1 -1
  68. package/lib/module/components/AddressSheet.js +1 -1
  69. package/lib/module/components/AddressSheet.js.map +1 -1
  70. package/lib/module/components/AuBECSDebitForm.js +1 -1
  71. package/lib/module/components/AuBECSDebitForm.js.map +1 -1
  72. package/lib/module/components/CardField.js +1 -1
  73. package/lib/module/components/CardField.js.map +1 -1
  74. package/lib/module/components/CardForm.js +1 -1
  75. package/lib/module/components/CardForm.js.map +1 -1
  76. package/lib/module/components/CustomerSheet.js +1 -1
  77. package/lib/module/components/CustomerSheet.js.map +1 -1
  78. package/lib/module/components/PlatformPayButton.js +1 -1
  79. package/lib/module/components/PlatformPayButton.js.map +1 -1
  80. package/lib/module/components/StripeContainer.js +1 -1
  81. package/lib/module/components/StripeContainer.js.map +1 -1
  82. package/lib/module/events.js.map +1 -1
  83. package/lib/module/specs/NativeApplePayButton.js +1 -1
  84. package/lib/module/specs/NativeApplePayButton.js.map +1 -1
  85. package/lib/module/specs/NativeStripeSdkModule.js.map +1 -1
  86. package/lib/module/types/EmbeddedPaymentElement.js +1 -1
  87. package/lib/module/types/EmbeddedPaymentElement.js.map +1 -1
  88. package/lib/module/types/PaymentIntent.js.map +1 -1
  89. package/lib/module/types/PaymentSheet.js.map +1 -1
  90. package/lib/typescript/src/components/CustomerSheet.d.ts +1 -1
  91. package/lib/typescript/src/components/CustomerSheet.d.ts.map +1 -1
  92. package/lib/typescript/src/events.d.ts +2 -0
  93. package/lib/typescript/src/events.d.ts.map +1 -1
  94. package/lib/typescript/src/specs/NativeApplePayButton.d.ts +1 -1
  95. package/lib/typescript/src/specs/NativeApplePayButton.d.ts.map +1 -1
  96. package/lib/typescript/src/specs/NativeStripeSdkModule.d.ts +3 -1
  97. package/lib/typescript/src/specs/NativeStripeSdkModule.d.ts.map +1 -1
  98. package/lib/typescript/src/types/ConfirmationToken.d.ts +0 -3
  99. package/lib/typescript/src/types/ConfirmationToken.d.ts.map +1 -1
  100. package/lib/typescript/src/types/CustomerSheet.d.ts +70 -12
  101. package/lib/typescript/src/types/CustomerSheet.d.ts.map +1 -1
  102. package/lib/typescript/src/types/EmbeddedPaymentElement.d.ts +2 -4
  103. package/lib/typescript/src/types/EmbeddedPaymentElement.d.ts.map +1 -1
  104. package/lib/typescript/src/types/PaymentIntent.d.ts +1 -9
  105. package/lib/typescript/src/types/PaymentIntent.d.ts.map +1 -1
  106. package/lib/typescript/src/types/PaymentMethod.d.ts +2 -8
  107. package/lib/typescript/src/types/PaymentMethod.d.ts.map +1 -1
  108. package/lib/typescript/src/types/PaymentSheet.d.ts +1 -6
  109. package/lib/typescript/src/types/PaymentSheet.d.ts.map +1 -1
  110. package/package.json +1 -1
  111. package/src/components/CustomerSheet.tsx +65 -9
  112. package/src/components/PlatformPayButton.tsx +1 -1
  113. package/src/events.ts +2 -0
  114. package/src/specs/NativeApplePayButton.ts +1 -1
  115. package/src/specs/NativeStripeSdkModule.ts +7 -0
  116. package/src/types/ConfirmationToken.ts +0 -3
  117. package/src/types/CustomerSheet.ts +80 -12
  118. package/src/types/EmbeddedPaymentElement.tsx +2 -4
  119. package/src/types/PaymentIntent.ts +0 -10
  120. package/src/types/PaymentMethod.ts +0 -9
  121. package/src/types/PaymentSheet.ts +1 -6
  122. package/stripe-react-native.podspec +1 -1
  123. package/android/src/main/java/com/reactnativestripesdk/GooglePayLauncherFragment.kt +0 -146
  124. package/android/src/main/java/com/reactnativestripesdk/GooglePayPaymentMethodLauncherFragment.kt +0 -68
  125. package/android/src/main/java/com/reactnativestripesdk/addresssheet/AddressLauncherFragment.kt +0 -102
  126. package/android/src/main/java/com/reactnativestripesdk/utils/StripeFragment.kt +0 -52
@@ -97,9 +97,7 @@ export type SetupParams =
97
97
  })
98
98
  | (SetupParamsBase & {
99
99
  customerEphemeralKeySecret?: never;
100
- /** (Experimental) This parameter can be changed or removed at any time (use at your own risk).
101
- * The client secret of this Customer Session. Used on the client to set up secure access to the given customer.
102
- */
100
+ /** The client secret of this Customer Session. Used on the client to set up secure access to the given customer. */
103
101
  customerSessionClientSecret: string;
104
102
  })
105
103
  | SetupParamsBase;
@@ -580,9 +578,6 @@ export type IntentConfiguration = {
580
578
  ) => void;
581
579
 
582
580
  /**
583
- * @internal DO NOT USE - This API is under active development and is not ready for use.
584
- * The API is subject to breaking changes without notice. Do not use in production or development.
585
- *
586
581
  * Called when the customer confirms payment using confirmation tokens.
587
582
  * Your implementation should follow the guide to create (and optionally confirm) a PaymentIntent or SetupIntent on your server and call the `intentCreationCallback` with its client secret or an error if one occurred.
588
583
  *
@@ -2,7 +2,7 @@ require 'json'
2
2
 
3
3
  package = JSON.parse(File.read(File.join(__dir__, 'package.json')))
4
4
  # Keep stripe_version in sync with https://github.com/stripe/stripe-identity-react-native/blob/main/stripe-identity-react-native.podspec
5
- stripe_version = '~> 24.24.0'
5
+ stripe_version = '~> 25.0.1'
6
6
 
7
7
  fabric_enabled = ENV['RCT_NEW_ARCH_ENABLED'] == '1'
8
8
 
@@ -1,146 +0,0 @@
1
- package com.reactnativestripesdk
2
-
3
- import androidx.fragment.app.FragmentActivity
4
- import com.facebook.react.bridge.ReactApplicationContext
5
- import com.facebook.react.bridge.ReadableMap
6
- import com.facebook.react.bridge.WritableMap
7
- import com.reactnativestripesdk.utils.ErrorType
8
- import com.reactnativestripesdk.utils.GooglePayErrorType
9
- import com.reactnativestripesdk.utils.StripeFragment
10
- import com.reactnativestripesdk.utils.createError
11
- import com.reactnativestripesdk.utils.createMissingActivityError
12
- import com.reactnativestripesdk.utils.getBooleanOr
13
- import com.reactnativestripesdk.utils.getIntOrNull
14
- import com.stripe.android.googlepaylauncher.GooglePayEnvironment
15
- import com.stripe.android.googlepaylauncher.GooglePayLauncher
16
-
17
- class GooglePayLauncherFragment : StripeFragment() {
18
- enum class Mode {
19
- ForSetup,
20
- ForPayment,
21
- }
22
-
23
- private lateinit var launcher: GooglePayLauncher
24
- private lateinit var clientSecret: String
25
- private lateinit var mode: Mode
26
- private lateinit var configuration: GooglePayLauncher.Config
27
- private lateinit var currencyCode: String
28
- private var amount: Int? = null
29
- private var label: String? = null
30
- private lateinit var callback: (result: GooglePayLauncher.Result?, error: WritableMap?) -> Unit
31
-
32
- override fun prepare() {
33
- launcher =
34
- GooglePayLauncher(
35
- fragment = this,
36
- config = configuration,
37
- readyCallback = ::onGooglePayReady,
38
- resultCallback = ::onGooglePayResult,
39
- )
40
- }
41
-
42
- fun presentGooglePaySheet(
43
- clientSecret: String,
44
- mode: Mode,
45
- googlePayParams: ReadableMap,
46
- context: ReactApplicationContext,
47
- callback: (GooglePayLauncher.Result?, error: WritableMap?) -> Unit,
48
- ) {
49
- this.clientSecret = clientSecret
50
- this.mode = mode
51
- this.callback = callback
52
- this.currencyCode = googlePayParams.getString("currencyCode") ?: "USD"
53
- this.amount = getIntOrNull(googlePayParams, "amount")
54
- this.label = googlePayParams.getString("label")
55
- this.configuration =
56
- GooglePayLauncher.Config(
57
- environment =
58
- if (googlePayParams.getBoolean("testEnv")) {
59
- GooglePayEnvironment.Test
60
- } else {
61
- GooglePayEnvironment.Production
62
- },
63
- merchantCountryCode = googlePayParams.getString("merchantCountryCode").orEmpty(),
64
- merchantName = googlePayParams.getString("merchantName").orEmpty(),
65
- isEmailRequired = googlePayParams.getBooleanOr("isEmailRequired", false),
66
- billingAddressConfig =
67
- buildBillingAddressParameters(googlePayParams.getMap("billingAddressConfig")),
68
- existingPaymentMethodRequired =
69
- googlePayParams.getBooleanOr("existingPaymentMethodRequired", false),
70
- allowCreditCards = googlePayParams.getBooleanOr("allowCreditCards", true),
71
- )
72
-
73
- (context.currentActivity as? FragmentActivity)?.let {
74
- attemptToCleanupPreviousFragment(it)
75
- commitFragmentAndStartFlow(it)
76
- }
77
- ?: run {
78
- callback(null, createMissingActivityError())
79
- return
80
- }
81
- }
82
-
83
- private fun attemptToCleanupPreviousFragment(currentActivity: FragmentActivity) {
84
- currentActivity.supportFragmentManager
85
- .beginTransaction()
86
- .remove(this)
87
- .commitAllowingStateLoss()
88
- }
89
-
90
- private fun commitFragmentAndStartFlow(currentActivity: FragmentActivity) {
91
- try {
92
- currentActivity.supportFragmentManager
93
- .beginTransaction()
94
- .add(this, TAG)
95
- .commit()
96
- } catch (error: IllegalStateException) {
97
- callback(null, createError(ErrorType.Failed.toString(), error.message))
98
- }
99
- }
100
-
101
- private fun onGooglePayReady(isReady: Boolean) {
102
- if (isReady) {
103
- when (mode) {
104
- Mode.ForSetup -> {
105
- launcher.presentForSetupIntent(clientSecret, currencyCode, amount?.toLong(), label)
106
- }
107
- Mode.ForPayment -> {
108
- launcher.presentForPaymentIntent(clientSecret, label)
109
- }
110
- }
111
- } else {
112
- callback(
113
- null,
114
- createError(
115
- GooglePayErrorType.Failed.toString(),
116
- "Google Pay is not available on this device. You can use isPlatformPaySupported to preemptively check for Google Pay support.",
117
- ),
118
- )
119
- }
120
- }
121
-
122
- private fun onGooglePayResult(result: GooglePayLauncher.Result) {
123
- callback(result, null)
124
- }
125
-
126
- companion object {
127
- const val TAG = "google_pay_launcher_fragment"
128
-
129
- private fun buildBillingAddressParameters(params: ReadableMap?): GooglePayLauncher.BillingAddressConfig {
130
- val isRequired = params?.getBooleanOr("isRequired", false)
131
- val isPhoneNumberRequired = params?.getBooleanOr("isPhoneNumberRequired", false)
132
- val format =
133
- when (params?.getString("format").orEmpty()) {
134
- "FULL" -> GooglePayLauncher.BillingAddressConfig.Format.Full
135
- "MIN" -> GooglePayLauncher.BillingAddressConfig.Format.Min
136
- else -> GooglePayLauncher.BillingAddressConfig.Format.Min
137
- }
138
-
139
- return GooglePayLauncher.BillingAddressConfig(
140
- isRequired = isRequired ?: false,
141
- format = format,
142
- isPhoneNumberRequired = isPhoneNumberRequired ?: false,
143
- )
144
- }
145
- }
146
- }
@@ -1,68 +0,0 @@
1
- package com.reactnativestripesdk
2
-
3
- import android.os.Bundle
4
- import android.view.LayoutInflater
5
- import android.view.View
6
- import android.view.ViewGroup
7
- import android.widget.FrameLayout
8
- import androidx.fragment.app.Fragment
9
- import com.facebook.react.bridge.Promise
10
- import com.facebook.react.bridge.ReactApplicationContext
11
- import com.reactnativestripesdk.utils.removeFragment
12
- import com.stripe.android.googlepaylauncher.GooglePayEnvironment
13
- import com.stripe.android.googlepaylauncher.GooglePayPaymentMethodLauncher
14
-
15
- class GooglePayPaymentMethodLauncherFragment : Fragment() {
16
- private lateinit var context: ReactApplicationContext
17
- private var isTestEnv = false
18
- private var paymentMethodRequired = false
19
- private lateinit var promise: Promise
20
-
21
- override fun onCreateView(
22
- inflater: LayoutInflater,
23
- container: ViewGroup?,
24
- savedInstanceState: Bundle?,
25
- ): View = FrameLayout(requireActivity()).also { it.visibility = View.GONE }
26
-
27
- override fun onViewCreated(
28
- view: View,
29
- savedInstanceState: Bundle?,
30
- ) {
31
- super.onViewCreated(view, savedInstanceState)
32
- GooglePayPaymentMethodLauncher(
33
- this,
34
- config =
35
- GooglePayPaymentMethodLauncher.Config(
36
- environment =
37
- if (isTestEnv) GooglePayEnvironment.Test else GooglePayEnvironment.Production,
38
- existingPaymentMethodRequired = paymentMethodRequired,
39
- merchantCountryCode =
40
- "", // Unnecessary since all we are checking for is Google Pay availability
41
- merchantName = "", // Same as above
42
- ),
43
- readyCallback = {
44
- promise.resolve(it)
45
- removeFragment(context)
46
- },
47
- resultCallback = {},
48
- )
49
- }
50
-
51
- companion object {
52
- const val TAG = "google_pay_support_fragment"
53
-
54
- fun create(
55
- context: ReactApplicationContext,
56
- isTestEnv: Boolean,
57
- paymentMethodRequired: Boolean,
58
- promise: Promise,
59
- ): GooglePayPaymentMethodLauncherFragment {
60
- val instance = GooglePayPaymentMethodLauncherFragment()
61
- instance.context = context
62
- instance.isTestEnv = isTestEnv
63
- instance.paymentMethodRequired = paymentMethodRequired
64
- instance.promise = promise
65
- return instance
66
- }
67
- }
68
- }
@@ -1,102 +0,0 @@
1
- package com.reactnativestripesdk.addresssheet
2
-
3
- import androidx.fragment.app.FragmentActivity
4
- import com.facebook.react.bridge.ReactContext
5
- import com.facebook.react.bridge.WritableMap
6
- import com.reactnativestripesdk.utils.ErrorType
7
- import com.reactnativestripesdk.utils.StripeFragment
8
- import com.reactnativestripesdk.utils.createError
9
- import com.stripe.android.paymentsheet.PaymentSheet
10
- import com.stripe.android.paymentsheet.addresselement.AddressDetails
11
- import com.stripe.android.paymentsheet.addresselement.AddressLauncher
12
- import com.stripe.android.paymentsheet.addresselement.AddressLauncherResult
13
-
14
- class AddressLauncherFragment : StripeFragment() {
15
- companion object {
16
- internal var publishableKey: String? = null
17
- internal const val TAG = "address_launcher_fragment"
18
- }
19
-
20
- private lateinit var addressLauncher: AddressLauncher
21
- private var configuration = AddressLauncher.Configuration()
22
- private var callback: ((error: WritableMap?, address: AddressDetails?) -> Unit)? = null
23
-
24
- override fun prepare() {
25
- publishableKey?.let { publishableKey ->
26
- addressLauncher =
27
- AddressLauncher(this, ::onAddressLauncherResult).also {
28
- it.present(publishableKey = publishableKey, configuration = configuration)
29
- }
30
- }
31
- ?: run {
32
- callback?.invoke(
33
- createError(
34
- ErrorType.Failed.toString(),
35
- "No publishable key set. Stripe has not been initialized. Initialize Stripe in your app with the StripeProvider component or the initStripe method.",
36
- ),
37
- null,
38
- )
39
- }
40
- }
41
-
42
- private fun onAddressLauncherResult(result: AddressLauncherResult) {
43
- when (result) {
44
- is AddressLauncherResult.Canceled -> {
45
- callback?.invoke(
46
- createError(ErrorType.Canceled.toString(), "The flow has been canceled."),
47
- null,
48
- )
49
- }
50
- is AddressLauncherResult.Succeeded -> {
51
- callback?.invoke(null, result.address)
52
- }
53
- }
54
- }
55
-
56
- fun presentAddressSheet(
57
- context: ReactContext,
58
- appearance: PaymentSheet.Appearance,
59
- defaultAddress: AddressDetails?,
60
- allowedCountries: Set<String>,
61
- buttonTitle: String?,
62
- title: String?,
63
- googlePlacesApiKey: String?,
64
- autocompleteCountries: Set<String>,
65
- additionalFields: AddressLauncher.AdditionalFieldsConfiguration?,
66
- callback: ((error: WritableMap?, address: AddressDetails?) -> Unit),
67
- ) {
68
- configuration =
69
- AddressLauncher.Configuration(
70
- appearance = appearance,
71
- address = defaultAddress,
72
- allowedCountries = allowedCountries,
73
- buttonTitle = buttonTitle,
74
- additionalFields = additionalFields,
75
- title = title,
76
- googlePlacesApiKey = googlePlacesApiKey,
77
- autocompleteCountries = autocompleteCountries,
78
- )
79
- this.callback = callback
80
- (context.currentActivity as? FragmentActivity)?.let {
81
- attemptToCleanupPreviousFragment(it)
82
- commitFragmentAndStartFlow(it)
83
- }
84
- }
85
-
86
- private fun attemptToCleanupPreviousFragment(currentActivity: FragmentActivity) {
87
- currentActivity.supportFragmentManager
88
- .beginTransaction()
89
- .remove(this)
90
- .commitAllowingStateLoss()
91
- }
92
-
93
- private fun commitFragmentAndStartFlow(currentActivity: FragmentActivity) {
94
- try {
95
- currentActivity.supportFragmentManager
96
- .beginTransaction()
97
- .add(this, TAG)
98
- .commit()
99
- } catch (_: IllegalStateException) {
100
- }
101
- }
102
- }
@@ -1,52 +0,0 @@
1
- package com.reactnativestripesdk.utils
2
-
3
- import android.os.Bundle
4
- import android.view.LayoutInflater
5
- import android.view.View
6
- import android.view.ViewGroup
7
- import android.widget.FrameLayout
8
- import androidx.fragment.app.Fragment
9
- import androidx.fragment.app.FragmentActivity
10
-
11
- /**
12
- * Base fragment class to be used to launch Stripe UI that requires a fragment. Use the prepare
13
- * method to configure it.
14
- *
15
- * Note that subclasses of this must implement a no arguments constructor since that is what is
16
- * invoked when fragments are restored after activity re-creation.
17
- */
18
- abstract class StripeFragment : Fragment() {
19
- private var isRestored = false
20
-
21
- override fun onCreate(savedInstanceState: Bundle?) {
22
- super.onCreate(savedInstanceState)
23
-
24
- isRestored = savedInstanceState != null
25
- }
26
-
27
- override fun onCreateView(
28
- inflater: LayoutInflater,
29
- container: ViewGroup?,
30
- savedInstanceState: Bundle?,
31
- ): View = FrameLayout(requireActivity()).also { it.visibility = View.GONE }
32
-
33
- override fun onViewCreated(
34
- view: View,
35
- savedInstanceState: Bundle?,
36
- ) {
37
- super.onViewCreated(view, savedInstanceState)
38
-
39
- // Prevent fragment from being re-created.
40
- if (isRestored) {
41
- (context as? FragmentActivity)
42
- ?.supportFragmentManager
43
- ?.beginTransaction()
44
- ?.remove(this)
45
- ?.commitAllowingStateLoss()
46
- } else {
47
- prepare()
48
- }
49
- }
50
-
51
- abstract fun prepare()
52
- }