dojah-kyc-sdk-react-expo 0.1.4 → 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?
|
|
27
|
-
|
|
26
|
+
var mPromise: Promise?
|
|
28
27
|
let navDelegate = DojahNavigationControllerDelegate()
|
|
29
|
-
|
|
30
|
-
|
|
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
|
|
37
|
+
if !String(describing: vc).contains("DojahWidget") {
|
|
41
38
|
let vStatus = DojahWidgetSDK.getVerificationResultStatus()
|
|
42
|
-
let status =
|
|
39
|
+
let status = vStatus.isEmpty ? "closed" : vStatus
|
|
43
40
|
self.mPromise?.resolve(status)
|
|
44
41
|
self.prevController = nil
|
|
45
|
-
}else if
|
|
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
|
|
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
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
navController
|
|
85
|
-
|
|
86
|
-
|
|
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
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
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
|