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

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,13 +23,10 @@ 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)
@@ -37,74 +34,94 @@ public class DojahKycSdkReactExpoModule: Module {
37
34
  print("onDidShow: \(vc)")
38
35
  //return result from DojahWidget once verification
39
36
  //is done,failed or cancel
40
- if(!String(describing:vc).contains("DojahWidget")){
37
+ if !String(describing: vc).contains("DojahWidget") {
41
38
  let vStatus = DojahWidgetSDK.getVerificationResultStatus()
42
- let status = if(vStatus.isEmpty){ "closed"} else {vStatus}
39
+ let status = vStatus.isEmpty ? "closed" : vStatus
43
40
  self.mPromise?.resolve(status)
44
41
  self.prevController = nil
45
- }else if(String(describing:vc).contains("DojahWidget.DJDisclaimer")
46
- && self.prevController != nil){
42
+ } else if String(describing: vc).contains("DojahWidget.DJDisclaimer")
43
+ && self.prevController != nil {
47
44
  self.navCtrl?.popToRootViewController(animated: false)
48
- }else if(!String(describing:vc).contains("DojahWidget.SDKInitViewController")){
45
+ } else if !String(describing: vc).contains("DojahWidget.SDKInitViewController") {
49
46
  self.prevController = vc
50
47
  }
51
48
  }
52
-
53
- if navCtrl != nil {
54
- navCtrl!.delegate = navDelegate
55
- }
56
49
  }
57
50
 
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
68
-
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")
51
+ public func definition() -> ModuleDefinition {
52
+ Name("DojahKycSdk")
53
+ Events("onChange")
54
+
55
+ AsyncFunction("launch") { (widgetId: String, referenceId: String?, email: String?, extraData: ExtraDataRecord?, promise: Promise) in
56
+ self.mPromise = promise
57
+
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
+ }
90
+ }
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
+ }
110
+ }
87
111
  }
88
112
  }
89
- }
90
113
 
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))
114
+ View(DojahKycSdkReactExpoView.self) {
115
+ Prop("url") { (view: DojahKycSdkReactExpoView, url: URL) in
116
+ if view.webView.url != url {
117
+ view.webView.load(URLRequest(url: url))
118
+ }
119
+ }
120
+ Events("onLoad")
98
121
  }
99
- }
100
-
101
- Events("onLoad")
102
122
  }
103
- }
104
123
  }
105
124
 
106
-
107
-
108
125
  struct ExtraDataRecord : Record {
109
126
  @Field
110
127
  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.3",
3
+ "version": "0.1.5",
4
4
  "description": "Dojah Kyc",
5
5
  "main": "build/index.js",
6
6
  "types": "build/index.d.ts",