react-native-okhi 1.0.13-beta.1 → 1.0.13-beta.12

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.
Files changed (57) hide show
  1. package/android/.DS_Store +0 -0
  2. package/android/.idea/workspace.xml +11 -10
  3. package/android/src/main/java/com/reactnativeokhi/OkhiModule.java +21 -0
  4. package/ios/.DS_Store +0 -0
  5. package/ios/Okhi-Bridging-Header.h +1 -0
  6. package/ios/Okhi.m +6 -1
  7. package/ios/Okhi.swift +70 -18
  8. package/ios/Okhi.xcodeproj/project.xcworkspace/xcuserdata/kiano.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  9. package/lib/commonjs/OkCollect/OkHiLocationManager.js +18 -5
  10. package/lib/commonjs/OkCollect/OkHiLocationManager.js.map +1 -1
  11. package/lib/commonjs/OkCore/Helpers.js +69 -1
  12. package/lib/commonjs/OkCore/Helpers.js.map +1 -1
  13. package/lib/commonjs/OkCore/OkHiAuth.js +5 -2
  14. package/lib/commonjs/OkCore/OkHiAuth.js.map +1 -1
  15. package/lib/commonjs/OkCore/OkHiException.js +12 -0
  16. package/lib/commonjs/OkCore/OkHiException.js.map +1 -1
  17. package/lib/commonjs/OkCore/index.js +2 -2
  18. package/lib/commonjs/OkCore/index.js.map +1 -1
  19. package/lib/commonjs/OkHiNativeModule/index.js +4 -1
  20. package/lib/commonjs/OkHiNativeModule/index.js.map +1 -1
  21. package/lib/commonjs/OkVerify/index.js +73 -15
  22. package/lib/commonjs/OkVerify/index.js.map +1 -1
  23. package/lib/module/OkCollect/OkHiLocationManager.js +18 -5
  24. package/lib/module/OkCollect/OkHiLocationManager.js.map +1 -1
  25. package/lib/module/OkCore/Helpers.js +61 -3
  26. package/lib/module/OkCore/Helpers.js.map +1 -1
  27. package/lib/module/OkCore/OkHiAuth.js +5 -2
  28. package/lib/module/OkCore/OkHiAuth.js.map +1 -1
  29. package/lib/module/OkCore/OkHiException.js +12 -0
  30. package/lib/module/OkCore/OkHiException.js.map +1 -1
  31. package/lib/module/OkCore/index.js +2 -2
  32. package/lib/module/OkCore/index.js.map +1 -1
  33. package/lib/module/OkHiNativeModule/index.js +3 -1
  34. package/lib/module/OkHiNativeModule/index.js.map +1 -1
  35. package/lib/module/OkVerify/index.js +67 -13
  36. package/lib/module/OkVerify/index.js.map +1 -1
  37. package/lib/typescript/OkCore/Helpers.d.ts +10 -0
  38. package/lib/typescript/OkCore/OkHiAuth.d.ts +3 -2
  39. package/lib/typescript/OkCore/OkHiException.d.ts +8 -0
  40. package/lib/typescript/OkCore/types.d.ts +3 -0
  41. package/lib/typescript/OkHiNativeModule/index.d.ts +4 -0
  42. package/lib/typescript/OkVerify/index.d.ts +5 -0
  43. package/package.json +1 -1
  44. package/react-native-okhi.podspec +1 -2
  45. package/src/OkCollect/OkHiLocationManager.tsx +24 -9
  46. package/src/OkCore/Helpers.ts +85 -2
  47. package/src/OkCore/OkHiAuth.ts +6 -3
  48. package/src/OkCore/OkHiException.ts +9 -0
  49. package/src/OkCore/index.ts +1 -1
  50. package/src/OkCore/types.ts +15 -0
  51. package/src/OkHiNativeModule/index.ts +7 -1
  52. package/src/OkVerify/index.ts +73 -18
  53. package/android/.idea/gradle.xml +0 -19
  54. package/android/.idea/misc.xml +0 -9
  55. package/android/.idea/modules/android.iml +0 -18
  56. package/android/.idea/modules.xml +0 -8
  57. package/android/.idea/vcs.xml +0 -6
Binary file
@@ -1,21 +1,20 @@
1
1
  <?xml version="1.0" encoding="UTF-8"?>
2
2
  <project version="4">
3
+ <component name="AutoImportSettings">
4
+ <option name="autoReloadType" value="NONE" />
5
+ </component>
3
6
  <component name="ChangeListManager">
4
- <list default="true" id="f4e10cac-e2ae-4a1b-8fdb-d5cca8fffe82" name="Default Changelist" comment="">
5
- <change beforePath="$PROJECT_DIR$/../example/index.tsx" beforeDir="false" afterPath="$PROJECT_DIR$/../example/index.tsx" afterDir="false" />
6
- <change beforePath="$PROJECT_DIR$/../example/ios/OkhiExample/AppDelegate.m" beforeDir="false" afterPath="$PROJECT_DIR$/../example/ios/OkhiExample/AppDelegate.m" afterDir="false" />
7
- <change beforePath="$PROJECT_DIR$/../example/ios/OkhiExample/Info.plist" beforeDir="false" afterPath="$PROJECT_DIR$/../example/ios/OkhiExample/Info.plist" afterDir="false" />
8
- <change beforePath="$PROJECT_DIR$/../example/ios/Podfile.lock" beforeDir="false" afterPath="$PROJECT_DIR$/../example/ios/Podfile.lock" afterDir="false" />
9
- <change beforePath="$PROJECT_DIR$/../example/src/App.tsx" beforeDir="false" afterPath="$PROJECT_DIR$/../example/src/App.tsx" afterDir="false" />
10
- <change beforePath="$PROJECT_DIR$/../example/yarn.lock" beforeDir="false" afterPath="$PROJECT_DIR$/../example/yarn.lock" afterDir="false" />
11
- <change beforePath="$PROJECT_DIR$/../ios/Okhi.swift" beforeDir="false" afterPath="$PROJECT_DIR$/../ios/Okhi.swift" afterDir="false" />
12
- <change beforePath="$PROJECT_DIR$/../src/OkCore/index.ts" beforeDir="false" afterPath="$PROJECT_DIR$/../src/OkCore/index.ts" afterDir="false" />
13
- </list>
7
+ <list default="true" id="f4e10cac-e2ae-4a1b-8fdb-d5cca8fffe82" name="Default Changelist" comment="" />
14
8
  <option name="SHOW_DIALOG" value="false" />
15
9
  <option name="HIGHLIGHT_CONFLICTS" value="true" />
16
10
  <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
17
11
  <option name="LAST_RESOLUTION" value="IGNORE" />
18
12
  </component>
13
+ <component name="ExternalProjectsData">
14
+ <projectState path="$PROJECT_DIR$">
15
+ <ProjectState />
16
+ </projectState>
17
+ </component>
19
18
  <component name="Git.Settings">
20
19
  <option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$/.." />
21
20
  </component>
@@ -28,7 +27,9 @@
28
27
  <component name="PropertiesComponent">
29
28
  <property name="RunOnceActivity.OpenProjectViewOnStart" value="true" />
30
29
  <property name="RunOnceActivity.ShowReadmeOnStart" value="true" />
30
+ <property name="last_opened_file_path" value="$PROJECT_DIR$" />
31
31
  </component>
32
+ <component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="0" CustomDictionaries="0" DefaultDictionary="application-level" UseSingleDictionary="true" transferred="true" />
32
33
  <component name="TaskManager">
33
34
  <task active="true" id="Default" summary="Default task">
34
35
  <changelist id="f4e10cac-e2ae-4a1b-8fdb-d5cca8fffe82" name="Default Changelist" comment="" />
@@ -3,7 +3,9 @@ package com.reactnativeokhi;
3
3
  import android.app.Activity;
4
4
  import android.app.NotificationManager;
5
5
  import android.content.Intent;
6
+ import android.net.Uri;
6
7
  import android.os.Build;
8
+ import android.provider.Settings;
7
9
  import android.util.Base64;
8
10
 
9
11
  import androidx.annotation.NonNull;
@@ -247,6 +249,25 @@ public class OkhiModule extends ReactContextBaseJavaModule {
247
249
  promise.resolve(result);
248
250
  }
249
251
 
