framepayments-react-native 2.0.1 → 2.0.3

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.
@@ -1,8 +1,8 @@
1
- arguments=--init-script /var/folders/my/2knngz1131q4pq8rnxxjb3_h0000gn/T/db3b08fc4a9ef609cb16b96b200fa13e563f396e9bb1ed0905fdab7bc3bc513b.gradle --init-script /var/folders/my/2knngz1131q4pq8rnxxjb3_h0000gn/T/52cde0cfcf3e28b8b7510e992210d9614505e0911af0c190bd590d7158574963.gradle --init-script /var/folders/my/2knngz1131q4pq8rnxxjb3_h0000gn/T/861a75667e10803d304a058d833cb7404195ca44013d0d61d3b653eb084379b8.gradle --init-script /var/folders/my/2knngz1131q4pq8rnxxjb3_h0000gn/T/68eb1b6516fe21c6fbba58e63c99c3207ccfc918360613709367eecde56fa77f.gradle
2
- auto.sync=false
1
+ arguments=--init-script /var/folders/my/2knngz1131q4pq8rnxxjb3_h0000gn/T/db3b08fc4a9ef609cb16b96b200fa13e563f396e9bb1ed0905fdab7bc3bc513b.gradle --init-script /var/folders/my/2knngz1131q4pq8rnxxjb3_h0000gn/T/52cde0cfcf3e28b8b7510e992210d9614505e0911af0c190bd590d7158574963.gradle --init-script /var/folders/my/2knngz1131q4pq8rnxxjb3_h0000gn/T/861a75667e10803d304a058d833cb7404195ca44013d0d61d3b653eb084379b8.gradle --init-script /var/folders/my/2knngz1131q4pq8rnxxjb3_h0000gn/T/68eb1b6516fe21c6fbba58e63c99c3207ccfc918360613709367eecde56fa77f.gradle --init-script /var/folders/my/2knngz1131q4pq8rnxxjb3_h0000gn/T/da64152279c70a8b4f3de4ca9ea66fd3b3405b7aca4e1f20f2d08e5593aa1ce1.gradle
2
+ auto.sync=true
3
3
  build.scans.enabled=false
4
4
  connection.gradle.distribution=GRADLE_DISTRIBUTION(VERSION(8.9))
5
- connection.project.dir=../../../android
5
+ connection.project.dir=
6
6
  eclipse.preferences.version=1
7
7
  gradle.user.home=
8
8
  java.home=/Library/Java/JavaVirtualMachines/temurin-17.jdk/Contents/Home
@@ -1 +1 @@
1
- #Thu Apr 30 13:46:59 PDT 2026
1
+ #Fri May 01 16:00:34 PDT 2026
@@ -180,21 +180,25 @@ public class FrameSDKBridge: NSObject {
180
180
  }
181
181
 
182
182
  private func presentOnboardingOnMain(from top: UIViewController, accountId: String?, capabilities: [FrameObjects.Capabilities], resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
183
- let hosting = OnboardingHostingController(
183
+ var hosting: OnboardingHostingController<OnboardingContainerView>!
184
+ var delegate: OnboardingDismissDelegate!
185
+ hosting = OnboardingHostingController(
184
186
  rootView: OnboardingContainerView(
185
187
  accountId: accountId,
186
- requiredCapabilities: capabilities
188
+ requiredCapabilities: capabilities,
189
+ onComplete: { [weak hosting] in
190
+ delegate?.finish(completed: true)
191
+ hosting?.dismiss(animated: true)
192
+ }
187
193
  )
188
194
  )
189
195
  hosting.modalPresentationStyle = UIModalPresentationStyle.pageSheet
190
196
  if let sheet = hosting.sheetPresentationController {
191
197
  sheet.detents = [UISheetPresentationController.Detent.large()]
192
198
  }
193
- let delegate = OnboardingDismissDelegate(hosting: hosting, resolve: resolve)
199
+ delegate = OnboardingDismissDelegate(resolve: resolve)
200
+ delegate.hostingController = hosting
194
201
  objc_setAssociatedObject(hosting, &onboardingDismissKey, delegate, .OBJC_ASSOCIATION_RETAIN)
195
- hosting.onProgrammaticDismiss = { [weak delegate] in
196
- delegate?.finish(completed: true)
197
- }
198
202
  top.present(hosting, animated: true) {
199
203
  hosting.presentationController?.delegate = delegate
200
204
  }
@@ -226,18 +230,7 @@ private final class CheckoutHostingController: UIHostingController<FrameCheckout
226
230
 
227
231
  // MARK: - OnboardingHostingController
228
232
 
229
- private final class OnboardingHostingController<V: View>: UIHostingController<V> {
230
- var programmaticDismiss = false
231
- var onProgrammaticDismiss: (() -> Void)?
232
-
233
- override func dismiss(animated flag: Bool, completion: (() -> Void)? = nil) {
234
- programmaticDismiss = true
235
- super.dismiss(animated: flag, completion: { [weak self] in
236
- self?.onProgrammaticDismiss?()
237
- completion?()
238
- })
239
- }
240
- }
233
+ private final class OnboardingHostingController<V: View>: UIHostingController<V> {}
241
234
 
242
235
  // MARK: - Delegates
243
236
 
@@ -253,9 +246,10 @@ private final class CartDismissDelegate: NSObject, UIAdaptivePresentationControl
253
246
 
254
247
  private final class OnboardingDismissDelegate: NSObject, UIAdaptivePresentationControllerDelegate {
255
248
  let resolve: RCTPromiseResolveBlock
249
+ weak var hostingController: UIViewController?
256
250
  var didFinish = false
257
251
 
258
- init(hosting: OnboardingHostingController<OnboardingContainerView>, resolve: @escaping RCTPromiseResolveBlock) {
252
+ init(resolve: @escaping RCTPromiseResolveBlock) {
259
253
  self.resolve = resolve
260
254
  }
261
255
 
@@ -268,6 +262,10 @@ private final class OnboardingDismissDelegate: NSObject, UIAdaptivePresentationC
268
262
  }
269
263
 
270
264
  func presentationControllerDidDismiss(_ presentationController: UIPresentationController) {
265
+ // Nested SwiftUI sheets (e.g. the phone country picker) propagate this
266
+ // callback to the Onboarding host's delegate. Only treat dismissal of the
267
+ // Onboarding hosting controller itself as a cancellation.
268
+ guard presentationController.presentedViewController === hostingController else { return }
271
269
  finish(completed: false)
272
270
  }
273
271
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "framepayments-react-native",
3
- "version": "2.0.1",
3
+ "version": "2.0.3",
4
4
  "description": "React Native SDK for Frame Payments - modal checkout and cart, with API usage via frame-node.",
5
5
  "main": "lib/index.js",
6
6
  "types": "lib/index.d.ts",