react-native-okhi 1.2.31 → 1.2.32-beta.2
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.
- package/LICENSE +1 -1
- package/README.md +34 -4
- package/ReactNativeOkhi.podspec +21 -0
- package/android/build.gradle +38 -99
- package/android/gradle.properties +3 -3
- package/android/src/main/AndroidManifest.xml +1 -3
- package/android/src/main/java/com/okhi/OkhiModule.kt +336 -0
- package/android/src/main/java/com/okhi/OkhiPackage.kt +33 -0
- package/ios/OkHiWrapper.swift +348 -0
- package/ios/Okhi.h +5 -0
- package/ios/Okhi.mm +170 -0
- package/lib/commonjs/NativeOkhi.js +9 -0
- package/lib/commonjs/NativeOkhi.js.map +1 -0
- package/lib/commonjs/index.js +234 -28
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/package.json +1 -0
- package/lib/commonjs/types.js.map +1 -0
- package/lib/module/NativeOkhi.js +5 -0
- package/lib/module/NativeOkhi.js.map +1 -0
- package/lib/module/index.js +221 -3
- package/lib/module/index.js.map +1 -1
- package/lib/module/package.json +1 -0
- package/lib/module/types.js +2 -0
- package/lib/module/types.js.map +1 -0
- package/lib/typescript/commonjs/package.json +1 -0
- package/lib/typescript/commonjs/src/NativeOkhi.d.ts +25 -0
- package/lib/typescript/commonjs/src/NativeOkhi.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/index.d.ts +22 -0
- package/lib/typescript/commonjs/src/index.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/types.d.ts +81 -0
- package/lib/typescript/commonjs/src/types.d.ts.map +1 -0
- package/lib/typescript/module/package.json +1 -0
- package/lib/typescript/module/src/NativeOkhi.d.ts +25 -0
- package/lib/typescript/module/src/NativeOkhi.d.ts.map +1 -0
- package/lib/typescript/module/src/index.d.ts +22 -0
- package/lib/typescript/module/src/index.d.ts.map +1 -0
- package/lib/typescript/module/src/types.d.ts +81 -0
- package/lib/typescript/module/src/types.d.ts.map +1 -0
- package/package.json +91 -112
- package/src/NativeOkhi.ts +68 -0
- package/src/index.tsx +271 -3
- package/src/types.ts +90 -0
- package/android/src/main/java/com/reactnativeokhi/OkhiModule.java +0 -389
- package/android/src/main/java/com/reactnativeokhi/OkhiPackage.java +0 -28
- package/ios/OkHiExtension.swift +0 -27
- package/ios/OkHiStruct.swift +0 -29
- package/ios/Okhi-Bridging-Header.h +0 -3
- package/ios/Okhi.m +0 -62
- package/ios/Okhi.swift +0 -325
- package/ios/Okhi.xcodeproj/project.pbxproj +0 -283
- package/lib/commonjs/OkCollect/Helpers.js +0 -40
- package/lib/commonjs/OkCollect/Helpers.js.map +0 -1
- package/lib/commonjs/OkCollect/OkHiLocationManager.js +0 -305
- package/lib/commonjs/OkCollect/OkHiLocationManager.js.map +0 -1
- package/lib/commonjs/OkCollect/Spinner.js +0 -27
- package/lib/commonjs/OkCollect/Spinner.js.map +0 -1
- package/lib/commonjs/OkCollect/Util.js +0 -226
- package/lib/commonjs/OkCollect/Util.js.map +0 -1
- package/lib/commonjs/OkCollect/app.json +0 -4
- package/lib/commonjs/OkCollect/index.js +0 -47
- package/lib/commonjs/OkCollect/index.js.map +0 -1
- package/lib/commonjs/OkCollect/types.js +0 -6
- package/lib/commonjs/OkCollect/types.js.map +0 -1
- package/lib/commonjs/OkCore/Helpers.js +0 -386
- package/lib/commonjs/OkCore/Helpers.js.map +0 -1
- package/lib/commonjs/OkCore/OkHiException.js +0 -96
- package/lib/commonjs/OkCore/OkHiException.js.map +0 -1
- package/lib/commonjs/OkCore/OkHiMode.js +0 -14
- package/lib/commonjs/OkCore/OkHiMode.js.map +0 -1
- package/lib/commonjs/OkCore/_helpers.js +0 -41
- package/lib/commonjs/OkCore/_helpers.js.map +0 -1
- package/lib/commonjs/OkCore/_types.js +0 -2
- package/lib/commonjs/OkCore/_types.js.map +0 -1
- package/lib/commonjs/OkCore/index.js +0 -119
- package/lib/commonjs/OkCore/index.js.map +0 -1
- package/lib/commonjs/OkCore/types.js +0 -6
- package/lib/commonjs/OkCore/types.js.map +0 -1
- package/lib/commonjs/OkHiNativeModule/index.js +0 -19
- package/lib/commonjs/OkHiNativeModule/index.js.map +0 -1
- package/lib/commonjs/OkVerify/index.js +0 -211
- package/lib/commonjs/OkVerify/index.js.map +0 -1
- package/lib/commonjs/OkVerify/types.js.map +0 -1
- package/lib/module/OkCollect/Helpers.js +0 -34
- package/lib/module/OkCollect/Helpers.js.map +0 -1
- package/lib/module/OkCollect/OkHiLocationManager.js +0 -298
- package/lib/module/OkCollect/OkHiLocationManager.js.map +0 -1
- package/lib/module/OkCollect/Spinner.js +0 -20
- package/lib/module/OkCollect/Spinner.js.map +0 -1
- package/lib/module/OkCollect/Util.js +0 -214
- package/lib/module/OkCollect/Util.js.map +0 -1
- package/lib/module/OkCollect/app.json +0 -4
- package/lib/module/OkCollect/index.js +0 -4
- package/lib/module/OkCollect/index.js.map +0 -1
- package/lib/module/OkCollect/types.js +0 -2
- package/lib/module/OkCollect/types.js.map +0 -1
- package/lib/module/OkCore/Helpers.js +0 -363
- package/lib/module/OkCore/Helpers.js.map +0 -1
- package/lib/module/OkCore/OkHiException.js +0 -89
- package/lib/module/OkCore/OkHiException.js.map +0 -1
- package/lib/module/OkCore/OkHiMode.js +0 -8
- package/lib/module/OkCore/OkHiMode.js.map +0 -1
- package/lib/module/OkCore/_helpers.js +0 -34
- package/lib/module/OkCore/_helpers.js.map +0 -1
- package/lib/module/OkCore/_types.js +0 -2
- package/lib/module/OkCore/_types.js.map +0 -1
- package/lib/module/OkCore/index.js +0 -65
- package/lib/module/OkCore/index.js.map +0 -1
- package/lib/module/OkCore/types.js +0 -2
- package/lib/module/OkCore/types.js.map +0 -1
- package/lib/module/OkHiNativeModule/index.js +0 -13
- package/lib/module/OkHiNativeModule/index.js.map +0 -1
- package/lib/module/OkVerify/index.js +0 -195
- package/lib/module/OkVerify/index.js.map +0 -1
- package/lib/module/OkVerify/types.js +0 -2
- package/lib/module/OkVerify/types.js.map +0 -1
- package/lib/typescript/OkCollect/Helpers.d.ts +0 -9
- package/lib/typescript/OkCollect/OkHiLocationManager.d.ts +0 -7
- package/lib/typescript/OkCollect/Spinner.d.ts +0 -5
- package/lib/typescript/OkCollect/Util.d.ts +0 -31
- package/lib/typescript/OkCollect/index.d.ts +0 -3
- package/lib/typescript/OkCollect/types.d.ts +0 -139
- package/lib/typescript/OkCore/Helpers.d.ts +0 -95
- package/lib/typescript/OkCore/OkHiException.d.ts +0 -81
- package/lib/typescript/OkCore/OkHiMode.d.ts +0 -7
- package/lib/typescript/OkCore/_helpers.d.ts +0 -3
- package/lib/typescript/OkCore/_types.d.ts +0 -38
- package/lib/typescript/OkCore/index.d.ts +0 -17
- package/lib/typescript/OkCore/types.d.ts +0 -203
- package/lib/typescript/OkHiNativeModule/index.d.ts +0 -48
- package/lib/typescript/OkVerify/index.d.ts +0 -65
- package/lib/typescript/OkVerify/types.d.ts +0 -0
- package/lib/typescript/index.d.ts +0 -3
- package/react-native-okhi.podspec +0 -35
- package/src/OkCollect/Helpers.ts +0 -53
- package/src/OkCollect/OkHiLocationManager.tsx +0 -391
- package/src/OkCollect/Spinner.tsx +0 -18
- package/src/OkCollect/Util.ts +0 -270
- package/src/OkCollect/app.json +0 -4
- package/src/OkCollect/index.ts +0 -3
- package/src/OkCollect/types.ts +0 -154
- package/src/OkCore/Helpers.ts +0 -477
- package/src/OkCore/OkHiException.ts +0 -93
- package/src/OkCore/OkHiMode.ts +0 -7
- package/src/OkCore/_helpers.ts +0 -47
- package/src/OkCore/_types.ts +0 -37
- package/src/OkCore/index.ts +0 -87
- package/src/OkCore/types.ts +0 -235
- package/src/OkHiNativeModule/index.ts +0 -92
- package/src/OkVerify/index.ts +0 -259
- package/src/OkVerify/types.ts +0 -0
- /package/lib/commonjs/{OkVerify/types.js → types.js} +0 -0
|
@@ -0,0 +1,348 @@
|
|
|
1
|
+
import Foundation
|
|
2
|
+
import OkHi
|
|
3
|
+
import React
|
|
4
|
+
import UserNotifications
|
|
5
|
+
|
|
6
|
+
@objc public class OkHiWrapper: NSObject, OkVerifyDelegate {
|
|
7
|
+
|
|
8
|
+
// Singleton instance for delegate callbacks
|
|
9
|
+
private static let shared = OkHiWrapper()
|
|
10
|
+
|
|
11
|
+
private var okVerify: OkVerify = OkVerify()
|
|
12
|
+
private var currentPermissionCallback: ((NSNumber?, NSDictionary?) -> Void)?
|
|
13
|
+
private var currentPermissionLevelRequest: String?
|
|
14
|
+
|
|
15
|
+
private override init() {
|
|
16
|
+
super.init()
|
|
17
|
+
okVerify.delegate = self
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
@objc public static func multiply(_ a: Double, _ b: Double) -> NSNumber {
|
|
21
|
+
return NSNumber(value: a * b)
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
@objc public static func login(_ credentials: NSDictionary, callback: @escaping ([String]?) -> Void) {
|
|
25
|
+
// Extract auth dictionary
|
|
26
|
+
guard let authDict = credentials["auth"] as? NSDictionary,
|
|
27
|
+
let branchId = authDict["branchId"] as? String,
|
|
28
|
+
let clientKey = authDict["clientKey"] as? String else {
|
|
29
|
+
callback(nil)
|
|
30
|
+
return
|
|
31
|
+
}
|
|
32
|
+
let env = authDict["env"] as? String ?? "prod"
|
|
33
|
+
|
|
34
|
+
// Extract user dictionary
|
|
35
|
+
guard let userDict = credentials["user"] as? NSDictionary,
|
|
36
|
+
let phone = userDict["phone"] as? String else {
|
|
37
|
+
callback(nil)
|
|
38
|
+
return
|
|
39
|
+
}
|
|
40
|
+
let firstName = userDict["firstName"] as? String
|
|
41
|
+
let lastName = userDict["lastName"] as? String
|
|
42
|
+
let email = userDict["email"] as? String
|
|
43
|
+
let appUserId = userDict["appUserId"] as? String
|
|
44
|
+
|
|
45
|
+
// Extract optional appContext dictionary
|
|
46
|
+
var nativeAppContext: OkHiAppContext? = nil
|
|
47
|
+
if let appContextDict = credentials["appContext"] as? NSDictionary,
|
|
48
|
+
let name = appContextDict["name"] as? String,
|
|
49
|
+
let version = appContextDict["version"] as? String,
|
|
50
|
+
let build = appContextDict["build"] as? String {
|
|
51
|
+
nativeAppContext = OkHiAppContext().withAppMeta(name: name, version: version, build: build)
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
let auth = OkHiAuth(
|
|
55
|
+
branchId: branchId,
|
|
56
|
+
clientKey: clientKey,
|
|
57
|
+
environment: env == "prod" ? .prod : .sandbox,
|
|
58
|
+
appContext: nativeAppContext
|
|
59
|
+
)
|
|
60
|
+
|
|
61
|
+
var user = OkHiUser(phoneNumber: phone)
|
|
62
|
+
if let firstName = firstName {
|
|
63
|
+
user = user.with(firstName: firstName)
|
|
64
|
+
}
|
|
65
|
+
if let lastName = lastName {
|
|
66
|
+
user = user.with(lastName: lastName)
|
|
67
|
+
}
|
|
68
|
+
if let email = email {
|
|
69
|
+
user = user.with(email: email)
|
|
70
|
+
}
|
|
71
|
+
if let appUserId = appUserId {
|
|
72
|
+
user = user.with(appUserId: appUserId)
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
OK.shared.login(auth: auth, user: user) { results in
|
|
76
|
+
callback(results)
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
// MARK: - Helper Methods
|
|
81
|
+
|
|
82
|
+
private static func parseOkCollect(_ okcollect: NSDictionary) -> (theme: OkHiTheme, config: OkHiConfig, location: OkHi.OkHiLocation?) {
|
|
83
|
+
// Parse style
|
|
84
|
+
let styleDict = okcollect["style"] as? NSDictionary
|
|
85
|
+
let color = styleDict?["color"] as? String ?? "#005D67"
|
|
86
|
+
let logo = styleDict?["logo"] as? String ?? "https://cdn.okhi.co/icon.png"
|
|
87
|
+
|
|
88
|
+
// Parse configuration
|
|
89
|
+
let configDict = okcollect["configuration"] as? NSDictionary
|
|
90
|
+
let streetView = configDict?["streetView"] as? Bool ?? true
|
|
91
|
+
let withHomeAddressType = configDict?["withHomeAddressType"] as? Bool ?? true
|
|
92
|
+
let withWorkAddressType = configDict?["withWorkAddressType"] as? Bool ?? false
|
|
93
|
+
|
|
94
|
+
// Parse optional locationId
|
|
95
|
+
let locationId = okcollect["locationId"] as? String
|
|
96
|
+
var okhiLocation: OkHi.OkHiLocation? = nil
|
|
97
|
+
if let locationId = locationId {
|
|
98
|
+
okhiLocation = OkHi.OkHiLocation(identifier: locationId)
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
// Build theme
|
|
102
|
+
let theme = OkHiTheme()
|
|
103
|
+
.with(appBarColor: color)
|
|
104
|
+
.with(logoUrl: logo)
|
|
105
|
+
.with(primaryColor: color)
|
|
106
|
+
|
|
107
|
+
// Build config
|
|
108
|
+
var config = OkHiConfig()
|
|
109
|
+
.withAddressTypes(work: withWorkAddressType, home: withHomeAddressType)
|
|
110
|
+
if streetView {
|
|
111
|
+
config = config.enableStreetView()
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
return (theme, config, okhiLocation)
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
private static func processResponse(_ response: OkHi.OkHiSuccessResponse?, _ error: OkHi.OkHiException?, callback: @escaping (NSDictionary?, NSDictionary?) -> Void) {
|
|
118
|
+
if let response = response,
|
|
119
|
+
let userJson = response.user.toJSON(),
|
|
120
|
+
let locationJson = response.location.toJSON() {
|
|
121
|
+
let successResult: NSDictionary = ["user": userJson, "location": locationJson]
|
|
122
|
+
callback(successResult, nil)
|
|
123
|
+
} else if let error = error {
|
|
124
|
+
let errorResult: NSDictionary = ["code": error.code, "message": error.message ?? "Unable to complete operation"]
|
|
125
|
+
callback(nil, errorResult)
|
|
126
|
+
} else {
|
|
127
|
+
let errorResult: NSDictionary = ["code": "unknown", "message": "Unable to parse response"]
|
|
128
|
+
callback(nil, errorResult)
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
// MARK: - Digital Verification
|
|
133
|
+
|
|
134
|
+
@objc public static func startDigitalAddressVerification(_ okcollect: NSDictionary, callback: @escaping (NSDictionary?, NSDictionary?) -> Void) {
|
|
135
|
+
DispatchQueue.main.async {
|
|
136
|
+
guard let vc = RCTPresentedViewController() else {
|
|
137
|
+
let errorResult: NSDictionary = ["code": "unknown", "message": "Unable to retrieve current view controller"]
|
|
138
|
+
callback(nil, errorResult)
|
|
139
|
+
return
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
let (theme, config, location) = parseOkCollect(okcollect)
|
|
143
|
+
|
|
144
|
+
OK.shared.startAddressVerification(
|
|
145
|
+
vc: vc,
|
|
146
|
+
theme: theme,
|
|
147
|
+
config: config,
|
|
148
|
+
location: location
|
|
149
|
+
) { response, error in
|
|
150
|
+
processResponse(response, error, callback: callback)
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
// MARK: - Physical Verification
|
|
156
|
+
|
|
157
|
+
@objc public static func startPhysicalAddressVerification(_ okcollect: NSDictionary, callback: @escaping (NSDictionary?, NSDictionary?) -> Void) {
|
|
158
|
+
DispatchQueue.main.async {
|
|
159
|
+
guard let vc = RCTPresentedViewController() else {
|
|
160
|
+
let errorResult: NSDictionary = ["code": "unknown", "message": "Unable to retrieve current view controller"]
|
|
161
|
+
callback(nil, errorResult)
|
|
162
|
+
return
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
let (theme, config, location) = parseOkCollect(okcollect)
|
|
166
|
+
|
|
167
|
+
OK.shared.startPhysicalAddressVerification(
|
|
168
|
+
vc: vc,
|
|
169
|
+
theme: theme,
|
|
170
|
+
config: config,
|
|
171
|
+
location: location
|
|
172
|
+
) { response, error in
|
|
173
|
+
processResponse(response, error, callback: callback)
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
// MARK: - Digital and Physical Verification
|
|
179
|
+
|
|
180
|
+
@objc public static func startDigitalAndPhysicalAddressVerification(_ okcollect: NSDictionary, callback: @escaping (NSDictionary?, NSDictionary?) -> Void) {
|
|
181
|
+
DispatchQueue.main.async {
|
|
182
|
+
guard let vc = RCTPresentedViewController() else {
|
|
183
|
+
let errorResult: NSDictionary = ["code": "unknown", "message": "Unable to retrieve current view controller"]
|
|
184
|
+
callback(nil, errorResult)
|
|
185
|
+
return
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
let (theme, config, location) = parseOkCollect(okcollect)
|
|
189
|
+
|
|
190
|
+
OK.shared.startDigitalAndPhysicalAddressVerification(
|
|
191
|
+
vc: vc,
|
|
192
|
+
theme: theme,
|
|
193
|
+
config: config,
|
|
194
|
+
location: location
|
|
195
|
+
) { response, error in
|
|
196
|
+
processResponse(response, error, callback: callback)
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
// MARK: - Create Address
|
|
202
|
+
|
|
203
|
+
@objc public static func createAddress(_ okcollect: NSDictionary, callback: @escaping (NSDictionary?, NSDictionary?) -> Void) {
|
|
204
|
+
DispatchQueue.main.async {
|
|
205
|
+
guard let vc = RCTPresentedViewController() else {
|
|
206
|
+
let errorResult: NSDictionary = ["code": "unknown", "message": "Unable to retrieve current view controller"]
|
|
207
|
+
callback(nil, errorResult)
|
|
208
|
+
return
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
let (theme, config, _) = parseOkCollect(okcollect)
|
|
212
|
+
|
|
213
|
+
OK.shared.createAddress(
|
|
214
|
+
vc: vc,
|
|
215
|
+
theme: theme,
|
|
216
|
+
config: config
|
|
217
|
+
) { response, error in
|
|
218
|
+
processResponse(response, error, callback: callback)
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
// MARK: - Check Helper Methods
|
|
224
|
+
|
|
225
|
+
@objc public static func isLocationServicesEnabled(callback: @escaping (NSNumber?, NSDictionary?) -> Void) {
|
|
226
|
+
let result = OkVerify.isLocationServicesEnabled()
|
|
227
|
+
callback(NSNumber(value: result), nil)
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
@objc public static func canOpenProtectedApps(callback: @escaping (NSNumber?, NSDictionary?) -> Void) {
|
|
231
|
+
// Always false on iOS - protected apps is Android-specific
|
|
232
|
+
callback(NSNumber(value: false), nil)
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
@objc public static func getLocationAccuracyLevel(callback: @escaping (NSString?, NSDictionary?) -> Void) {
|
|
236
|
+
let level = OkVerify.getLocationAccuracyLevel()
|
|
237
|
+
callback(level as NSString, nil)
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
@objc public static func isBackgroundLocationPermissionGranted(callback: @escaping (NSNumber?, NSDictionary?) -> Void) {
|
|
241
|
+
let result = OkVerify.isBackgroundLocationPermissionGranted()
|
|
242
|
+
callback(NSNumber(value: result), nil)
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
@objc public static func isCoarseLocationPermissionGranted(callback: @escaping (NSNumber?, NSDictionary?) -> Void) {
|
|
246
|
+
// On iOS, coarse location is granted if accuracy level is "precise" or "approximate"
|
|
247
|
+
let level = OkVerify.getLocationAccuracyLevel()
|
|
248
|
+
let result = level == "precise" || level == "approximate"
|
|
249
|
+
callback(NSNumber(value: result), nil)
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
@objc public static func isFineLocationPermissionGranted(callback: @escaping (NSNumber?, NSDictionary?) -> Void) {
|
|
253
|
+
// On iOS, fine location is granted if accuracy level is "precise"
|
|
254
|
+
let level = OkVerify.getLocationAccuracyLevel()
|
|
255
|
+
let result = level == "precise"
|
|
256
|
+
callback(NSNumber(value: result), nil)
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
@objc public static func isPlayServicesAvailable(callback: @escaping (NSNumber?, NSDictionary?) -> Void) {
|
|
260
|
+
// Always false on iOS - Play Services is Android-specific
|
|
261
|
+
callback(NSNumber(value: false), nil)
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
@objc public static func isPostNotificationPermissionGranted(callback: @escaping (NSNumber?, NSDictionary?) -> Void) {
|
|
265
|
+
UNUserNotificationCenter.current().getNotificationSettings { settings in
|
|
266
|
+
let result = settings.authorizationStatus == .authorized
|
|
267
|
+
callback(NSNumber(value: result), nil)
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
@objc public static func openProtectedApps() {
|
|
272
|
+
// No-op on iOS - protected apps is Android-specific
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
// MARK: - Request Helper Methods
|
|
276
|
+
|
|
277
|
+
@objc public static func requestLocationPermission(callback: @escaping (NSNumber?, NSDictionary?) -> Void) {
|
|
278
|
+
shared.currentPermissionCallback = callback
|
|
279
|
+
shared.currentPermissionLevelRequest = "whenInUse"
|
|
280
|
+
shared.okVerify.requestLocationPermission()
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
@objc public static func requestBackgroundLocationPermission(callback: @escaping (NSNumber?, NSDictionary?) -> Void) {
|
|
284
|
+
shared.currentPermissionCallback = callback
|
|
285
|
+
shared.currentPermissionLevelRequest = "always"
|
|
286
|
+
shared.okVerify.requestBackgroundLocationPermission()
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
@objc public static func requestEnableLocationServices(callback: @escaping (NSNumber?, NSDictionary?) -> Void) {
|
|
290
|
+
// On iOS, we cannot programmatically enable location services
|
|
291
|
+
// Return unsupported_platform error like the Nitro implementation
|
|
292
|
+
let errorResult: NSDictionary = ["code": "unsupported_platform", "message": "Requesting enable location services is not supported on iOS"]
|
|
293
|
+
callback(nil, errorResult)
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
@objc public static func requestPostNotificationPermissions(callback: @escaping (NSNumber?, NSDictionary?) -> Void) {
|
|
297
|
+
// On iOS, we cannot programmatically request notification permissions from this context
|
|
298
|
+
// Return unsupported_platform error like the Nitro implementation
|
|
299
|
+
let errorResult: NSDictionary = ["code": "unsupported_platform", "message": "Requesting post notification permissions is not supported on iOS"]
|
|
300
|
+
callback(nil, errorResult)
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
|
|
305
|
+
extension OkHiWrapper {
|
|
306
|
+
public func verify(_ okverify: OkHi.OkVerify, didChangeLocationPermissionStatus requestType: OkHi.OkVerifyLocationPermissionRequestType, status: Bool) {
|
|
307
|
+
if let callback = currentPermissionCallback, let request = currentPermissionLevelRequest {
|
|
308
|
+
if (request == "whenInUse" && requestType == .whenInUse) {
|
|
309
|
+
callback(NSNumber(value: status), nil)
|
|
310
|
+
currentPermissionCallback = nil
|
|
311
|
+
currentPermissionLevelRequest = nil
|
|
312
|
+
return
|
|
313
|
+
} else if (currentPermissionLevelRequest == "always" && requestType == .always) {
|
|
314
|
+
callback(NSNumber(value: status), nil)
|
|
315
|
+
currentPermissionCallback = nil
|
|
316
|
+
currentPermissionLevelRequest = nil
|
|
317
|
+
return
|
|
318
|
+
} else {
|
|
319
|
+
let errorResult: NSDictionary = ["code": "permission_denied", "message": "User denied permission"]
|
|
320
|
+
callback(nil, errorResult)
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
public func verify(_ okverify: OkHi.OkVerify, didInitialize result: Bool) {
|
|
326
|
+
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
public func verify(_ okverify: OkHi.OkVerify, didEncounterError error: OkHi.OkVerifyError) {
|
|
330
|
+
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
public func verify(_ okverify: OkHi.OkVerify, didStartAddressVerificationFor locationId: String) {
|
|
334
|
+
|
|
335
|
+
}
|
|
336
|
+
|
|
337
|
+
public func verify(_ okverify: OkHi.OkVerify, didStopVerificationFor locationId: String) {
|
|
338
|
+
|
|
339
|
+
}
|
|
340
|
+
|
|
341
|
+
public func verify(_ okverify: OkHi.OkVerify, didUpdateLocationPermissionStatus status: CLAuthorizationStatus) {
|
|
342
|
+
|
|
343
|
+
}
|
|
344
|
+
|
|
345
|
+
public func verify(_ okverify: OkHi.OkVerify, didUpdateNotificationPermissionStatus status: Bool) {
|
|
346
|
+
|
|
347
|
+
}
|
|
348
|
+
}
|
package/ios/Okhi.h
ADDED
package/ios/Okhi.mm
ADDED
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
#import "Okhi.h"
|
|
2
|
+
#import <React/RCTBridgeModule.h>
|
|
3
|
+
|
|
4
|
+
#if __has_include(<ReactNativeOkHi/ReactNativeOkHi-Swift.h>)
|
|
5
|
+
#import <ReactNativeOkHi/ReactNativeOkHi-Swift.h>
|
|
6
|
+
#else
|
|
7
|
+
#import "ReactNativeOkHi-Swift.h"
|
|
8
|
+
#endif
|
|
9
|
+
|
|
10
|
+
@implementation Okhi
|
|
11
|
+
- (NSNumber *)multiply:(double)a b:(double)b {
|
|
12
|
+
return [OkHiWrapper multiply:a :b];
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
- (void)login:(NSDictionary *)credentials callback:(RCTResponseSenderBlock)callback {
|
|
16
|
+
[OkHiWrapper login:credentials callback:^(NSArray<NSString *> *results) {
|
|
17
|
+
if (callback) {
|
|
18
|
+
callback(@[results ?: [NSNull null]]);
|
|
19
|
+
}
|
|
20
|
+
}];
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
- (void)startDigitalAddressVerification:(NSDictionary *)okcollect callback:(RCTResponseSenderBlock)callback {
|
|
24
|
+
[OkHiWrapper startDigitalAddressVerification:okcollect callback:^(NSDictionary *result, NSDictionary *error) {
|
|
25
|
+
if (callback) {
|
|
26
|
+
callback(@[result ?: [NSNull null], error ?: [NSNull null]]);
|
|
27
|
+
}
|
|
28
|
+
}];
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
- (void)startPhysicalAddressVerification:(NSDictionary *)okcollect callback:(RCTResponseSenderBlock)callback {
|
|
32
|
+
[OkHiWrapper startPhysicalAddressVerification:okcollect callback:^(NSDictionary *result, NSDictionary *error) {
|
|
33
|
+
if (callback) {
|
|
34
|
+
callback(@[result ?: [NSNull null], error ?: [NSNull null]]);
|
|
35
|
+
}
|
|
36
|
+
}];
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
- (void)startDigitalAndPhysicalAddressVerification:(NSDictionary *)okcollect callback:(RCTResponseSenderBlock)callback {
|
|
40
|
+
[OkHiWrapper startDigitalAndPhysicalAddressVerification:okcollect callback:^(NSDictionary *result, NSDictionary *error) {
|
|
41
|
+
if (callback) {
|
|
42
|
+
callback(@[result ?: [NSNull null], error ?: [NSNull null]]);
|
|
43
|
+
}
|
|
44
|
+
}];
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
- (void)createAddress:(NSDictionary *)okcollect callback:(RCTResponseSenderBlock)callback {
|
|
48
|
+
[OkHiWrapper createAddress:okcollect callback:^(NSDictionary *result, NSDictionary *error) {
|
|
49
|
+
if (callback) {
|
|
50
|
+
callback(@[result ?: [NSNull null], error ?: [NSNull null]]);
|
|
51
|
+
}
|
|
52
|
+
}];
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
// MARK: - Helper Methods
|
|
56
|
+
|
|
57
|
+
- (void)isLocationServicesEnabled:(RCTResponseSenderBlock)callback {
|
|
58
|
+
[OkHiWrapper isLocationServicesEnabledWithCallback:^(NSNumber *result, NSDictionary *error) {
|
|
59
|
+
if (callback) {
|
|
60
|
+
callback(@[result ?: [NSNull null], error ?: [NSNull null]]);
|
|
61
|
+
}
|
|
62
|
+
}];
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
- (void)canOpenProtectedApps:(RCTResponseSenderBlock)callback {
|
|
66
|
+
[OkHiWrapper canOpenProtectedAppsWithCallback:^(NSNumber *result, NSDictionary *error) {
|
|
67
|
+
if (callback) {
|
|
68
|
+
callback(@[result ?: [NSNull null], error ?: [NSNull null]]);
|
|
69
|
+
}
|
|
70
|
+
}];
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
- (void)getLocationAccuracyLevel:(RCTResponseSenderBlock)callback {
|
|
74
|
+
[OkHiWrapper getLocationAccuracyLevelWithCallback:^(NSString *result, NSDictionary *error) {
|
|
75
|
+
if (callback) {
|
|
76
|
+
callback(@[result ?: [NSNull null], error ?: [NSNull null]]);
|
|
77
|
+
}
|
|
78
|
+
}];
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
- (void)isBackgroundLocationPermissionGranted:(RCTResponseSenderBlock)callback {
|
|
82
|
+
[OkHiWrapper isBackgroundLocationPermissionGrantedWithCallback:^(NSNumber *result, NSDictionary *error) {
|
|
83
|
+
if (callback) {
|
|
84
|
+
callback(@[result ?: [NSNull null], error ?: [NSNull null]]);
|
|
85
|
+
}
|
|
86
|
+
}];
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
- (void)isCoarseLocationPermissionGranted:(RCTResponseSenderBlock)callback {
|
|
90
|
+
[OkHiWrapper isCoarseLocationPermissionGrantedWithCallback:^(NSNumber *result, NSDictionary *error) {
|
|
91
|
+
if (callback) {
|
|
92
|
+
callback(@[result ?: [NSNull null], error ?: [NSNull null]]);
|
|
93
|
+
}
|
|
94
|
+
}];
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
- (void)isFineLocationPermissionGranted:(RCTResponseSenderBlock)callback {
|
|
98
|
+
[OkHiWrapper isFineLocationPermissionGrantedWithCallback:^(NSNumber *result, NSDictionary *error) {
|
|
99
|
+
if (callback) {
|
|
100
|
+
callback(@[result ?: [NSNull null], error ?: [NSNull null]]);
|
|
101
|
+
}
|
|
102
|
+
}];
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
- (void)isPlayServicesAvailable:(RCTResponseSenderBlock)callback {
|
|
106
|
+
[OkHiWrapper isPlayServicesAvailableWithCallback:^(NSNumber *result, NSDictionary *error) {
|
|
107
|
+
if (callback) {
|
|
108
|
+
callback(@[result ?: [NSNull null], error ?: [NSNull null]]);
|
|
109
|
+
}
|
|
110
|
+
}];
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
- (void)isPostNotificationPermissionGranted:(RCTResponseSenderBlock)callback {
|
|
114
|
+
[OkHiWrapper isPostNotificationPermissionGrantedWithCallback:^(NSNumber *result, NSDictionary *error) {
|
|
115
|
+
if (callback) {
|
|
116
|
+
callback(@[result ?: [NSNull null], error ?: [NSNull null]]);
|
|
117
|
+
}
|
|
118
|
+
}];
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
- (void)openProtectedApps {
|
|
122
|
+
[OkHiWrapper openProtectedApps];
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
// MARK: - Request Helpers
|
|
126
|
+
|
|
127
|
+
- (void)requestLocationPermission:(RCTResponseSenderBlock)callback {
|
|
128
|
+
[OkHiWrapper requestLocationPermissionWithCallback:^(NSNumber *result, NSDictionary *error) {
|
|
129
|
+
if (callback) {
|
|
130
|
+
callback(@[result ?: [NSNull null], error ?: [NSNull null]]);
|
|
131
|
+
}
|
|
132
|
+
}];
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
- (void)requestBackgroundLocationPermission:(RCTResponseSenderBlock)callback {
|
|
136
|
+
[OkHiWrapper requestBackgroundLocationPermissionWithCallback:^(NSNumber *result, NSDictionary *error) {
|
|
137
|
+
if (callback) {
|
|
138
|
+
callback(@[result ?: [NSNull null], error ?: [NSNull null]]);
|
|
139
|
+
}
|
|
140
|
+
}];
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
- (void)requestEnableLocationServices:(RCTResponseSenderBlock)callback {
|
|
144
|
+
[OkHiWrapper requestEnableLocationServicesWithCallback:^(NSNumber *result, NSDictionary *error) {
|
|
145
|
+
if (callback) {
|
|
146
|
+
callback(@[result ?: [NSNull null], error ?: [NSNull null]]);
|
|
147
|
+
}
|
|
148
|
+
}];
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
- (void)requestPostNotificationPermissions:(RCTResponseSenderBlock)callback {
|
|
152
|
+
[OkHiWrapper requestPostNotificationPermissionsWithCallback:^(NSNumber *result, NSDictionary *error) {
|
|
153
|
+
if (callback) {
|
|
154
|
+
callback(@[result ?: [NSNull null], error ?: [NSNull null]]);
|
|
155
|
+
}
|
|
156
|
+
}];
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
- (std::shared_ptr<facebook::react::TurboModule>)getTurboModule:
|
|
160
|
+
(const facebook::react::ObjCTurboModule::InitParams &)params
|
|
161
|
+
{
|
|
162
|
+
return std::make_shared<facebook::react::NativeOkhiSpecJSI>(params);
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
+ (NSString *)moduleName
|
|
166
|
+
{
|
|
167
|
+
return @"Okhi";
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
@end
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _reactNative = require("react-native");
|
|
8
|
+
var _default = exports.default = _reactNative.TurboModuleRegistry.getEnforcing('Okhi');
|
|
9
|
+
//# sourceMappingURL=NativeOkhi.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_reactNative","require","_default","exports","default","TurboModuleRegistry","getEnforcing"],"sourceRoot":"../../src","sources":["NativeOkhi.ts"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAAqE,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAmEtDC,gCAAmB,CAACC,YAAY,CAAO,MAAM,CAAC","ignoreList":[]}
|