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
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
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
|
-
|
|
92
|
-
// If
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
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
|