dojah-kyc-sdk-react-expo 0.1.4 → 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.
@@ -23,88 +23,103 @@ class DojahNavigationControllerDelegate: NSObject, UINavigationControllerDelegat
23
23
 
24
24
  public class DojahKycSdkReactExpoModule: Module {
25
25
 
26
- var mPromise:Promise? = nil
27
-
26
+ var mPromise: Promise?
28
27
  let navDelegate = DojahNavigationControllerDelegate()
29
-
30
- let navCtrl = UIApplication.shared.keyWindow?.rootViewController as? UINavigationController
31
-
32
- var prevController:UIViewController? = nil
28
+ var navCtrl: UINavigationController?
29
+ var prevController: UIViewController?
33
30
 
34
31
  required public init(appContext: AppContext) {
35
32
  super.init(appContext: appContext)
36
33
  navDelegate.setOnDidShow { vc in
37
34
  print("onDidShow: \(vc)")
38
- //return result from DojahWidget once verification
39
- //is done,failed or cancel
40
- if(!String(describing:vc).contains("DojahWidget")){
35
+ if !String(describing: vc).contains("DojahWidget") {
41
36
  let vStatus = DojahWidgetSDK.getVerificationResultStatus()
42
- let status = if(vStatus.isEmpty){ "closed"} else {vStatus}
37
+ let status = vStatus.isEmpty ? "closed" : vStatus
43
38
  self.mPromise?.resolve(status)
44
39
  self.prevController = nil
45
- }else if(String(describing:vc).contains("DojahWidget.DJDisclaimer")
46
- && self.prevController != nil){
40
+ } else if String(describing: vc).contains("DojahWidget.DJDisclaimer")
41
+ && self.prevController != nil {
47
42
  self.navCtrl?.popToRootViewController(animated: false)
48
- }else if(!String(describing:vc).contains("DojahWidget.SDKInitViewController")){
43
+ } else if !String(describing: vc).contains("DojahWidget.SDKInitViewController") {
49
44
  self.prevController = vc
50
45
  }
51
46
  }
52
-
53
- if navCtrl != nil {
54
- navCtrl!.delegate = navDelegate
55
- }
56
47
  }
57
48
 
58
- public func definition() -> ModuleDefinition {
59
-
60
- Name("DojahKycSdk")
61
-
62
- Events("onChange")
63
-
64
- AsyncFunction("launch") { (widgetId: String, referenceId: String?, email: String?, extraData: ExtraDataRecord?,promise:Promise) in
65
- mPromise = promise
66
-
67
- let navController = navCtrl
49
+ public func definition() -> ModuleDefinition {
50
+ Name("DojahKycSdk")
51
+ Events("onChange")
52
+
53
+ AsyncFunction("launch") { (widgetId: String, referenceId: String?, email: String?, extraData: ExtraDataRecord?, promise: Promise) in
54
+ self.mPromise = promise
55
+
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
61
+ }
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
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")
89
+ }
90
+ }
68
91
 
69
- print("nav ctrl: $\(String(describing: navController))")
70
-
71
-
72
- if(navController == nil){
73
- self.mPromise?.reject("002","failed to initialize, can't find navController")
74
- return
75
- }
76
-
77
- DispatchQueue.main.async {
78
- do{
79
- DojahWidgetSDK.initialize(
80
- widgetID: widgetId,
81
- referenceID: referenceId,
82
- emailAddress: email,
83
- extraUserData: extraData?.toExtraUserData(),
84
- navController: navController!)
85
- }catch{
86
- self.mPromise?.reject("001","failed to initialize")
92
+ View(DojahKycSdkReactExpoView.self) {
93
+ Prop("url") { (view: DojahKycSdkReactExpoView, url: URL) in
94
+ if view.webView.url != url {
95
+ view.webView.load(URLRequest(url: url))
96
+ }
87
97
  }
98
+ Events("onLoad")
88
99
  }
89
100
  }
90
-
91
- // Enables the module to be used as a native view. Definition components that are accepted as part of the
92
- // view definition: Prop, Events.
93
- View(DojahKycSdkReactExpoView.self) {
94
- // Defines a setter for the `url` prop.
95
- Prop("url") { (view: DojahKycSdkReactExpoView, url: URL) in
96
- if view.webView.url != url {
97
- view.webView.load(URLRequest(url: url))
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")
98
118
  }
99
- }
100
-
101
- Events("onLoad")
102
119
  }
103
- }
104
120
  }
105
121
 
106
122
 
107
-
108
123
  struct ExtraDataRecord : Record {
109
124
  @Field
110
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.4",
3
+ "version": "0.1.6",
4
4
  "description": "Dojah Kyc",
5
5
  "main": "build/index.js",
6
6
  "types": "build/index.d.ts",