dojah-kyc-sdk-react-expo 0.1.5 → 0.1.6

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.
@@ -32,8 +32,6 @@ public class DojahKycSdkReactExpoModule: Module {
32
32
  super.init(appContext: appContext)
33
33
  navDelegate.setOnDidShow { vc in
34
34
  print("onDidShow: \(vc)")
35
- //return result from DojahWidget once verification
36
- //is done,failed or cancel
37
35
  if !String(describing: vc).contains("DojahWidget") {
38
36
  let vStatus = DojahWidgetSDK.getVerificationResultStatus()
39
37
  let status = vStatus.isEmpty ? "closed" : vStatus
@@ -55,59 +53,39 @@ public class DojahKycSdkReactExpoModule: Module {
55
53
  AsyncFunction("launch") { (widgetId: String, referenceId: String?, email: String?, extraData: ExtraDataRecord?, promise: Promise) in
56
54
  self.mPromise = promise
57
55
 
58
- // Get the navigation controller when needed, not during initialization
59
- if self.navCtrl == nil {
60
- DispatchQueue.main.async {
61
- if let window = UIApplication.shared.windows.first(where: { $0.isKeyWindow }) {
62
- if let rootNav = window.rootViewController as? UINavigationController {
63
- self.navCtrl = rootNav
64
- } else if let rootVC = window.rootViewController {
65
- // If rootViewController isn't a nav controller, create one
66
- let navController = UINavigationController(rootViewController: rootVC)
67
- window.rootViewController = navController
68
- self.navCtrl = navController
69
- }
70
- }
71
-
72
- guard let navController = self.navCtrl else {
73
- self.mPromise?.reject("002", "failed to initialize, can't find navController")
74
- return
75
- }
76
-
77
- navController.delegate = self.navDelegate
78
-
79
- do {
80
- DojahWidgetSDK.initialize(
81
- widgetID: widgetId,
82
- referenceID: referenceId,
83
- emailAddress: email,
84
- extraUserData: extraData?.toExtraUserData(),
85
- navController: navController
86
- )
87
- } catch {
88
- self.mPromise?.reject("001", "failed to initialize")
89
- }
56
+ DispatchQueue.main.async {
57
+ // Get the current key window
58
+ guard let window = UIApplication.shared.windows.first(where: { $0.isKeyWindow }) else {
59
+ self.mPromise?.reject("002", "No key window found")
60
+ return
90
61
  }
91
- } else {
92
- // If navCtrl already exists
93
- DispatchQueue.main.async {
94
- guard let navController = self.navCtrl else {
95
- self.mPromise?.reject("002", "failed to initialize, can't find navController")
96
- return
97
- }
98
-
99
- do {
100
- DojahWidgetSDK.initialize(
101
- widgetID: widgetId,
102
- referenceID: referenceId,
103
- emailAddress: email,
104
- extraUserData: extraData?.toExtraUserData(),
105
- navController: navController
106
- )
107
- } catch {
108
- self.mPromise?.reject("001", "failed to initialize")
109
- }
62
+
63
+ // If we already have a navigation controller, use it
64
+ if let existingNav = self.navCtrl {
65
+ self.initializeDojahSDK(with: existingNav, widgetId: widgetId, referenceId: referenceId, email: email, extraData: extraData)
66
+ return
110
67
  }
68
+
69
+ // If root is already a navigation controller
70
+ if let rootNav = window.rootViewController as? UINavigationController {
71
+ self.navCtrl = rootNav
72
+ self.initializeDojahSDK(with: rootNav, widgetId: widgetId, referenceId: referenceId, email: email, extraData: extraData)
73
+ return
74
+ }
75
+
76
+ // If root is not a navigation controller, create a new one
77
+ if let rootVC = window.rootViewController {
78
+ // Create a new navigation controller with the root VC
79
+ let navController = UINavigationController()
80
+ navController.viewControllers = [rootVC]
81
+ window.rootViewController = navController
82
+ self.navCtrl = navController
83
+ self.initializeDojahSDK(with: navController, widgetId: widgetId, referenceId: referenceId, email: email, extraData: extraData)
84
+ return
85
+ }
86
+
87
+ // If we still don't have a navigation controller
88
+ self.mPromise?.reject("002", "Failed to setup navigation controller")
111
89
  }
112
90
  }
113
91
 
@@ -120,8 +98,28 @@ public class DojahKycSdkReactExpoModule: Module {
120
98
  Events("onLoad")
121
99
  }
122
100
  }
101
+
102
+ private func initializeDojahSDK(with navController: UINavigationController,
103
+ widgetId: String,
104
+ referenceId: String?,
105
+ email: String?,
106
+ extraData: ExtraDataRecord?) {
107
+ navController.delegate = self.navDelegate
108
+ do {
109
+ DojahWidgetSDK.initialize(
110
+ widgetID: widgetId,
111
+ referenceID: referenceId,
112
+ emailAddress: email,
113
+ extraUserData: extraData?.toExtraUserData(),
114
+ navController: navController
115
+ )
116
+ } catch {
117
+ self.mPromise?.reject("001", "failed to initialize")
118
+ }
119
+ }
123
120
  }
124
121
 
122
+
125
123
  struct ExtraDataRecord : Record {
126
124
  @Field
127
125
  var userData: UserRecord? = nil
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dojah-kyc-sdk-react-expo",
3
- "version": "0.1.5",
3
+ "version": "0.1.6",
4
4
  "description": "Dojah Kyc",
5
5
  "main": "build/index.js",
6
6
  "types": "build/index.d.ts",