252
+ @ReactMethod
253
+ public void openAppSettings(Promise promise) {
254
+ Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
255
+ Uri uri = Uri.fromParts("package", getReactApplicationContext().getPackageName(), null);
256
+ intent.setData(uri);
257
+ intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
258
+ getReactApplicationContext().startActivity(intent);
259
+ }
260
+
261
+ @ReactMethod
262
+ public void addListener(String eventName) {
263
+ // Keep: Required for RN built in Event Emitter Calls.
264
+ }
265
+
266
+ @ReactMethod
267
+ public void removeListeners(Integer count) {
268
+ // Keep: Required for RN built in Event Emitter Calls.
269
+ }
270
+
250
271
  private Dynamic getConfig(ReadableMap map, String prop) {
251
272
  if (map != null && map.hasKey("android")) {
252
273
  ReadableMap config = map.getMap("android");
package/ios/.DS_Store ADDED
Binary file
@@ -1,2 +1,3 @@
1
1
  #import <React/RCTBridgeModule.h>
2
2
  #import <React/RCTViewManager.h>
3
+ #import "React/RCTEventEmitter.h"
package/ios/Okhi.m CHANGED
@@ -1,6 +1,7 @@
1
1
  #import <React/RCTBridgeModule.h>
2
+ #import "React/RCTEventEmitter.h"
2
3
 
3
- @interface RCT_EXTERN_MODULE(Okhi, NSObject)
4
+ @interface RCT_EXTERN_MODULE(Okhi, RCTEventEmitter)
4
5
 
5
6
  RCT_EXTERN_METHOD(multiply:(float)a withB:(float)b
6
7
  withResolver:(RCTPromiseResolveBlock)resolve
@@ -18,6 +19,8 @@ RCT_EXTERN_METHOD(requestBackgroundLocationPermission: (RCTPromiseResolveBlock)r
18
19
 
19
20
  RCT_EXTERN_METHOD(requestEnableLocationServices: (RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject)
20
21
 
22
+ RCT_EXTERN_METHOD(openAppSettings: (RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject)
23
+
21
24
  RCT_EXTERN_METHOD(getSystemVersion: (RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject)
22
25
 
23
26
  RCT_EXTERN_METHOD(getApplicationConfiguration: (RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject)
@@ -32,4 +35,6 @@ RCT_EXTERN_METHOD(startAddressVerification:(NSString *)phoneNumber locationId:(N
32
35
 
33
36
  RCT_EXTERN_METHOD(stopAddressVerification:(NSString *)phoneNumber locationId:(NSString *)locationId resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject)
34
37
 
38
+ RCT_EXTERN_METHOD(retriveLocationPermissionStatus: (RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject)
39
+
35
40
  @end
package/ios/Okhi.swift CHANGED
@@ -1,9 +1,9 @@
1
1
  import UIKit
2
- import OkVerify
2
+ import OkHi
3
3
  import CoreLocation
4
4
 
5
5
  @objc(Okhi)
6
- class Okhi: NSObject {
6
+ class Okhi: RCTEventEmitter {
7
7
  private enum LocationPermissionRequestType: String {
8
8
  case whenInUse = "whenInUse"
9
9
  case always = "always"
@@ -11,15 +11,18 @@ class Okhi: NSObject {
11
11
  private var currentLocationPermissionRequestType: LocationPermissionRequestType = .always
12
12
  private var resolve: RCTPromiseResolveBlock?
13
13
  private var reject: RCTPromiseRejectBlock?
14
- private var okVerify: OkHiVerify
14
+ private var initResolve: RCTPromiseResolveBlock?
15
+ private var initReject: RCTPromiseRejectBlock?
16
+ private var okVerify: OkVerify
17
+
15
18
 
16
19
  override init() {
17
- okVerify = OkHiVerify()
20
+ okVerify = OkVerify()
18
21
  super.init()
19
22
  okVerify.delegate = self
20
23
  }
21
24
 
22
- @objc static func requiresMainQueueSetup() -> Bool {
25
+ override static func requiresMainQueueSetup() -> Bool {
23
26
  return false
24
27
  }
25
28
 
@@ -57,7 +60,14 @@ class Okhi: NSObject {
57
60
  }
58
61
 
59
62
  @objc func requestEnableLocationServices(_ resolve: RCTPromiseResolveBlock, reject:RCTPromiseRejectBlock) {
60
- OkHiVerify.openAppSettings()
63
+ if let url = URL.init(string: UIApplication.openSettingsURLString) {
64
+ UIApplication.shared.open(url, options: [:], completionHandler: nil)
65
+ }
66
+ resolve(NSNull())
67
+ }
68
+
69
+ @objc func openAppSettings(_ resolve: RCTPromiseResolveBlock, reject:RCTPromiseRejectBlock) {
70
+ OkVerify.openAppSettings()
61
71
  resolve(NSNull())
62
72
  }
63
73
 
@@ -66,8 +76,8 @@ class Okhi: NSObject {
66
76
  }
67
77
 
68
78
  @objc func initializeIOS(_ branchId: String, clientKey: String, environment: String, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
69
- self.resolve = resolve
70
- self.reject = reject
79
+ self.initResolve = resolve
80
+ self.initReject = reject
71
81
  okVerify.initialize(with: branchId, clientKey: clientKey, environment: environment)
72
82
  }
73
83
 
@@ -82,6 +92,37 @@ class Okhi: NSObject {
82
92
  self.reject = reject
83
93
  okVerify.stopAddressVerification(locationId: locationId)
84
94
  }
95
+
96
+ @objc func retriveLocationPermissionStatus(_ resolve: RCTPromiseResolveBlock, reject:RCTPromiseRejectBlock) {
97
+ let manager = CLLocationManager()
98
+ let status = fetchLocationPermissionStatus(status: getLocationAuthorizationStatus(manager: manager))
99
+ resolve(status)
100
+ }
101
+
102
+ override func supportedEvents() -> [String]! {
103
+ return ["onLocationPermissionStatusUpdate"]
104
+ }
105
+
106
+ private func fetchLocationPermissionStatus(status: CLAuthorizationStatus) -> String {
107
+ var str: String = ""
108
+ switch status {
109
+ case .notDetermined:
110
+ str = "notDetermined"
111
+ case .restricted:
112
+ str = "restricted"
113
+ case .denied:
114
+ str = "denied"
115
+ case .authorizedAlways:
116
+ str = "authorizedAlways"
117
+ case .authorizedWhenInUse:
118
+ str = "authorizedWhenInUse"
119
+ case .authorized:
120
+ str = "authorized"
121
+ @unknown default:
122
+ str = "unknown"
123
+ }
124
+ return str
125
+ }
85
126
  }
86
127
 
87
128
  // MARK: - OkHi Utils
@@ -97,7 +138,11 @@ extension Okhi {
97
138
 
98
139
  // MARK: - OkVerify Delegates
99
140
  extension Okhi: OkVerifyDelegate {
100
- func verify(_ okverify: OkHiVerify, didChangeLocationPermissionStatus requestType: OkVerifyLocationPermissionRequestType, status: Bool) {
141
+ func verify(_ okverify: OkVerify, didUpdateLocationPermissionStatus status: CLAuthorizationStatus) {
142
+ sendEvent(withName: "onLocationPermissionStatusUpdate", body: fetchLocationPermissionStatus(status: status))
143
+ }
144
+
145
+ func verify(_ okverify: OkVerify, didChangeLocationPermissionStatus requestType: OkVerifyLocationPermissionRequestType, status: Bool) {
101
146
  if let resolve = self.resolve {
102
147
  if currentLocationPermissionRequestType == .whenInUse && requestType == .whenInUse {
103
148
  resolve(status)
@@ -109,25 +154,32 @@ extension Okhi: OkVerifyDelegate {
109
154
  }
110
155
  }
111
156
 
112
- func verify(_ okverify: OkHiVerify, didInitialize result: Bool) {
113
- guard let resolve = resolve else { return }
157
+ func verify(_ okverify: OkVerify, didInitialize result: Bool) {
158
+ guard let resolve = initResolve else { return }
114
159
  resolve(result)
115
- self.resolve = nil
160
+ self.initResolve = nil
161
+ self.initReject = nil
116
162
  }
117
163
 
118
- func verify(_ okverify: OkHiVerify, didEncounterError error: OkVerifyError) {
119
- guard let reject = reject else { return }
120
- reject(error.code, error.message, error)
121
- self.reject = nil
164
+ func verify(_ okverify: OkVerify, didEncounterError error: OkVerifyError) {
165
+ if let initReject = initReject {
166
+ initReject(error.code, error.message, error)
167
+ self.initResolve = nil
168
+ self.initReject = nil
169
+ } else {
170
+ guard let reject = reject else { return }
171
+ reject(error.code, error.message, error)
172
+ self.reject = nil
173
+ }
122
174
  }
123
175
 
124
- func verify(_ okverify: OkHiVerify, didStartAddressVerificationFor locationId: String) {
176
+ func verify(_ okverify: OkVerify, didStartAddressVerificationFor locationId: String) {
125
177
  guard let resolve = resolve else { return }
126
178
  resolve(locationId)
127
179
  self.resolve = nil
128
180
  }
129
181
 
130
- func verify(_ okverify: OkHiVerify, didStopVerificationFor locationId: String) {
182
+ func verify(_ okverify: OkVerify, didStopVerificationFor locationId: String) {
131
183
  guard let resolve = resolve else { return }
132
184
  resolve(locationId)
133
185
  self.resolve = nil
@@ -48,12 +48,25 @@ const OkHiLocationManager = props => {
48
48
  launch
49
49
  } = props;
50
50
  (0, _react.useEffect)(() => {
51
- if (user.phone) {
52
- const auth = new _OkHiAuth.OkHiAuth();
53
- auth.anonymousSignInWithPhoneNumber(user.phone, ['address']).then(setToken).catch(onError);
54
- (0, _OkCore.getApplicationConfiguration)().then(setApplicationConfiguration).catch(onError);
51
+ if (applicationConfiguration == null && token == null && user.phone) {
52
+ (0, _OkCore.getApplicationConfiguration)().then(config => {
53
+ if (!config && launch) {
54
+ onError(new _OkHiException.OkHiException({
55
+ code: _OkHiException.OkHiException.UNAUTHORIZED_CODE,
56
+ message: _OkHiException.OkHiException.UNAUTHORIZED_MESSAGE
57
+ }));
58
+ } else if (config) {
59
+ setApplicationConfiguration(config);
60
+ const auth = new _OkHiAuth.OkHiAuth();
61
+ auth.anonymousSignInWithPhoneNumber(user.phone, ['address'], config).then(setToken).catch(onError);
62
+ }
63
+ }).catch(error => {
64
+ if (launch) {
65
+ onError(error);
66
+ }
67
+ });
55
68
  }
56
- }, [onError, user.phone]);
69
+ }, [onError, user.phone, launch, applicationConfiguration, token]);
57
70
 
58
71
  const handleOnMessage = _ref => {
59
72
  let {
@@ -1 +1 @@
1
- {"version":3,"sources":["OkHiLocationManager.tsx"],"names":["OkHiLocationManager","props","token","setToken","applicationConfiguration","setApplicationConfiguration","defaultStyle","flex","style","user","onSuccess","onCloseRequest","onError","loader","launch","phone","auth","OkHiAuth","anonymousSignInWithPhoneNumber","then","catch","handleOnMessage","nativeEvent","data","response","JSON","parse","message","OkHiException","code","UNKNOWN_ERROR_CODE","payload","toString","location","startVerification","config","createdUser","Promise","resolve","reject","id","BAD_REQUEST_CODE","lat","lon","error","errorMessage","Error","handleOnError","NETWORK_ERROR_CODE","NETWORK_ERROR_MESSAGE","renderContent","jsAfterLoad","jsBeforeLoad","uri","Platform","OS","undefined"],"mappings":"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","sourcesContent":["import React, { useState, useEffect } from 'react';\nimport { Modal, SafeAreaView, Platform } from 'react-native';\nimport { WebView, WebViewMessageEvent } from 'react-native-webview';\nimport { Spinner } from './Spinner';\nimport type {\n OkHiLocationManagerResponse,\n OkHiLocationManagerProps,\n} from './types';\nimport {\n getFrameUrl,\n generateJavaScriptStartScript,\n generateStartDataPayload,\n parseOkHiLocation,\n} from './Util';\nimport { OkHiException } from '../OkCore/OkHiException';\nimport { OkHiAuth } from '../OkCore/OkHiAuth';\nimport type { AuthApplicationConfig } from '../OkCore/_types';\nimport { start as sv } from '../OkVerify';\nimport type { OkVerifyStartConfiguration } from '../OkVerify/types';\nimport { getApplicationConfiguration } from '../OkCore';\n/**\n * The OkHiLocationManager React Component is used to display an in app modal, enabling the user to quickly create an accurate OkHi address.\n */\nexport const OkHiLocationManager = (props: OkHiLocationManagerProps) => {\n const [token, setToken] = useState<string | null>(null);\n const [applicationConfiguration, setApplicationConfiguration] =\n useState<AuthApplicationConfig | null>(null);\n const defaultStyle = { flex: 1 };\n const style = props.style\n ? { ...props.style, ...defaultStyle }\n : defaultStyle;\n\n const { user, onSuccess, onCloseRequest, onError, loader, launch } = props;\n\n useEffect(() => {\n if (user.phone) {\n const auth = new OkHiAuth();\n auth\n .anonymousSignInWithPhoneNumber(user.phone, ['address'])\n .then(setToken)\n .catch(onError);\n getApplicationConfiguration()\n .then(setApplicationConfiguration)\n .catch(onError);\n }\n }, [onError, user.phone]);\n\n const handleOnMessage = ({ nativeEvent: { data } }: WebViewMessageEvent) => {\n try {\n const response: OkHiLocationManagerResponse = JSON.parse(data);\n if (response.message === 'fatal_exit') {\n onError(\n new OkHiException({\n code: OkHiException.UNKNOWN_ERROR_CODE,\n message: response.payload.toString(),\n })\n );\n } else if (response.message === 'exit_app') {\n onCloseRequest();\n } else {\n onSuccess({\n ...response.payload,\n location: parseOkHiLocation(response.payload.location),\n startVerification: function (config?: OkVerifyStartConfiguration) {\n const createdUser = { ...this.user };\n const location = { ...this.location };\n return new Promise((resolve, reject) => {\n if (!location.id) {\n reject(\n new OkHiException({\n code: OkHiException.BAD_REQUEST_CODE,\n message: 'Missing location id from response',\n })\n );\n } else {\n sv(\n createdUser.phone,\n location.id,\n location.lat,\n location.lon,\n config\n )\n .then(resolve)\n .catch(reject);\n }\n });\n },\n });\n }\n } catch (error) {\n let errorMessage = 'Something went wrong';\n if (error instanceof Error) {\n errorMessage = error.message;\n }\n onError(\n new OkHiException({\n code: OkHiException.UNKNOWN_ERROR_CODE,\n message: errorMessage,\n })\n );\n }\n };\n\n const handleOnError = () => {\n onError(\n new OkHiException({\n code: OkHiException.NETWORK_ERROR_CODE,\n message: OkHiException.NETWORK_ERROR_MESSAGE,\n })\n );\n };\n\n const renderContent = () => {\n if (token === null || applicationConfiguration == null) {\n return loader || <Spinner />;\n }\n\n const { jsAfterLoad, jsBeforeLoad } = generateJavaScriptStartScript({\n message: 'select_location',\n payload: generateStartDataPayload(props, token, applicationConfiguration),\n });\n\n return (\n <SafeAreaView style={style}>\n <WebView\n source={{ uri: getFrameUrl(applicationConfiguration) }}\n injectedJavaScriptBeforeContentLoaded={\n Platform.OS === 'ios' ? jsBeforeLoad : undefined\n }\n injectedJavaScript={Platform.OS === 'ios' ? undefined : jsAfterLoad}\n onMessage={handleOnMessage}\n onError={handleOnError}\n onHttpError={handleOnError}\n geolocationEnabled={true}\n allowsBackForwardNavigationGestures={true}\n />\n </SafeAreaView>\n );\n };\n\n return (\n <Modal animationType=\"slide\" transparent={false} visible={launch}>\n {launch ? renderContent() : null}\n </Modal>\n );\n};\n\nexport default OkHiLocationManager;\n"]}
1
+ {"version":3,"sources":["OkHiLocationManager.tsx"],"names":["OkHiLocationManager","props","token","setToken","applicationConfiguration","setApplicationConfiguration","defaultStyle","flex","style","user","onSuccess","onCloseRequest","onError","loader","launch","phone","then","config","OkHiException","code","UNAUTHORIZED_CODE","message","UNAUTHORIZED_MESSAGE","auth","OkHiAuth","anonymousSignInWithPhoneNumber","catch","error","handleOnMessage","nativeEvent","data","response","JSON","parse","UNKNOWN_ERROR_CODE","payload","toString","location","startVerification","createdUser","Promise","resolve","reject","id","BAD_REQUEST_CODE","lat","lon","errorMessage","Error","handleOnError","NETWORK_ERROR_CODE","NETWORK_ERROR_MESSAGE","renderContent","jsAfterLoad","jsBeforeLoad","uri","Platform","OS","undefined"],"mappings":"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","sourcesContent":["import React, { useState, useEffect } from 'react';\nimport { Modal, SafeAreaView, Platform } from 'react-native';\nimport { WebView, WebViewMessageEvent } from 'react-native-webview';\nimport { Spinner } from './Spinner';\nimport type {\n OkHiLocationManagerResponse,\n OkHiLocationManagerProps,\n} from './types';\nimport {\n getFrameUrl,\n generateJavaScriptStartScript,\n generateStartDataPayload,\n parseOkHiLocation,\n} from './Util';\nimport { OkHiException } from '../OkCore/OkHiException';\nimport { OkHiAuth } from '../OkCore/OkHiAuth';\nimport type { AuthApplicationConfig } from '../OkCore/_types';\nimport { start as sv } from '../OkVerify';\nimport type { OkVerifyStartConfiguration } from '../OkVerify/types';\nimport { getApplicationConfiguration } from '../OkCore';\n/**\n * The OkHiLocationManager React Component is used to display an in app modal, enabling the user to quickly create an accurate OkHi address.\n */\nexport const OkHiLocationManager = (props: OkHiLocationManagerProps) => {\n const [token, setToken] = useState<string | null>(null);\n const [applicationConfiguration, setApplicationConfiguration] =\n useState<AuthApplicationConfig | null>(null);\n const defaultStyle = { flex: 1 };\n const style = props.style\n ? { ...props.style, ...defaultStyle }\n : defaultStyle;\n\n const { user, onSuccess, onCloseRequest, onError, loader, launch } = props;\n\n useEffect(() => {\n if (applicationConfiguration == null && token == null && user.phone) {\n getApplicationConfiguration()\n .then((config) => {\n if (!config && launch) {\n onError(\n new OkHiException({\n code: OkHiException.UNAUTHORIZED_CODE,\n message: OkHiException.UNAUTHORIZED_MESSAGE,\n })\n );\n } else if (config) {\n setApplicationConfiguration(config);\n const auth = new OkHiAuth();\n auth\n .anonymousSignInWithPhoneNumber(user.phone, ['address'], config)\n .then(setToken)\n .catch(onError);\n }\n })\n .catch((error) => {\n if (launch) {\n onError(error);\n }\n });\n }\n }, [onError, user.phone, launch, applicationConfiguration, token]);\n\n const handleOnMessage = ({ nativeEvent: { data } }: WebViewMessageEvent) => {\n try {\n const response: OkHiLocationManagerResponse = JSON.parse(data);\n if (response.message === 'fatal_exit') {\n onError(\n new OkHiException({\n code: OkHiException.UNKNOWN_ERROR_CODE,\n message: response.payload.toString(),\n })\n );\n } else if (response.message === 'exit_app') {\n onCloseRequest();\n } else {\n onSuccess({\n ...response.payload,\n location: parseOkHiLocation(response.payload.location),\n startVerification: function (config?: OkVerifyStartConfiguration) {\n const createdUser = { ...this.user };\n const location = { ...this.location };\n return new Promise((resolve, reject) => {\n if (!location.id) {\n reject(\n new OkHiException({\n code: OkHiException.BAD_REQUEST_CODE,\n message: 'Missing location id from response',\n })\n );\n } else {\n sv(\n createdUser.phone,\n location.id,\n location.lat,\n location.lon,\n config\n )\n .then(resolve)\n .catch(reject);\n }\n });\n },\n });\n }\n } catch (error) {\n let errorMessage = 'Something went wrong';\n if (error instanceof Error) {\n errorMessage = error.message;\n }\n onError(\n new OkHiException({\n code: OkHiException.UNKNOWN_ERROR_CODE,\n message: errorMessage,\n })\n );\n }\n };\n\n const handleOnError = () => {\n onError(\n new OkHiException({\n code: OkHiException.NETWORK_ERROR_CODE,\n message: OkHiException.NETWORK_ERROR_MESSAGE,\n })\n );\n };\n\n const renderContent = () => {\n if (token === null || applicationConfiguration == null) {\n return loader || <Spinner />;\n }\n\n const { jsAfterLoad, jsBeforeLoad } = generateJavaScriptStartScript({\n message: 'select_location',\n payload: generateStartDataPayload(props, token, applicationConfiguration),\n });\n\n return (\n <SafeAreaView style={style}>\n <WebView\n source={{ uri: getFrameUrl(applicationConfiguration) }}\n injectedJavaScriptBeforeContentLoaded={\n Platform.OS === 'ios' ? jsBeforeLoad : undefined\n }\n injectedJavaScript={Platform.OS === 'ios' ? undefined : jsAfterLoad}\n onMessage={handleOnMessage}\n onError={handleOnError}\n onHttpError={handleOnError}\n geolocationEnabled={true}\n allowsBackForwardNavigationGestures={true}\n />\n </SafeAreaView>\n );\n };\n\n return (\n <Modal animationType=\"slide\" transparent={false} visible={launch}>\n {launch ? renderContent() : null}\n </Modal>\n );\n};\n\nexport default OkHiLocationManager;\n"]}
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.requestLocationPermission = exports.requestEnableLocationServices = exports.requestEnableGooglePlayServices = exports.requestBackgroundLocationPermission = exports.isLocationServicesEnabled = exports.isLocationPermissionGranted = exports.isGooglePlayServicesAvailable = exports.isBackgroundLocationPermissionGranted = exports.getSystemVersion = void 0;
6
+ exports.retriveLocationPermissionStatus = exports.requestLocationPermission = exports.requestEnableLocationServices = exports.requestEnableGooglePlayServices = exports.requestBackgroundLocationPermission = exports.request = exports.openAppSettings = exports.isLocationServicesEnabled = exports.isLocationPermissionGranted = exports.isGooglePlayServicesAvailable = exports.isBackgroundLocationPermissionGranted = exports.getSystemVersion = void 0;
7
7
 
8
8
  var _OkHiNativeModule = require("../OkHiNativeModule");
9
9
 
@@ -156,4 +156,72 @@ exports.requestEnableGooglePlayServices = requestEnableGooglePlayServices;
156
156
  const getSystemVersion = () => (0, _helpers.isValidPlatform)(_OkHiNativeModule.OkHiNativeModule.getSystemVersion);
157
157
 
158
158
  exports.getSystemVersion = getSystemVersion;
159
+
160
+ const request = (locationPermissionType, rationale, callback) => {
161
+ if (_reactNative.Platform.OS === 'ios') {
162
+ _OkHiNativeModule.OkHiNativeEvents.removeAllListeners('onLocationPermissionStatusUpdate');
163
+
164
+ _OkHiNativeModule.OkHiNativeEvents.addListener('onLocationPermissionStatusUpdate', callback);
165
+
166
+ if (locationPermissionType === 'whenInUse') {
167
+ _OkHiNativeModule.OkHiNativeModule.requestLocationPermission();
168
+ } else {
169
+ _OkHiNativeModule.OkHiNativeModule.requestBackgroundLocationPermission();
170
+ }
171
+ } else {
172
+ if (locationPermissionType === 'whenInUse') {
173
+ requestLocationPermissionAndroid().then(result => callback(result ? 'authorizedWhenInUse' : 'denied'));
174
+ } else {
175
+ requestLocationPermissionAndroid().then(async whenInUseResult => {
176
+ if (whenInUseResult) {
177
+ const version = await getSystemVersion();
178
+
179
+ if (version >= 30 && rationale) {
180
+ _reactNative.Alert.alert(rationale.title, rationale.text, [{
181
+ text: rationale.successButton ? rationale.successButton.label : 'Okay',
182
+ onPress: async () => {
183
+ const result = await requestBackgroundLocationPermission();
184
+ callback(result ? 'authorizedAlways' : 'authorizedWhenInUse');
185
+ }
186
+ }], {
187
+ onDismiss: () => {
188
+ callback('authorizedWhenInUse');
189
+ }
190
+ });
191
+ } else {
192
+ const permission = await requestBackgroundLocationPermission();
193
+ callback(permission ? 'authorizedAlways' : 'authorizedWhenInUse');
194
+ }
195
+ } else {
196
+ callback('denied');
197
+ }
198
+ });
199
+ }
200
+ }
201
+ };
202
+
203
+ exports.request = request;
204
+
205
+ const openAppSettings = () => {
206
+ _OkHiNativeModule.OkHiNativeModule.openAppSettings();
207
+ };
208
+
209
+ exports.openAppSettings = openAppSettings;
210
+
211
+ const retriveLocationPermissionStatus = async () => {
212
+ if (_reactNative.Platform.OS === 'ios') {
213
+ return _OkHiNativeModule.OkHiNativeModule.retriveLocationPermissionStatus();
214
+ }
215
+
216
+ const alwaysPerm = await isBackgroundLocationPermissionGranted();
217
+
218
+ if (alwaysPerm) {
219
+ return 'authorizedAlways';
220
+ }
221
+
222
+ const whenInUsePerm = await isLocationPermissionGranted();
223
+ return whenInUsePerm ? 'authorizedWhenInUse' : 'denied';
224
+ };
225
+
226
+ exports.retriveLocationPermissionStatus = retriveLocationPermissionStatus;
159
227
  //# sourceMappingURL=Helpers.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["Helpers.ts"],"names":["isLocationServicesEnabled","OkHiNativeModule","isLocationPermissionGranted","isBackgroundLocationPermissionGrantedAndroid","sdkVersion","getSystemVersion","hasPermission","PermissionsAndroid","check","PERMISSIONS","ACCESS_BACKGROUND_LOCATION","isBackgroundLocationPermissionGrantedIOS","isBackgroundLocationPermissionGranted","fn","Platform","OS","requestLocationPermissionAndroid","status","requestMultiple","ACCESS_FINE_LOCATION","ACCESS_COARSE_LOCATION","requestLocationPermissionIOS","requestLocationPermission","isGranted","requestBackgroundLocationPermissionAndroid","permissions","requestBackgroundLocationPermissionIOS","requestBackgroundLocationPermission","requestEnableLocationServices","isGooglePlayServicesAvailable","requestEnableGooglePlayServices"],"mappings":"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","sourcesContent":["import { OkHiNativeModule } from '../OkHiNativeModule';\nimport { PermissionsAndroid, Platform } from 'react-native';\nimport { errorHandler, isValidPlatform } from './_helpers';\n\n/**\n * Checks whether location services are enabled\n * @returns {Promise<boolean>} A promise that resolves to a boolen value indicating whether the service is available\n */\nexport const isLocationServicesEnabled = (): Promise<boolean> => {\n return isValidPlatform(OkHiNativeModule.isLocationServicesEnabled);\n};\n\n/**\n * Checks whether when in use location permission is granted\n * @returns {Promise<boolean>} A promise that resolves to a boolen value indicating whether the permission is granted\n */\nexport const isLocationPermissionGranted = (): Promise<boolean> => {\n return isValidPlatform(OkHiNativeModule.isLocationPermissionGranted);\n};\n\nconst isBackgroundLocationPermissionGrantedAndroid =\n async (): Promise<boolean> => {\n const sdkVersion = await OkHiNativeModule.getSystemVersion();\n if (sdkVersion < 23) {\n return true;\n }\n if (sdkVersion < 29) {\n return await isLocationPermissionGranted();\n }\n const hasPermission = await PermissionsAndroid.check(\n PermissionsAndroid.PERMISSIONS.ACCESS_BACKGROUND_LOCATION\n );\n return hasPermission;\n };\n\nconst isBackgroundLocationPermissionGrantedIOS = (): Promise<boolean> => {\n return OkHiNativeModule.isBackgroundLocationPermissionGranted();\n};\n\n/**\n * Checks whether background location permission is granted\n * @returns {Promise<boolean>} A promise that resolves to a boolen value indicating whether the permission is granted\n */\nexport const isBackgroundLocationPermissionGranted = (): Promise<boolean> => {\n const fn =\n Platform.OS === 'android'\n ? isBackgroundLocationPermissionGrantedAndroid\n : isBackgroundLocationPermissionGrantedIOS;\n return isValidPlatform(fn);\n};\n\nconst requestLocationPermissionAndroid = async (): Promise<boolean> => {\n const status: any = await PermissionsAndroid.requestMultiple([\n PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION,\n PermissionsAndroid.PERMISSIONS.ACCESS_COARSE_LOCATION,\n ]);\n return status['android.permission.ACCESS_FINE_LOCATION'] === 'granted';\n};\n\nconst requestLocationPermissionIOS = (): Promise<boolean> => {\n return OkHiNativeModule.requestLocationPermission();\n};\n\n/**\n * Requests for when in use location permission\n * @returns {Promise<boolean>} A promise that resolves to a boolen value indicating whether the permission is granted\n */\nexport const requestLocationPermission = async (): Promise<boolean> => {\n const isGranted = await isLocationPermissionGranted();\n if (isGranted) return isGranted;\n return errorHandler(\n Platform.OS === 'android'\n ? requestLocationPermissionAndroid\n : requestLocationPermissionIOS\n );\n};\n\nconst requestBackgroundLocationPermissionAndroid =\n async (): Promise<boolean> => {\n const sdkVersion = await OkHiNativeModule.getSystemVersion();\n if (sdkVersion < 23) return true;\n if (sdkVersion >= 29) {\n const permissions: any = [\n PermissionsAndroid.PERMISSIONS.ACCESS_BACKGROUND_LOCATION,\n ];\n const status: any = await PermissionsAndroid.requestMultiple(permissions);\n return (\n status['android.permission.ACCESS_BACKGROUND_LOCATION'] === 'granted'\n );\n } else {\n return await requestLocationPermissionAndroid();\n }\n };\n\nconst requestBackgroundLocationPermissionIOS = (): Promise<boolean> => {\n return OkHiNativeModule.requestBackgroundLocationPermission();\n};\n\n/**\n * Requests for background location permission\n * @returns {Promise<boolean>} A promise that resolves to a boolen value indicating whether the permission is granted\n */\nexport const requestBackgroundLocationPermission =\n async (): Promise<boolean> => {\n const isGranted = await isBackgroundLocationPermissionGranted();\n if (isGranted) return isGranted;\n return errorHandler(\n Platform.OS === 'android'\n ? requestBackgroundLocationPermissionAndroid\n : requestBackgroundLocationPermissionIOS\n );\n };\n\n/**\n * Requests the user to enable location services by showing an in app modal on android and opening location settings on iOS\n * @returns {Promise<boolean>} A promise that resolves to either a boolean value on android or null on iOS\n */\nexport const requestEnableLocationServices = (): Promise<boolean | null> => {\n return isValidPlatform(OkHiNativeModule.requestEnableLocationServices);\n};\n\n/**\n * Android Only - Checks if Google Play Services is available\n * @returns {Promise<boolean>} A promise that resolves to a boolean value indicating whether the service is avaialbe\n */\nexport const isGooglePlayServicesAvailable = (): Promise<boolean> => {\n return isValidPlatform(\n OkHiNativeModule.isGooglePlayServicesAvailable,\n 'android'\n );\n};\n\n/**\n * Android Only - Requests user to enable Google Play Services\n * @returns {Promise<boolean>} A promise that resolves to a boolean value indicating whether the service is avaialbe\n */\nexport const requestEnableGooglePlayServices = (): Promise<boolean> => {\n return isValidPlatform(\n OkHiNativeModule.requestEnableGooglePlayServices,\n 'android'\n );\n};\n\n/**\n * Returns the system version of the current platform\n * @returns {Promise<boolean>} A promise that resolves either a string on iOS or number on Android\n */\nexport const getSystemVersion = (): Promise<string | number> =>\n isValidPlatform(OkHiNativeModule.getSystemVersion);\n"]}
1
+ {"version":3,"sources":["Helpers.ts"],"names":["isLocationServicesEnabled","OkHiNativeModule","isLocationPermissionGranted","isBackgroundLocationPermissionGrantedAndroid","sdkVersion","getSystemVersion","hasPermission","PermissionsAndroid","check","PERMISSIONS","ACCESS_BACKGROUND_LOCATION","isBackgroundLocationPermissionGrantedIOS","isBackgroundLocationPermissionGranted","fn","Platform","OS","requestLocationPermissionAndroid","status","requestMultiple","ACCESS_FINE_LOCATION","ACCESS_COARSE_LOCATION","requestLocationPermissionIOS","requestLocationPermission","isGranted","requestBackgroundLocationPermissionAndroid","permissions","requestBackgroundLocationPermissionIOS","requestBackgroundLocationPermission","requestEnableLocationServices","isGooglePlayServicesAvailable","requestEnableGooglePlayServices","request","locationPermissionType","rationale","callback","OkHiNativeEvents","removeAllListeners","addListener","then","result","whenInUseResult","version","Alert","alert","title","text","successButton","label","onPress","onDismiss","permission","openAppSettings","retriveLocationPermissionStatus","alwaysPerm","whenInUsePerm"],"mappings":"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","sourcesContent":["import { OkHiNativeModule, OkHiNativeEvents } from '../OkHiNativeModule';\nimport { Alert, PermissionsAndroid, Platform } from 'react-native';\nimport { errorHandler, isValidPlatform } from './_helpers';\nimport type {\n LocationPermissionCallback,\n LocationPermissionStatus,\n LocationRequestPermissionType,\n} from './types';\n\n/**\n * Checks whether location services are enabled\n * @returns {Promise<boolean>} A promise that resolves to a boolen value indicating whether the service is available\n */\nexport const isLocationServicesEnabled = (): Promise<boolean> => {\n return isValidPlatform(OkHiNativeModule.isLocationServicesEnabled);\n};\n\n/**\n * Checks whether when in use location permission is granted\n * @returns {Promise<boolean>} A promise that resolves to a boolen value indicating whether the permission is granted\n */\nexport const isLocationPermissionGranted = (): Promise<boolean> => {\n return isValidPlatform(OkHiNativeModule.isLocationPermissionGranted);\n};\n\nconst isBackgroundLocationPermissionGrantedAndroid =\n async (): Promise<boolean> => {\n const sdkVersion = await OkHiNativeModule.getSystemVersion();\n if (sdkVersion < 23) {\n return true;\n }\n if (sdkVersion < 29) {\n return await isLocationPermissionGranted();\n }\n const hasPermission = await PermissionsAndroid.check(\n PermissionsAndroid.PERMISSIONS.ACCESS_BACKGROUND_LOCATION\n );\n return hasPermission;\n };\n\nconst isBackgroundLocationPermissionGrantedIOS = (): Promise<boolean> => {\n return OkHiNativeModule.isBackgroundLocationPermissionGranted();\n};\n\n/**\n * Checks whether background location permission is granted\n * @returns {Promise<boolean>} A promise that resolves to a boolen value indicating whether the permission is granted\n */\nexport const isBackgroundLocationPermissionGranted = (): Promise<boolean> => {\n const fn =\n Platform.OS === 'android'\n ? isBackgroundLocationPermissionGrantedAndroid\n : isBackgroundLocationPermissionGrantedIOS;\n return isValidPlatform(fn);\n};\n\nconst requestLocationPermissionAndroid = async (): Promise<boolean> => {\n const status: any = await PermissionsAndroid.requestMultiple([\n PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION,\n PermissionsAndroid.PERMISSIONS.ACCESS_COARSE_LOCATION,\n ]);\n return status['android.permission.ACCESS_FINE_LOCATION'] === 'granted';\n};\n\nconst requestLocationPermissionIOS = (): Promise<boolean> => {\n return OkHiNativeModule.requestLocationPermission();\n};\n\n/**\n * Requests for when in use location permission\n * @returns {Promise<boolean>} A promise that resolves to a boolen value indicating whether the permission is granted\n */\nexport const requestLocationPermission = async (): Promise<boolean> => {\n const isGranted = await isLocationPermissionGranted();\n if (isGranted) return isGranted;\n return errorHandler(\n Platform.OS === 'android'\n ? requestLocationPermissionAndroid\n : requestLocationPermissionIOS\n );\n};\n\nconst requestBackgroundLocationPermissionAndroid =\n async (): Promise<boolean> => {\n const sdkVersion = await OkHiNativeModule.getSystemVersion();\n if (sdkVersion < 23) return true;\n if (sdkVersion >= 29) {\n const permissions: any = [\n PermissionsAndroid.PERMISSIONS.ACCESS_BACKGROUND_LOCATION,\n ];\n const status: any = await PermissionsAndroid.requestMultiple(permissions);\n return (\n status['android.permission.ACCESS_BACKGROUND_LOCATION'] === 'granted'\n );\n } else {\n return await requestLocationPermissionAndroid();\n }\n };\n\nconst requestBackgroundLocationPermissionIOS = (): Promise<boolean> => {\n return OkHiNativeModule.requestBackgroundLocationPermission();\n};\n\n/**\n * Requests for background location permission\n * @returns {Promise<boolean>} A promise that resolves to a boolen value indicating whether the permission is granted\n */\nexport const requestBackgroundLocationPermission =\n async (): Promise<boolean> => {\n const isGranted = await isBackgroundLocationPermissionGranted();\n if (isGranted) return isGranted;\n return errorHandler(\n Platform.OS === 'android'\n ? requestBackgroundLocationPermissionAndroid\n : requestBackgroundLocationPermissionIOS\n );\n };\n\n/**\n * Requests the user to enable location services by showing an in app modal on android and opening location settings on iOS\n * @returns {Promise<boolean>} A promise that resolves to either a boolean value on android or null on iOS\n */\nexport const requestEnableLocationServices = (): Promise<boolean | null> => {\n return isValidPlatform(OkHiNativeModule.requestEnableLocationServices);\n};\n\n/**\n * Android Only - Checks if Google Play Services is available\n * @returns {Promise<boolean>} A promise that resolves to a boolean value indicating whether the service is avaialbe\n */\nexport const isGooglePlayServicesAvailable = (): Promise<boolean> => {\n return isValidPlatform(\n OkHiNativeModule.isGooglePlayServicesAvailable,\n 'android'\n );\n};\n\n/**\n * Android Only - Requests user to enable Google Play Services\n * @returns {Promise<boolean>} A promise that resolves to a boolean value indicating whether the service is avaialbe\n */\nexport const requestEnableGooglePlayServices = (): Promise<boolean> => {\n return isValidPlatform(\n OkHiNativeModule.requestEnableGooglePlayServices,\n 'android'\n );\n};\n\n/**\n * Returns the system version of the current platform\n * @returns {Promise<boolean>} A promise that resolves either a string on iOS or number on Android\n */\nexport const getSystemVersion = (): Promise<string | number> =>\n isValidPlatform(OkHiNativeModule.getSystemVersion);\n\nexport const request = (\n locationPermissionType: LocationRequestPermissionType,\n rationale: {\n title: string;\n text: string;\n successButton?: { label: string };\n } | null,\n callback: LocationPermissionCallback\n) => {\n if (Platform.OS === 'ios') {\n OkHiNativeEvents.removeAllListeners('onLocationPermissionStatusUpdate');\n OkHiNativeEvents.addListener('onLocationPermissionStatusUpdate', callback);\n if (locationPermissionType === 'whenInUse') {\n OkHiNativeModule.requestLocationPermission();\n } else {\n OkHiNativeModule.requestBackgroundLocationPermission();\n }\n } else {\n if (locationPermissionType === 'whenInUse') {\n requestLocationPermissionAndroid().then((result) =>\n callback(result ? 'authorizedWhenInUse' : 'denied')\n );\n } else {\n requestLocationPermissionAndroid().then(async (whenInUseResult) => {\n if (whenInUseResult) {\n const version = await getSystemVersion();\n if (version >= 30 && rationale) {\n Alert.alert(\n rationale.title,\n rationale.text,\n [\n {\n text: rationale.successButton\n ? rationale.successButton.label\n : 'Okay',\n onPress: async () => {\n const result = await requestBackgroundLocationPermission();\n callback(\n result ? 'authorizedAlways' : 'authorizedWhenInUse'\n );\n },\n },\n ],\n {\n onDismiss: () => {\n callback('authorizedWhenInUse');\n },\n }\n );\n } else {\n const permission = await requestBackgroundLocationPermission();\n callback(permission ? 'authorizedAlways' : 'authorizedWhenInUse');\n }\n } else {\n callback('denied');\n }\n });\n }\n }\n};\n\nexport const openAppSettings = () => {\n OkHiNativeModule.openAppSettings();\n};\n\nexport const retriveLocationPermissionStatus =\n async (): Promise<LocationPermissionStatus> => {\n if (Platform.OS === 'ios') {\n return OkHiNativeModule.retriveLocationPermissionStatus() as Promise<LocationPermissionStatus>;\n }\n const alwaysPerm = await isBackgroundLocationPermissionGranted();\n if (alwaysPerm) {\n return 'authorizedAlways';\n }\n const whenInUsePerm = await isLocationPermissionGranted();\n return whenInUsePerm ? 'authorizedWhenInUse' : 'denied';\n };\n"]}
@@ -31,9 +31,12 @@ class OkHiAuth {
31
31
  _defineProperty(this, "SANDBOX_BASE_URL", `https://sandbox-api.okhi.io/${this.API_VERSION}` + this.ANONYMOUS_SIGN_IN_ENDPOINT);
32
32
 
33
33
  _defineProperty(this, "PROD_BASE_URL", `https://api.okhi.io/${this.API_VERSION}` + this.ANONYMOUS_SIGN_IN_ENDPOINT);
34
+
35
+ _defineProperty(this, "config", null);
34
36
  }
35
37
 
36
- anonymousSignInWithPhoneNumber(phone, scopes) {
38
+ anonymousSignInWithPhoneNumber(phone, scopes, config) {
39
+ this.config = config;
37
40
  return this.anonymousSignIn({
38
41
  scopes,
39
42
  phone
@@ -50,7 +53,7 @@ class OkHiAuth {
50
53
  async anonymousSignIn(payload) {
51
54
  return new Promise(async (resolve, reject) => {
52
55
  try {
53
- const config = await (0, _.getApplicationConfiguration)();
56
+ const config = this.config || (await (0, _.getApplicationConfiguration)());
54
57
 
55
58
  if (config === null || !config.auth || !config.auth.token) {
56
59
  reject(new _OkHiException.OkHiException({
@@ -1 +1 @@
1
- {"version":3,"sources":["OkHiAuth.ts"],"names":["OkHiAuth","API_VERSION","ANONYMOUS_SIGN_IN_ENDPOINT","anonymousSignInWithPhoneNumber","phone","scopes","anonymousSignIn","anonymousSignInWithUserId","userId","user_id","payload","Promise","resolve","reject","config","auth","token","OkHiException","code","UNAUTHORIZED_CODE","message","UNAUTHORIZED_MESSAGE","context","url","SANDBOX_BASE_URL","mode","DEV_BASE_URL","OkHiMode","PROD","PROD_BASE_URL","headers","Authorization","data","axios","post","authorization_token","error","parseRequestError","response","NETWORK_ERROR_CODE","NETWORK_ERROR_MESSAGE","status","INVALID_PHONE_CODE","INVALID_PHONE_MESSAGE","UNKNOWN_ERROR_CODE","UNKNOWN_ERROR_MESSAGE"],"mappings":"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","sourcesContent":["import axios from 'axios';\nimport { OkHiMode } from './OkHiMode';\nimport { OkHiException } from './OkHiException';\nimport type { OkHiAccessScope } from './_types';\nimport { getApplicationConfiguration } from './';\n\n/**\n * @ignore\n */\nexport class OkHiAuth {\n private readonly API_VERSION = 'v5';\n private readonly ANONYMOUS_SIGN_IN_ENDPOINT = '/auth/anonymous-signin';\n private readonly DEV_BASE_URL =\n `https://dev-api.okhi.io/${this.API_VERSION}` +\n this.ANONYMOUS_SIGN_IN_ENDPOINT;\n private readonly SANDBOX_BASE_URL =\n `https://sandbox-api.okhi.io/${this.API_VERSION}` +\n this.ANONYMOUS_SIGN_IN_ENDPOINT;\n private readonly PROD_BASE_URL =\n `https://api.okhi.io/${this.API_VERSION}` + this.ANONYMOUS_SIGN_IN_ENDPOINT;\n\n anonymousSignInWithPhoneNumber(\n phone: string,\n scopes: Array<OkHiAccessScope>\n ) {\n return this.anonymousSignIn({\n scopes,\n phone,\n });\n }\n\n protected anonymousSignInWithUserId(\n userId: string,\n scopes: Array<OkHiAccessScope>\n ) {\n return this.anonymousSignIn({\n scopes,\n user_id: userId,\n });\n }\n\n private async anonymousSignIn(payload: {\n scopes: Array<OkHiAccessScope>;\n [key: string]: any;\n }): Promise<string> {\n return new Promise(async (resolve, reject) => {\n try {\n const config = await getApplicationConfiguration();\n if (config === null || !config.auth || !config.auth.token) {\n reject(\n new OkHiException({\n code: OkHiException.UNAUTHORIZED_CODE,\n message: OkHiException.UNAUTHORIZED_MESSAGE,\n })\n );\n } else {\n const { auth, context } = config;\n let url = this.SANDBOX_BASE_URL;\n if (context?.mode === ('dev' as any)) {\n url = this.DEV_BASE_URL;\n } else if (context?.mode === OkHiMode.PROD) {\n url = this.PROD_BASE_URL;\n } else {\n url = this.SANDBOX_BASE_URL;\n }\n const headers = { Authorization: auth.token };\n const { data } = await axios.post(url, payload, {\n headers,\n });\n resolve(data.authorization_token);\n }\n } catch (error) {\n reject(this.parseRequestError(error));\n }\n });\n }\n\n private parseRequestError(error: any) {\n if (!error.response) {\n return new OkHiException({\n code: OkHiException.NETWORK_ERROR_CODE,\n message: OkHiException.NETWORK_ERROR_MESSAGE,\n });\n }\n switch (error.response.status) {\n case 400:\n return new OkHiException({\n code: OkHiException.INVALID_PHONE_CODE,\n message: OkHiException.INVALID_PHONE_MESSAGE,\n });\n case 401:\n return new OkHiException({\n code: OkHiException.UNAUTHORIZED_CODE,\n message: OkHiException.UNAUTHORIZED_MESSAGE,\n });\n default:\n return new OkHiException({\n code: OkHiException.UNKNOWN_ERROR_CODE,\n message: error.message || OkHiException.UNKNOWN_ERROR_MESSAGE,\n });\n }\n }\n}\n"]}
1
+ {"version":3,"sources":["OkHiAuth.ts"],"names":["OkHiAuth","API_VERSION","ANONYMOUS_SIGN_IN_ENDPOINT","anonymousSignInWithPhoneNumber","phone","scopes","config","anonymousSignIn","anonymousSignInWithUserId","userId","user_id","payload","Promise","resolve","reject","auth","token","OkHiException","code","UNAUTHORIZED_CODE","message","UNAUTHORIZED_MESSAGE","context","url","SANDBOX_BASE_URL","mode","DEV_BASE_URL","OkHiMode","PROD","PROD_BASE_URL","headers","Authorization","data","axios","post","authorization_token","error","parseRequestError","response","NETWORK_ERROR_CODE","NETWORK_ERROR_MESSAGE","status","INVALID_PHONE_CODE","INVALID_PHONE_MESSAGE","UNKNOWN_ERROR_CODE","UNKNOWN_ERROR_MESSAGE"],"mappings":"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","sourcesContent":["import axios from 'axios';\nimport { OkHiMode } from './OkHiMode';\nimport { OkHiException } from './OkHiException';\nimport type { AuthApplicationConfig, OkHiAccessScope } from './_types';\nimport { getApplicationConfiguration } from './';\n\n/**\n * @ignore\n */\nexport class OkHiAuth {\n private readonly API_VERSION = 'v5';\n private readonly ANONYMOUS_SIGN_IN_ENDPOINT = '/auth/anonymous-signin';\n private readonly DEV_BASE_URL =\n `https://dev-api.okhi.io/${this.API_VERSION}` +\n this.ANONYMOUS_SIGN_IN_ENDPOINT;\n private readonly SANDBOX_BASE_URL =\n `https://sandbox-api.okhi.io/${this.API_VERSION}` +\n this.ANONYMOUS_SIGN_IN_ENDPOINT;\n private readonly PROD_BASE_URL =\n `https://api.okhi.io/${this.API_VERSION}` + this.ANONYMOUS_SIGN_IN_ENDPOINT;\n private config: AuthApplicationConfig | null = null;\n\n anonymousSignInWithPhoneNumber(\n phone: string,\n scopes: Array<OkHiAccessScope>,\n config: AuthApplicationConfig\n ) {\n this.config = config;\n return this.anonymousSignIn({\n scopes,\n phone,\n });\n }\n\n protected anonymousSignInWithUserId(\n userId: string,\n scopes: Array<OkHiAccessScope>\n ) {\n return this.anonymousSignIn({\n scopes,\n user_id: userId,\n });\n }\n\n private async anonymousSignIn(payload: {\n scopes: Array<OkHiAccessScope>;\n [key: string]: any;\n }): Promise<string> {\n return new Promise(async (resolve, reject) => {\n try {\n const config = this.config || (await getApplicationConfiguration());\n if (config === null || !config.auth || !config.auth.token) {\n reject(\n new OkHiException({\n code: OkHiException.UNAUTHORIZED_CODE,\n message: OkHiException.UNAUTHORIZED_MESSAGE,\n })\n );\n } else {\n const { auth, context } = config;\n let url = this.SANDBOX_BASE_URL;\n if (context?.mode === ('dev' as any)) {\n url = this.DEV_BASE_URL;\n } else if (context?.mode === OkHiMode.PROD) {\n url = this.PROD_BASE_URL;\n } else {\n url = this.SANDBOX_BASE_URL;\n }\n const headers = { Authorization: auth.token };\n const { data } = await axios.post(url, payload, {\n headers,\n });\n resolve(data.authorization_token);\n }\n } catch (error) {\n reject(this.parseRequestError(error));\n }\n });\n }\n\n private parseRequestError(error: any) {\n if (!error.response) {\n return new OkHiException({\n code: OkHiException.NETWORK_ERROR_CODE,\n message: OkHiException.NETWORK_ERROR_MESSAGE,\n });\n }\n switch (error.response.status) {\n case 400:\n return new OkHiException({\n code: OkHiException.INVALID_PHONE_CODE,\n message: OkHiException.INVALID_PHONE_MESSAGE,\n });\n case 401:\n return new OkHiException({\n code: OkHiException.UNAUTHORIZED_CODE,\n message: OkHiException.UNAUTHORIZED_MESSAGE,\n });\n default:\n return new OkHiException({\n code: OkHiException.UNKNOWN_ERROR_CODE,\n message: error.message || OkHiException.UNKNOWN_ERROR_MESSAGE,\n });\n }\n }\n}\n"]}
@@ -12,6 +12,14 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope
12
12
  * It contains static string properties that can be used to evaluate the kind of errors being thrown and handle them appropriately.
13
13
  */
14
14
  class OkHiException extends Error {
15
+ /**
16
+ * Error is thrown when location services is unavailable.
17
+ */
18
+
19
+ /**
20
+ * Error is thrown when play services is unavailable.
21
+ */
22
+
15
23
  /**
16
24
  * Error is thrown when the device can't connect to OkHi's servers.
17
25
  */
@@ -91,6 +99,10 @@ class OkHiException extends Error {
91
99
 
92
100
  exports.OkHiException = OkHiException;
93
101
 
102
+ _defineProperty(OkHiException, "LOCATION_SERVICES_UNAVAILABLE_CODE", 'location_services_unavailable');
103
+
104
+ _defineProperty(OkHiException, "PLAY_SERVICES_UNAVAILABLE_CODE", 'play_services_unavailable');
105
+
94
106
  _defineProperty(OkHiException, "NETWORK_ERROR_CODE", 'network_error');
95
107
 
96
108
  _defineProperty(OkHiException, "NETWORK_ERROR_MESSAGE", 'Unable to establish a connection with OkHi servers');
@@ -1 +1 @@
1
- {"version":3,"sources":["OkHiException.ts"],"names":["OkHiException","Error","constructor","error","message","name","code"],"mappings":";;;;;;;;;AAEA;AACA;AACA;AACA;AACO,MAAMA,aAAN,SAA4BC,KAA5B,CAAkC;AACvC;AACF;AACA;;AAEE;AACF;AACA;;AAGE;AACF;AACA;;AAEE;AACF;AACA;;AAGE;AACF;AACA;;AAEE;AACF;AACA;;AAGE;AACF;AACA;;AAEE;AACF;AACA;;AAEE;AACF;AACA;;AAEE;AACF;AACA;;AAEE;AACF;AACA;;AAEE;AACF;AACA;;AAEE;AACF;AACA;;AAEE;AACF;AACA;;AAGE;AACF;AACA;;AAGE;AACF;AACA;AACA;AACA;AACEC,EAAAA,WAAW,CAACC,KAAD,EAAmB;AAC5B,UAAMA,KAAK,CAACC,OAAZ;;AAD4B;;AAE5B,SAAKC,IAAL,GAAY,eAAZ;AACA,SAAKD,OAAL,GAAeD,KAAK,CAACC,OAArB;AACA,SAAKE,IAAL,GAAYH,KAAK,CAACG,IAAlB;AACD;;AA5EsC;;;;gBAA5BN,a,wBAIiB,e;;gBAJjBA,a,2BAST,oD;;gBATSA,a,wBAaiB,e;;gBAbjBA,a,2BAkBT,qD;;gBAlBSA,a,wBAsBiB,e;;gBAtBjBA,a,2BA2BT,+E;;gBA3BSA,a,uBA+BgB,c;;gBA/BhBA,a,0BAmCmB,8B;;gBAnCnBA,a,4BAuCqB,mB;;gBAvCrBA,a,8BA2CuB,qB;;gBA3CvBA,a,+BA+CwB,sB;;gBA/CxBA,a,kCAmD2B,mC;;gBAnD3BA,a,sBAuDe,a;;gBAvDfA,a,yBA2DkB,6B","sourcesContent":["import type { OkHiError } from './types';\n\n/**\n * The OkHiException class extends the Error class to provide additional information regarding the type of errors thrown while running any OkHiLibraries.\n * It contains static string properties that can be used to evaluate the kind of errors being thrown and handle them appropriately.\n */\nexport class OkHiException extends Error {\n /**\n * Error is thrown when the device can't connect to OkHi's servers.\n */\n static NETWORK_ERROR_CODE = 'network_error';\n /**\n * Error is thrown when the device can't connect to OkHi's servers.\n */\n static NETWORK_ERROR_MESSAGE =\n 'Unable to establish a connection with OkHi servers';\n /**\n * Error is thrown whenever there's an unknown error that occured during the usage of one of OkHi's services.\n */\n static UNKNOWN_ERROR_CODE = 'unknown_error';\n /**\n * Error is thrown whenever there's an unknown error that occured during the usage of one of OkHi's services.\n */\n static UNKNOWN_ERROR_MESSAGE =\n 'Unable to process the request. Something went wrong';\n /**\n * Error is thrown whenever an invalid phone number is provided to a service that requires a user's phone number.\n */\n static INVALID_PHONE_CODE = 'invalid_phone';\n /**\n * Error is thrown whenever an invalid phone number is provided to a service that requires a user's phone number.\n */\n static INVALID_PHONE_MESSAGE =\n 'Invalid phone number provided. Please make sure its in MSISDN standard format';\n /**\n * Error is thrown whenever there's an issue with the credentials provided.\n */\n static UNAUTHORIZED_CODE = 'unauthorized';\n /**\n * Error is thrown whenever there's an issue with the credentials provided.\n */\n static UNAUTHORIZED_MESSAGE = 'Invalid credentials provided';\n /**\n * Error is thrown whenever a particular permission is required for a service to run and isn't granted by the user.\n */\n static PERMISSION_DENIED_CODE = 'permission_denied';\n /**\n * Error is thrown whenever a particular device service is required for a library to run and isn't granted by the user.\n */\n static SERVICE_UNAVAILABLE_CODE = 'service_unavailable';\n /**\n * Error is thrown whenever an OkHi service is run on an unsupported platform.\n */\n static UNSUPPORTED_PLATFORM_CODE = 'unsupported_platform';\n /**\n * Error is thrown whenever an OkHi service is run on an unsupported platform.\n */\n static UNSUPPORTED_PLATFORM_MESSAGE = 'Current platform is not supported';\n /**\n * Error is thrown whenever bad configuration is provided to an OkHi service.\n */\n static BAD_REQUEST_CODE = 'bad_request';\n /**\n * Error is thrown whenever bad configuration is provided to an OkHi service.\n */\n static BAD_REQUEST_MESSAGE = 'Invalid parameters provided';\n\n /**\n * Specific error code string detailing the kind of error being thrown.\n */\n code: string;\n\n /**\n * @param error An error object with code and respective message.\n * @param error.code Specific error code string detailing the kind of error being thrown.\n * @param error.message Specific error message string detailing the kind of error being thrown.\n */\n constructor(error: OkHiError) {\n super(error.message);\n this.name = 'OkHiException';\n this.message = error.message;\n this.code = error.code;\n }\n}\n"]}
1
+ {"version":3,"sources":["OkHiException.ts"],"names":["OkHiException","Error","constructor","error","message","name","code"],"mappings":";;;;;;;;;AAEA;AACA;AACA;AACA;AACO,MAAMA,aAAN,SAA4BC,KAA5B,CAAkC;AACvC;AACF;AACA;;AAGE;AACF;AACA;;AAEE;AACF;AACA;;AAEE;AACF;AACA;;AAGE;AACF;AACA;;AAEE;AACF;AACA;;AAGE;AACF;AACA;;AAEE;AACF;AACA;;AAGE;AACF;AACA;;AAEE;AACF;AACA;;AAEE;AACF;AACA;;AAEE;AACF;AACA;;AAEE;AACF;AACA;;AAEE;AACF;AACA;;AAEE;AACF;AACA;;AAEE;AACF;AACA;;AAGE;AACF;AACA;;AAGE;AACF;AACA;AACA;AACA;AACEC,EAAAA,WAAW,CAACC,KAAD,EAAmB;AAC5B,UAAMA,KAAK,CAACC,OAAZ;;AAD4B;;AAE5B,SAAKC,IAAL,GAAY,eAAZ;AACA,SAAKD,OAAL,GAAeD,KAAK,CAACC,OAArB;AACA,SAAKE,IAAL,GAAYH,KAAK,CAACG,IAAlB;AACD;;AArFsC;;;;gBAA5BN,a,wCAIiC,+B;;gBAJjCA,a,oCAS6B,2B;;gBAT7BA,a,wBAaiB,e;;gBAbjBA,a,2BAkBT,oD;;gBAlBSA,a,wBAsBiB,e;;gBAtBjBA,a,2BA2BT,qD;;gBA3BSA,a,wBA+BiB,e;;gBA/BjBA,a,2BAoCT,+E;;gBApCSA,a,uBAwCgB,c;;gBAxChBA,a,0BA4CmB,8B;;gBA5CnBA,a,4BAgDqB,mB;;gBAhDrBA,a,8BAoDuB,qB;;gBApDvBA,a,+BAwDwB,sB;;gBAxDxBA,a,kCA4D2B,mC;;gBA5D3BA,a,sBAgEe,a;;gBAhEfA,a,yBAoEkB,6B","sourcesContent":["import type { OkHiError } from './types';\n\n/**\n * The OkHiException class extends the Error class to provide additional information regarding the type of errors thrown while running any OkHiLibraries.\n * It contains static string properties that can be used to evaluate the kind of errors being thrown and handle them appropriately.\n */\nexport class OkHiException extends Error {\n /**\n * Error is thrown when location services is unavailable.\n */\n static LOCATION_SERVICES_UNAVAILABLE_CODE = 'location_services_unavailable';\n\n /**\n * Error is thrown when play services is unavailable.\n */\n static PLAY_SERVICES_UNAVAILABLE_CODE = 'play_services_unavailable';\n /**\n * Error is thrown when the device can't connect to OkHi's servers.\n */\n static NETWORK_ERROR_CODE = 'network_error';\n /**\n * Error is thrown when the device can't connect to OkHi's servers.\n */\n static NETWORK_ERROR_MESSAGE =\n 'Unable to establish a connection with OkHi servers';\n /**\n * Error is thrown whenever there's an unknown error that occured during the usage of one of OkHi's services.\n */\n static UNKNOWN_ERROR_CODE = 'unknown_error';\n /**\n * Error is thrown whenever there's an unknown error that occured during the usage of one of OkHi's services.\n */\n static UNKNOWN_ERROR_MESSAGE =\n 'Unable to process the request. Something went wrong';\n /**\n * Error is thrown whenever an invalid phone number is provided to a service that requires a user's phone number.\n */\n static INVALID_PHONE_CODE = 'invalid_phone';\n /**\n * Error is thrown whenever an invalid phone number is provided to a service that requires a user's phone number.\n */\n static INVALID_PHONE_MESSAGE =\n 'Invalid phone number provided. Please make sure its in MSISDN standard format';\n /**\n * Error is thrown whenever there's an issue with the credentials provided.\n */\n static UNAUTHORIZED_CODE = 'unauthorized';\n /**\n * Error is thrown whenever there's an issue with the credentials provided.\n */\n static UNAUTHORIZED_MESSAGE = 'Invalid credentials provided';\n /**\n * Error is thrown whenever a particular permission is required for a service to run and isn't granted by the user.\n */\n static PERMISSION_DENIED_CODE = 'permission_denied';\n /**\n * Error is thrown whenever a particular device service is required for a library to run and isn't granted by the user.\n */\n static SERVICE_UNAVAILABLE_CODE = 'service_unavailable';\n /**\n * Error is thrown whenever an OkHi service is run on an unsupported platform.\n */\n static UNSUPPORTED_PLATFORM_CODE = 'unsupported_platform';\n /**\n * Error is thrown whenever an OkHi service is run on an unsupported platform.\n */\n static UNSUPPORTED_PLATFORM_MESSAGE = 'Current platform is not supported';\n /**\n * Error is thrown whenever bad configuration is provided to an OkHi service.\n */\n static BAD_REQUEST_CODE = 'bad_request';\n /**\n * Error is thrown whenever bad configuration is provided to an OkHi service.\n */\n static BAD_REQUEST_MESSAGE = 'Invalid parameters provided';\n\n /**\n * Specific error code string detailing the kind of error being thrown.\n */\n code: string;\n\n /**\n * @param error An error object with code and respective message.\n * @param error.code Specific error code string detailing the kind of error being thrown.\n * @param error.message Specific error message string detailing the kind of error being thrown.\n */\n constructor(error: OkHiError) {\n super(error.message);\n this.name = 'OkHiException';\n this.message = error.message;\n this.code = error.code;\n }\n}\n"]}
@@ -80,13 +80,13 @@ let okhiApplicationConfiguration;
80
80
 
81
81
  function initialize(configuration) {
82
82
  return (0, _helpers.errorHandler)(async () => {
83
+ okhiApplicationConfiguration = configuration;
84
+
83
85
  if (_reactNative.Platform.OS === 'android') {
84
86
  await _OkHiNativeModule.OkHiNativeModule.initialize(JSON.stringify(configuration));
85
87
  } else {
86
88
  await _OkHiNativeModule.OkHiNativeModule.initializeIOS(configuration.credentials.branchId, configuration.credentials.clientKey, configuration.context.mode);
87
89
  }
88
-
89
- okhiApplicationConfiguration = configuration;
90
90
  });
91
91
  }
92
92
  /**