react-native-okhi 1.0.13-beta.7 → 1.0.14

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 (35) hide show
  1. package/android/src/main/java/com/reactnativeokhi/OkhiModule.java +10 -0
  2. package/ios/Okhi.m +2 -0
  3. package/ios/Okhi.swift +44 -24
  4. package/lib/commonjs/OkCollect/OkHiLocationManager.js +13 -6
  5. package/lib/commonjs/OkCollect/OkHiLocationManager.js.map +1 -1
  6. package/lib/commonjs/OkCollect/Util.js +10 -1
  7. package/lib/commonjs/OkCollect/Util.js.map +1 -1
  8. package/lib/commonjs/OkCollect/app.json +1 -1
  9. package/lib/commonjs/OkCore/Helpers.js +117 -33
  10. package/lib/commonjs/OkCore/Helpers.js.map +1 -1
  11. package/lib/commonjs/OkHiNativeModule/index.js +1 -0
  12. package/lib/commonjs/OkHiNativeModule/index.js.map +1 -1
  13. package/lib/module/OkCollect/OkHiLocationManager.js +14 -7
  14. package/lib/module/OkCollect/OkHiLocationManager.js.map +1 -1
  15. package/lib/module/OkCollect/Util.js +10 -1
  16. package/lib/module/OkCollect/Util.js.map +1 -1
  17. package/lib/module/OkCollect/app.json +1 -1
  18. package/lib/module/OkCore/Helpers.js +117 -34
  19. package/lib/module/OkCore/Helpers.js.map +1 -1
  20. package/lib/module/OkHiNativeModule/index.js +1 -0
  21. package/lib/module/OkHiNativeModule/index.js.map +1 -1
  22. package/lib/typescript/OkCollect/Util.d.ts +2 -2
  23. package/lib/typescript/OkCore/Helpers.d.ts +3 -0
  24. package/lib/typescript/OkCore/types.d.ts +2 -1
  25. package/lib/typescript/OkHiNativeModule/index.d.ts +1 -0
  26. package/package.json +1 -1
  27. package/src/OkCollect/OkHiLocationManager.tsx +25 -7
  28. package/src/OkCollect/Util.ts +9 -2
  29. package/src/OkCollect/app.json +1 -1
  30. package/src/OkCore/Helpers.ts +151 -45
  31. package/src/OkCore/types.ts +5 -1
  32. package/src/OkHiNativeModule/index.ts +3 -0
  33. package/android/.DS_Store +0 -0
  34. package/android/.idea/workspace.xml +0 -43
  35. package/ios/.DS_Store +0 -0
@@ -258,6 +258,16 @@ public class OkhiModule extends ReactContextBaseJavaModule {
258
258
  getReactApplicationContext().startActivity(intent);
259
259
  }
260
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
+
261
271
  private Dynamic getConfig(ReadableMap map, String prop) {
262
272
  if (map != null && map.hasKey("android")) {
263
273
  ReadableMap config = map.getMap("android");
package/ios/Okhi.m CHANGED
@@ -35,4 +35,6 @@ RCT_EXTERN_METHOD(startAddressVerification:(NSString *)phoneNumber locationId:(N
35
35
 
36
36
  RCT_EXTERN_METHOD(stopAddressVerification:(NSString *)phoneNumber locationId:(NSString *)locationId resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject)
37
37
 
38
+ RCT_EXTERN_METHOD(retriveLocationPermissionStatus: (RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject)
39
+
38
40
  @end
package/ios/Okhi.swift CHANGED
@@ -11,8 +11,11 @@ class Okhi: RCTEventEmitter {
11
11
  private var currentLocationPermissionRequestType: LocationPermissionRequestType = .always
12
12
  private var resolve: RCTPromiseResolveBlock?
13
13
  private var reject: RCTPromiseRejectBlock?
14
+ private var initResolve: RCTPromiseResolveBlock?
15
+ private var initReject: RCTPromiseRejectBlock?
14
16
  private var okVerify: OkVerify
15
17
 
18
+
16
19
  override init() {
17
20
  okVerify = OkVerify()
18
21
  super.init()
@@ -73,8 +76,8 @@ class Okhi: RCTEventEmitter {
73
76
  }
74
77
 
75
78
  @objc func initializeIOS(_ branchId: String, clientKey: String, environment: String, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
76
- self.resolve = resolve
77
- self.reject = reject
79
+ self.initResolve = resolve
80
+ self.initReject = reject
78
81
  okVerify.initialize(with: branchId, clientKey: clientKey, environment: environment)
79
82
  }
80
83
 
@@ -90,25 +93,17 @@ class Okhi: RCTEventEmitter {
90
93
  okVerify.stopAddressVerification(locationId: locationId)
91
94
  }
92
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
+
93
102
  override func supportedEvents() -> [String]! {
94
103
  return ["onLocationPermissionStatusUpdate"]
95
104
  }
96
- }
97
-
98
- // MARK: - OkHi Utils
99
- extension Okhi {
100
- func getLocationAuthorizationStatus(manager: CLLocationManager) -> CLAuthorizationStatus {
101
- if #available(iOS 14.0, *) {
102
- return manager.authorizationStatus
103
- } else {
104
- return CLLocationManager.authorizationStatus()
105
- }
106
- }
107
- }
108
-
109
- // MARK: - OkVerify Delegates
110
- extension Okhi: OkVerifyDelegate {
111
- func verify(_ okverify: OkVerify, didUpdateLocationPermissionStatus status: CLAuthorizationStatus) {
105
+
106
+ private func fetchLocationPermissionStatus(status: CLAuthorizationStatus) -> String {
112
107
  var str: String = ""
113
108
  switch status {
114
109
  case .notDetermined:
@@ -126,7 +121,25 @@ extension Okhi: OkVerifyDelegate {
126
121
  @unknown default:
127
122
  str = "unknown"
128
123
  }
129
- sendEvent(withName: "onLocationPermissionStatusUpdate", body: str)
124
+ return str
125
+ }
126
+ }
127
+
128
+ // MARK: - OkHi Utils
129
+ extension Okhi {
130
+ func getLocationAuthorizationStatus(manager: CLLocationManager) -> CLAuthorizationStatus {
131
+ if #available(iOS 14.0, *) {
132
+ return manager.authorizationStatus
133
+ } else {
134
+ return CLLocationManager.authorizationStatus()
135
+ }
136
+ }
137
+ }
138
+
139
+ // MARK: - OkVerify Delegates
140
+ extension Okhi: OkVerifyDelegate {
141
+ func verify(_ okverify: OkVerify, didUpdateLocationPermissionStatus status: CLAuthorizationStatus) {
142
+ sendEvent(withName: "onLocationPermissionStatusUpdate", body: fetchLocationPermissionStatus(status: status))
130
143
  }
131
144
 
132
145
  func verify(_ okverify: OkVerify, didChangeLocationPermissionStatus requestType: OkVerifyLocationPermissionRequestType, status: Bool) {
@@ -142,15 +155,22 @@ extension Okhi: OkVerifyDelegate {
142
155
  }
143
156
 
144
157
  func verify(_ okverify: OkVerify, didInitialize result: Bool) {
145
- guard let resolve = resolve else { return }
158
+ guard let resolve = initResolve else { return }
146
159
  resolve(result)
147
- self.resolve = nil
160
+ self.initResolve = nil
161
+ self.initReject = nil
148
162
  }
149
163
 
150
164
  func verify(_ okverify: OkVerify, didEncounterError error: OkVerifyError) {
151
- guard let reject = reject else { return }
152
- reject(error.code, error.message, error)
153
- self.reject = nil
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
+ }
154
174
  }
155
175
 
156
176
  func verify(_ okverify: OkVerify, didStartAddressVerificationFor locationId: String) {
@@ -31,6 +31,7 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
31
31
  * The OkHiLocationManager React Component is used to display an in app modal, enabling the user to quickly create an accurate OkHi address.
32
32
  */
33
33
  const OkHiLocationManager = props => {
34
+ const [locationPermissionStatus, setLocationPermissionStatus] = (0, _react.useState)(null);
34
35
  const [token, setToken] = (0, _react.useState)(null);
35
36
  const [applicationConfiguration, setApplicationConfiguration] = (0, _react.useState)(null);
36
37
  const defaultStyle = {
@@ -58,11 +59,7 @@ const OkHiLocationManager = props => {
58
59
  } else if (config) {
59
60
  setApplicationConfiguration(config);
60
61
  const auth = new _OkHiAuth.OkHiAuth();
61
- auth.anonymousSignInWithPhoneNumber(user.phone, ['address'], config).then(setToken).catch(error => {
62
- if (launch) {
63
- onError(error);
64
- }
65
- });
62
+ auth.anonymousSignInWithPhoneNumber(user.phone, ['address'], config).then(setToken).catch(onError);
66
63
  }
67
64
  }).catch(error => {
68
65
  if (launch) {
@@ -131,17 +128,27 @@ const OkHiLocationManager = props => {
131
128
  }));
132
129
  };
133
130
 
131
+ const fetchLocationPermissionStatus = async () => {
132
+ const status = await (0, _OkCore.retriveLocationPermissionStatus)();
133
+ setLocationPermissionStatus(status);
134
+ };
135
+
134
136
  const renderContent = () => {
135
137
  if (token === null || applicationConfiguration == null) {
136
138
  return loader || /*#__PURE__*/_react.default.createElement(_Spinner.Spinner, null);
137
139
  }
138
140
 
141
+ if (_reactNative.Platform.OS === 'ios' && locationPermissionStatus === null) {
142
+ fetchLocationPermissionStatus();
143
+ return loader || /*#__PURE__*/_react.default.createElement(_Spinner.Spinner, null);
144
+ }
145
+
139
146
  const {
140
147
  jsAfterLoad,
141
148
  jsBeforeLoad
142
149
  } = (0, _Util.generateJavaScriptStartScript)({
143
150
  message: 'select_location',
144
- payload: (0, _Util.generateStartDataPayload)(props, token, applicationConfiguration)
151
+ payload: (0, _Util.generateStartDataPayload)(props, token, applicationConfiguration, locationPermissionStatus)
145
152
  });
146
153
  return /*#__PURE__*/_react.default.createElement(_reactNative.SafeAreaView, {
147
154
  style: style
@@ -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","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((error) => {\n if (launch) {\n onError(error);\n }\n });\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"]}
1
+ {"version":3,"sources":["OkHiLocationManager.tsx"],"names":["OkHiLocationManager","props","locationPermissionStatus","setLocationPermissionStatus","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","fetchLocationPermissionStatus","status","renderContent","Platform","OS","jsAfterLoad","jsBeforeLoad","uri","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 {\n getApplicationConfiguration,\n LocationPermissionStatus,\n retriveLocationPermissionStatus,\n} from '../OkCore';\n\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 [locationPermissionStatus, setLocationPermissionStatus] =\n useState<null | LocationPermissionStatus>(null);\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 fetchLocationPermissionStatus = async () => {\n const status = await retriveLocationPermissionStatus();\n setLocationPermissionStatus(status);\n };\n\n const renderContent = () => {\n if (token === null || applicationConfiguration == null) {\n return loader || <Spinner />;\n }\n\n if (Platform.OS === 'ios' && locationPermissionStatus === null) {\n fetchLocationPermissionStatus();\n return loader || <Spinner />;\n }\n\n const { jsAfterLoad, jsBeforeLoad } = generateJavaScriptStartScript({\n message: 'select_location',\n payload: generateStartDataPayload(\n props,\n token,\n applicationConfiguration,\n locationPermissionStatus\n ),\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"]}
@@ -9,12 +9,14 @@ var _OkCore = require("../OkCore");
9
9
 
10
10
  var _app = _interopRequireDefault(require("./app.json"));
11
11
 
12
+ var _reactNative = require("react-native");
13
+
12
14
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
15
 
14
16
  /**
15
17
  * @ignore
16
18
  */
17
- const generateStartDataPayload = (props, authToken, applicationConfiguration) => {
19
+ const generateStartDataPayload = (props, authToken, applicationConfiguration, locationPermissionStatus) => {
18
20
  var _props$theme, _props$theme$colors, _props$theme2, _props$theme2$appBar, _applicationConfigura, _applicationConfigura2, _applicationConfigura3, _props$config, _props$theme3, _props$theme3$appBar, _props$config2, _props$config2$appBar;
19
21
 
20
22
  const payload = {};
@@ -56,6 +58,13 @@ const generateStartDataPayload = (props, authToken, applicationConfiguration) =>
56
58
  visible: (_props$config2 = props.config) === null || _props$config2 === void 0 ? void 0 : (_props$config2$appBar = _props$config2.appBar) === null || _props$config2$appBar === void 0 ? void 0 : _props$config2$appBar.visible
57
59
  }
58
60
  };
61
+
62
+ if (_reactNative.Platform.OS === 'ios' && locationPermissionStatus) {
63
+ payload.context.permissions = {
64
+ location: locationPermissionStatus
65
+ };
66
+ }
67
+
59
68
  return payload;
60
69
  };
61
70
  /**
@@ -1 +1 @@
1
- {"version":3,"sources":["Util.ts"],"names":["generateStartDataPayload","props","authToken","applicationConfiguration","payload","style","theme","undefined","base","color","colors","primary","logo","appBar","name","app","user","phone","firstName","lastName","auth","context","container","version","developer","library","manifest","platform","config","streetView","backgroundColor","visible","getFrameUrl","DEV_FRAME_URL","PROD_FRAME_URL","SANDBOX_FRAME_URL","mode","OkHiMode","PROD","generateJavaScriptStartScript","startPayload","jsBeforeLoad","JSON","stringify","jsAfterLoad","parseOkHiLocation","location","id","lat","geo_point","lon","placeId","place_id","plusCode","plus_code","propertyName","property_name","streetName","street_name","title","subtitle","directions","otherInformation","other_information","url","streetViewPanoId","street_view","pano_id","streetViewPanoUrl","userId","user_id","propertyNumber","photo","displayTitle","display_title","country","state","city"],"mappings":"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","sourcesContent":["import type { OkHiLocationManagerProps } from './types';\nimport type { OkHiLocation } from '../OkCore';\nimport { OkHiMode } from '../OkCore';\nimport type {\n OkHiLocationManagerStartDataPayload,\n OkHiLocationManagerStartMessage,\n} from './types';\nimport manifest from './app.json'; //TODO: fix this\nimport type { AuthApplicationConfig } from '../OkCore/_types';\n\n/**\n * @ignore\n */\nexport const generateStartDataPayload = (\n props: OkHiLocationManagerProps,\n authToken: string,\n applicationConfiguration: AuthApplicationConfig\n): OkHiLocationManagerStartDataPayload => {\n const payload: any = {};\n payload.style = !props.theme\n ? undefined\n : {\n base: {\n color: props.theme?.colors?.primary,\n logo: props.theme?.appBar?.logo,\n name: applicationConfiguration.app?.name,\n },\n };\n payload.user = {\n phone: props.user.phone,\n firstName: props.user.firstName,\n lastName: props.user.lastName,\n };\n payload.auth = {\n authToken,\n };\n payload.context = {\n container: {\n name: applicationConfiguration.app?.name,\n version: applicationConfiguration.app?.version,\n },\n developer: {\n name: applicationConfiguration.context.developer,\n },\n library: {\n name: manifest.name,\n version: manifest.version,\n },\n platform: {\n name: 'react-native',\n },\n };\n payload.config = {\n streetView:\n typeof props.config?.streetView === 'boolean'\n ? props.config.streetView\n : true,\n appBar: {\n color: props.theme?.appBar?.backgroundColor,\n visible: props.config?.appBar?.visible,\n },\n };\n return payload;\n};\n\n/**\n * @ignore\n */\nexport const getFrameUrl = (\n applicationConfiguration: AuthApplicationConfig\n) => {\n const DEV_FRAME_URL = 'https://dev-manager-v5.okhi.io';\n const PROD_FRAME_URL = 'https://manager-v5.okhi.io';\n const SANDBOX_FRAME_URL = 'https://sandbox-manager-v5.okhi.io';\n if (applicationConfiguration.context.mode === OkHiMode.PROD) {\n return PROD_FRAME_URL;\n }\n if (applicationConfiguration.context.mode === ('dev' as any)) {\n return DEV_FRAME_URL;\n }\n return SANDBOX_FRAME_URL;\n};\n\n/**\n * @ignore\n */\nexport const generateJavaScriptStartScript = (startPayload: {\n message: OkHiLocationManagerStartMessage;\n payload: OkHiLocationManagerStartDataPayload;\n}) => {\n const jsBeforeLoad = `\n window.isNativeApp = true;\n window.NativeApp = {\n bridge: {\n receiveMessage: window.ReactNativeWebView.postMessage\n },\n data: ${JSON.stringify(startPayload)}\n }\n true;\n `;\n const jsAfterLoad = `\n window.startOkHiLocationManager({ \n receiveMessage: function(data) { window.ReactNativeWebView.postMessage(data) } }, \n ${JSON.stringify(startPayload)})\n `;\n return { jsBeforeLoad, jsAfterLoad };\n};\n\n/**\n * @ignore\n */\nexport const parseOkHiLocation = (location: any): OkHiLocation => {\n return {\n id: location?.id,\n lat: location?.geo_point?.lat,\n lon: location?.geo_point?.lon,\n placeId: location?.place_id,\n plusCode: location?.plus_code,\n propertyName: location?.property_name,\n streetName: location?.street_name,\n title: location?.title,\n subtitle: location?.subtitle,\n directions: location?.directions,\n otherInformation: location?.other_information,\n url: location?.url,\n streetViewPanoId: location?.street_view?.pano_id,\n streetViewPanoUrl: location?.street_view?.url,\n userId: location?.user_id,\n propertyNumber: location?.propertyNumber,\n photo: location?.photo,\n displayTitle: location?.display_title,\n country: location?.country,\n state: location?.state,\n city: location?.city,\n };\n};\n"]}
1
+ {"version":3,"sources":["Util.ts"],"names":["generateStartDataPayload","props","authToken","applicationConfiguration","locationPermissionStatus","payload","style","theme","undefined","base","color","colors","primary","logo","appBar","name","app","user","phone","firstName","lastName","auth","context","container","version","developer","library","manifest","platform","config","streetView","backgroundColor","visible","Platform","OS","permissions","location","getFrameUrl","DEV_FRAME_URL","PROD_FRAME_URL","SANDBOX_FRAME_URL","mode","OkHiMode","PROD","generateJavaScriptStartScript","startPayload","jsBeforeLoad","JSON","stringify","jsAfterLoad","parseOkHiLocation","id","lat","geo_point","lon","placeId","place_id","plusCode","plus_code","propertyName","property_name","streetName","street_name","title","subtitle","directions","otherInformation","other_information","url","streetViewPanoId","street_view","pano_id","streetViewPanoUrl","userId","user_id","propertyNumber","photo","displayTitle","display_title","country","state","city"],"mappings":"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","sourcesContent":["import type { OkHiLocationManagerProps } from './types';\nimport type { LocationPermissionStatus, OkHiLocation } from '../OkCore';\nimport { OkHiMode } from '../OkCore';\nimport type {\n OkHiLocationManagerStartDataPayload,\n OkHiLocationManagerStartMessage,\n} from './types';\nimport manifest from './app.json'; //TODO: fix this\nimport type { AuthApplicationConfig } from '../OkCore/_types';\nimport { Platform } from 'react-native';\n\n/**\n * @ignore\n */\nexport const generateStartDataPayload = (\n props: OkHiLocationManagerProps,\n authToken: string,\n applicationConfiguration: AuthApplicationConfig,\n locationPermissionStatus: LocationPermissionStatus | null\n): OkHiLocationManagerStartDataPayload => {\n const payload: any = {};\n payload.style = !props.theme\n ? undefined\n : {\n base: {\n color: props.theme?.colors?.primary,\n logo: props.theme?.appBar?.logo,\n name: applicationConfiguration.app?.name,\n },\n };\n payload.user = {\n phone: props.user.phone,\n firstName: props.user.firstName,\n lastName: props.user.lastName,\n };\n payload.auth = {\n authToken,\n };\n payload.context = {\n container: {\n name: applicationConfiguration.app?.name,\n version: applicationConfiguration.app?.version,\n },\n developer: {\n name: applicationConfiguration.context.developer,\n },\n library: {\n name: manifest.name,\n version: manifest.version,\n },\n platform: {\n name: 'react-native',\n },\n };\n payload.config = {\n streetView:\n typeof props.config?.streetView === 'boolean'\n ? props.config.streetView\n : true,\n appBar: {\n color: props.theme?.appBar?.backgroundColor,\n visible: props.config?.appBar?.visible,\n },\n };\n if (Platform.OS === 'ios' && locationPermissionStatus) {\n payload.context.permissions = {\n location: locationPermissionStatus,\n };\n }\n return payload;\n};\n\n/**\n * @ignore\n */\nexport const getFrameUrl = (\n applicationConfiguration: AuthApplicationConfig\n) => {\n const DEV_FRAME_URL = 'https://dev-manager-v5.okhi.io';\n const PROD_FRAME_URL = 'https://manager-v5.okhi.io';\n const SANDBOX_FRAME_URL = 'https://sandbox-manager-v5.okhi.io';\n if (applicationConfiguration.context.mode === OkHiMode.PROD) {\n return PROD_FRAME_URL;\n }\n if (applicationConfiguration.context.mode === ('dev' as any)) {\n return DEV_FRAME_URL;\n }\n return SANDBOX_FRAME_URL;\n};\n\n/**\n * @ignore\n */\nexport const generateJavaScriptStartScript = (startPayload: {\n message: OkHiLocationManagerStartMessage;\n payload: OkHiLocationManagerStartDataPayload;\n}) => {\n const jsBeforeLoad = `\n window.isNativeApp = true;\n window.NativeApp = {\n bridge: {\n receiveMessage: window.ReactNativeWebView.postMessage\n },\n data: ${JSON.stringify(startPayload)}\n }\n true;\n `;\n const jsAfterLoad = `\n window.startOkHiLocationManager({ \n receiveMessage: function(data) { window.ReactNativeWebView.postMessage(data) } }, \n ${JSON.stringify(startPayload)})\n `;\n return { jsBeforeLoad, jsAfterLoad };\n};\n\n/**\n * @ignore\n */\nexport const parseOkHiLocation = (location: any): OkHiLocation => {\n return {\n id: location?.id,\n lat: location?.geo_point?.lat,\n lon: location?.geo_point?.lon,\n placeId: location?.place_id,\n plusCode: location?.plus_code,\n propertyName: location?.property_name,\n streetName: location?.street_name,\n title: location?.title,\n subtitle: location?.subtitle,\n directions: location?.directions,\n otherInformation: location?.other_information,\n url: location?.url,\n streetViewPanoId: location?.street_view?.pano_id,\n streetViewPanoUrl: location?.street_view?.url,\n userId: location?.user_id,\n propertyNumber: location?.propertyNumber,\n photo: location?.photo,\n displayTitle: location?.display_title,\n country: location?.country,\n state: location?.state,\n city: location?.city,\n };\n};\n"]}
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "name": "okhiWebReactNative",
3
- "version": "1.0.13"
3
+ "version": "1.0.14"
4
4
  }
@@ -11,6 +11,8 @@ var _reactNative = require("react-native");
11
11
 
12
12
  var _helpers = require("./_helpers");
13
13
 
14
+ var _OkHiException = require("./OkHiException");
15
+
14
16
  /**
15
17
  * Checks whether location services are enabled
16
18
  * @returns {Promise<boolean>} A promise that resolves to a boolen value indicating whether the service is available
@@ -78,7 +80,6 @@ const requestLocationPermissionIOS = () => {
78
80
 
79
81
 
80
82
  const requestLocationPermission = async () => {
81
- console.log('yooo');
82
83
  const isGranted = await isLocationPermissionGranted();
83
84
  if (isGranted) return isGranted;
84
85
  return (0, _helpers.errorHandler)(_reactNative.Platform.OS === 'android' ? requestLocationPermissionAndroid : requestLocationPermissionIOS);
@@ -159,46 +160,125 @@ const getSystemVersion = () => (0, _helpers.isValidPlatform)(_OkHiNativeModule.O
159
160
  exports.getSystemVersion = getSystemVersion;
160
161
 
161
162
  const request = (locationPermissionType, rationale, callback) => {
162
- if (_reactNative.Platform.OS === 'ios') {
163
- _OkHiNativeModule.OkHiNativeEvents.removeAllListeners('onLocationPermissionStatusUpdate');
163
+ const serviceError = new _OkHiException.OkHiException({
164
+ code: _OkHiException.OkHiException.SERVICE_UNAVAILABLE_CODE,
165
+ message: 'Location service is currently not available. Please enable in app settings'
166
+ });
167
+ const googlePlayError = new _OkHiException.OkHiException({
168
+ code: _OkHiException.OkHiException.SERVICE_UNAVAILABLE_CODE,
169
+ message: 'Google Play Services is currently unavailable. Please enable in settings'
170
+ });
171
+
172
+ const handleError = error => {
173
+ callback(null, error);
174
+ };
175
+
176
+ const handleGooglePlayServiceRequest = () => {
177
+ requestEnableGooglePlayServices().then(googlePlayStatus => {
178
+ if (!googlePlayStatus) {
179
+ handleError(googlePlayError);
180
+ } else {
181
+ handleRationaleRequest();
182
+ }
183
+ });
184
+ };
185
+
186
+ const handleRationaleAlert = alertRationale => {
187
+ return new Promise((resolve, _) => {
188
+ _reactNative.Alert.alert(alertRationale.title, alertRationale.text, [{
189
+ text: alertRationale.grantButton ? alertRationale.grantButton.label : 'Grant',
190
+ onPress: () => {
191
+ resolve(true);
192
+ }
193
+ }, {
194
+ text: alertRationale.denyButton ? alertRationale.denyButton.label : 'Deny',
195
+ onPress: () => {
196
+ resolve(false);
197
+ },
198
+ style: 'cancel'
199
+ }], {
200
+ onDismiss: () => {
201
+ resolve(false);
202
+ }
203
+ });
204
+ });
205
+ };
164
206
 
165
- _OkHiNativeModule.OkHiNativeEvents.addListener('onLocationPermissionStatusUpdate', callback);
207
+ const handlePermissionRequest = () => {
208
+ if (_reactNative.Platform.OS === 'ios') {
209
+ _OkHiNativeModule.OkHiNativeEvents.removeAllListeners('onLocationPermissionStatusUpdate');
166
210
 
167
- if (locationPermissionType === 'whenInUse') {
168
- _OkHiNativeModule.OkHiNativeModule.requestLocationPermission();
169
- } else {
170
- _OkHiNativeModule.OkHiNativeModule.requestBackgroundLocationPermission();
171
- }
172
- } else {
173
- if (locationPermissionType === 'whenInUse') {
174
- requestLocationPermissionAndroid().then(result => callback(result ? 'authorizedWhenInUse' : 'denied'));
211
+ _OkHiNativeModule.OkHiNativeEvents.addListener('onLocationPermissionStatusUpdate', permissionUpdate => {
212
+ callback(permissionUpdate, null);
213
+ });
214
+
215
+ if (locationPermissionType === 'whenInUse') {
216
+ _OkHiNativeModule.OkHiNativeModule.requestLocationPermission();
217
+ } else {
218
+ _OkHiNativeModule.OkHiNativeModule.requestBackgroundLocationPermission();
219
+ }
175
220
  } else {
176
- requestLocationPermissionAndroid().then(async whenInUseResult => {
177
- if (whenInUseResult) {
178
- const version = await getSystemVersion();
179
-
180
- if (version >= 30 && rationale) {
181
- _reactNative.Alert.alert(rationale.title, rationale.text, [{
182
- text: rationale.successButton ? rationale.successButton.label : 'Okay',
183
- onPress: async () => {
184
- const result = await requestBackgroundLocationPermission();
185
- callback(result ? 'authorizedAlways' : 'authorizedWhenInUse');
186
- }
187
- }], {
188
- onDismiss: () => {
189
- callback('authorizedWhenInUse');
190
- }
191
- });
221
+ if (locationPermissionType === 'whenInUse') {
222
+ requestLocationPermissionAndroid().then(whenInUseResult => callback(whenInUseResult ? 'authorizedWhenInUse' : 'denied', null));
223
+ } else {
224
+ requestLocationPermissionAndroid().then(initialWhenInUseResult => {
225
+ if (!initialWhenInUseResult) {
226
+ callback('denied', null);
192
227
  } else {
193
- const permission = await requestBackgroundLocationPermission();
194
- callback(permission ? 'authorizedAlways' : 'authorizedWhenInUse');
228
+ callback('authorizedWhenInUse', null);
229
+ requestBackgroundLocationPermission().then(alwaysResult => {
230
+ callback(alwaysResult ? 'authorizedAlways' : 'authorizedWhenInUse', null);
231
+ });
195
232
  }
233
+ });
234
+ }
235
+ }
236
+ };
237
+
238
+ const handleRationaleRequest = async () => {
239
+ const currentStatus = await retriveLocationPermissionStatus();
240
+ let showRationale = true;
241
+
242
+ if (locationPermissionType === 'whenInUse' && (currentStatus === 'authorizedWhenInUse' || currentStatus === 'authorizedAlways')) {
243
+ showRationale = false;
244
+ }
245
+
246
+ if (locationPermissionType === 'always' && currentStatus === 'authorizedAlways') {
247
+ showRationale = false;
248
+ }
249
+
250
+ if (rationale && showRationale) {
251
+ const result = await handleRationaleAlert(rationale);
252
+
253
+ if (!result) {
254
+ callback('rationaleDissmissed', null);
255
+ } else {
256
+ handlePermissionRequest();
257
+ }
258
+ } else {
259
+ handlePermissionRequest();
260
+ }
261
+ };
262
+
263
+ isLocationServicesEnabled().then(serviceStatus => {
264
+ if (!serviceStatus && _reactNative.Platform.OS === 'ios') {
265
+ handleError(serviceError);
266
+ } else if (!serviceStatus && _reactNative.Platform.OS === 'android') {
267
+ requestEnableLocationServices().then(enableResult => {
268
+ if (!enableResult) {
269
+ handleError(serviceError);
196
270
  } else {
197
- callback('denied');
271
+ handleGooglePlayServiceRequest();
198
272
  }
199
- });
273
+ }).catch(handleError);
274
+ } else {
275
+ if (_reactNative.Platform.OS === 'ios') {
276
+ handleRationaleRequest();
277
+ } else {
278
+ handleGooglePlayServiceRequest();
279
+ }
200
280
  }
201
- }
281
+ }).catch(handleError);
202
282
  };
203
283
 
204
284
  exports.request = request;
@@ -210,6 +290,10 @@ const openAppSettings = () => {
210
290
  exports.openAppSettings = openAppSettings;
211
291
 
212
292
  const retriveLocationPermissionStatus = async () => {
293
+ if (_reactNative.Platform.OS === 'ios') {
294
+ return _OkHiNativeModule.OkHiNativeModule.retriveLocationPermissionStatus();
295
+ }
296
+
213
297
  const alwaysPerm = await isBackgroundLocationPermissionGranted();
214
298
 
215
299
  if (alwaysPerm) {
@@ -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","console","log","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 console.log('yooo');\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 const alwaysPerm = await isBackgroundLocationPermissionGranted();\n if (alwaysPerm) {\n return 'authorizedAlways';\n }\n const whenInUsePerm = await isLocationPermissionGranted();\n return whenInUsePerm ? 'authorizedWhenInUse' : 'denied';\n };\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","serviceError","OkHiException","code","SERVICE_UNAVAILABLE_CODE","message","googlePlayError","handleError","error","handleGooglePlayServiceRequest","then","googlePlayStatus","handleRationaleRequest","handleRationaleAlert","alertRationale","Promise","resolve","_","Alert","alert","title","text","grantButton","label","onPress","denyButton","style","onDismiss","handlePermissionRequest","OkHiNativeEvents","removeAllListeners","addListener","permissionUpdate","whenInUseResult","initialWhenInUseResult","alwaysResult","currentStatus","retriveLocationPermissionStatus","showRationale","result","serviceStatus","enableResult","catch","openAppSettings","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';\nimport { OkHiException } from './OkHiException';\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 denyButton?: { label: string };\n } | null,\n callback: LocationPermissionCallback\n) => {\n const serviceError = new OkHiException({\n code: OkHiException.SERVICE_UNAVAILABLE_CODE,\n message:\n 'Location service is currently not available. Please enable in app settings',\n });\n\n const googlePlayError = new OkHiException({\n code: OkHiException.SERVICE_UNAVAILABLE_CODE,\n message:\n 'Google Play Services is currently unavailable. Please enable in settings',\n });\n\n const handleError = (error: OkHiException) => {\n callback(null, error);\n };\n\n const handleGooglePlayServiceRequest = () => {\n requestEnableGooglePlayServices().then((googlePlayStatus) => {\n if (!googlePlayStatus) {\n handleError(googlePlayError);\n } else {\n handleRationaleRequest();\n }\n });\n };\n\n const handleRationaleAlert = (alertRationale: {\n title: string;\n text: string;\n grantButton?: { label: string };\n denyButton?: { label: string };\n }) => {\n return new Promise((resolve, _) => {\n Alert.alert(\n alertRationale.title,\n alertRationale.text,\n [\n {\n text: alertRationale.grantButton\n ? alertRationale.grantButton.label\n : 'Grant',\n onPress: () => {\n resolve(true);\n },\n },\n {\n text: alertRationale.denyButton\n ? alertRationale.denyButton.label\n : 'Deny',\n onPress: () => {\n resolve(false);\n },\n style: 'cancel',\n },\n ],\n {\n onDismiss: () => {\n resolve(false);\n },\n }\n );\n });\n };\n\n const handlePermissionRequest = () => {\n if (Platform.OS === 'ios') {\n OkHiNativeEvents.removeAllListeners('onLocationPermissionStatusUpdate');\n OkHiNativeEvents.addListener(\n 'onLocationPermissionStatusUpdate',\n (permissionUpdate) => {\n callback(permissionUpdate, null);\n }\n );\n if (locationPermissionType === 'whenInUse') {\n OkHiNativeModule.requestLocationPermission();\n } else {\n OkHiNativeModule.requestBackgroundLocationPermission();\n }\n } else {\n if (locationPermissionType === 'whenInUse') {\n requestLocationPermissionAndroid().then((whenInUseResult) =>\n callback(whenInUseResult ? 'authorizedWhenInUse' : 'denied', null)\n );\n } else {\n requestLocationPermissionAndroid().then((initialWhenInUseResult) => {\n if (!initialWhenInUseResult) {\n callback('denied', null);\n } else {\n callback('authorizedWhenInUse', null);\n requestBackgroundLocationPermission().then((alwaysResult) => {\n callback(\n alwaysResult ? 'authorizedAlways' : 'authorizedWhenInUse',\n null\n );\n });\n }\n });\n }\n }\n };\n\n const handleRationaleRequest = async () => {\n const currentStatus = await retriveLocationPermissionStatus();\n let showRationale = true;\n if (\n locationPermissionType === 'whenInUse' &&\n (currentStatus === 'authorizedWhenInUse' ||\n currentStatus === 'authorizedAlways')\n ) {\n showRationale = false;\n }\n if (\n locationPermissionType === 'always' &&\n currentStatus === 'authorizedAlways'\n ) {\n showRationale = false;\n }\n if (rationale && showRationale) {\n const result = await handleRationaleAlert(rationale);\n if (!result) {\n callback('rationaleDissmissed', null);\n } else {\n handlePermissionRequest();\n }\n } else {\n handlePermissionRequest();\n }\n };\n\n isLocationServicesEnabled()\n .then((serviceStatus) => {\n if (!serviceStatus && Platform.OS === 'ios') {\n handleError(serviceError);\n } else if (!serviceStatus && Platform.OS === 'android') {\n requestEnableLocationServices()\n .then((enableResult) => {\n if (!enableResult) {\n handleError(serviceError);\n } else {\n handleGooglePlayServiceRequest();\n }\n })\n .catch(handleError);\n } else {\n if (Platform.OS === 'ios') {\n handleRationaleRequest();\n } else {\n handleGooglePlayServiceRequest();\n }\n }\n })\n .catch(handleError);\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"]}
@@ -11,4 +11,5 @@ const OkHiNativeModule = _reactNative.NativeModules.Okhi;
11
11
  exports.OkHiNativeModule = OkHiNativeModule;
12
12
  const OkHiNativeEvents = new _reactNative.NativeEventEmitter(_reactNative.NativeModules.Okhi);
13
13
  exports.OkHiNativeEvents = OkHiNativeEvents;
14
+ OkHiNativeEvents.addListener('onLocationPermissionStatusUpdate', () => null);
14
15
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["index.ts"],"names":["OkHiNativeModule","NativeModules","Okhi","OkHiNativeEvents","NativeEventEmitter"],"mappings":";;;;;;;AAAA;;AAsCO,MAAMA,gBAAsC,GAAGC,2BAAcC,IAA7D;;AAEA,MAAMC,gBAAgB,GAAG,IAAIC,+BAAJ,CAAuBH,2BAAcC,IAArC,CAAzB","sourcesContent":["import { NativeModules, NativeEventEmitter } from 'react-native';\nimport type { OkVerifyStartConfiguration } from '../OkVerify/types';\n\ntype OkHiNativeModuleType = {\n multiply(a: number, b: number): Promise<number>;\n isLocationServicesEnabled(): Promise<boolean>;\n isLocationPermissionGranted(): Promise<boolean>;\n isBackgroundLocationPermissionGranted(): Promise<boolean>;\n requestLocationPermission(): Promise<boolean>;\n requestBackgroundLocationPermission(): Promise<boolean>;\n requestEnableLocationServices(): Promise<boolean>;\n isGooglePlayServicesAvailable(): Promise<boolean>;\n requestEnableGooglePlayServices(): Promise<boolean>;\n getSystemVersion(): Promise<number | string>;\n getAuthToken(branchId: string, clientKey: string): Promise<string>;\n initialize(configuration: string): Promise<void>;\n startAddressVerification(\n phoneNumber: string,\n locationId: string,\n lat: Number,\n lon: Number,\n configuration?: OkVerifyStartConfiguration\n ): Promise<string>;\n stopAddressVerification(\n phoneNumber: string,\n locationId: string\n ): Promise<string>;\n startForegroundService(): Promise<boolean>;\n stopForegroundService(): Promise<boolean>;\n isForegroundServiceRunning(): Promise<boolean>;\n initializeIOS(\n branchId: string,\n clientKey: string,\n environment: string\n ): Promise<boolean>;\n openAppSettings(): Promise<void>;\n};\n\nexport const OkHiNativeModule: OkHiNativeModuleType = NativeModules.Okhi;\n\nexport const OkHiNativeEvents = new NativeEventEmitter(NativeModules.Okhi);\n"]}
1
+ {"version":3,"sources":["index.ts"],"names":["OkHiNativeModule","NativeModules","Okhi","OkHiNativeEvents","NativeEventEmitter","addListener"],"mappings":";;;;;;;AAAA;;AAuCO,MAAMA,gBAAsC,GAAGC,2BAAcC,IAA7D;;AAEA,MAAMC,gBAAgB,GAAG,IAAIC,+BAAJ,CAAuBH,2BAAcC,IAArC,CAAzB;;AAEPC,gBAAgB,CAACE,WAAjB,CAA6B,kCAA7B,EAAiE,MAAM,IAAvE","sourcesContent":["import { NativeModules, NativeEventEmitter } from 'react-native';\nimport type { OkVerifyStartConfiguration } from '../OkVerify/types';\n\ntype OkHiNativeModuleType = {\n multiply(a: number, b: number): Promise<number>;\n isLocationServicesEnabled(): Promise<boolean>;\n isLocationPermissionGranted(): Promise<boolean>;\n isBackgroundLocationPermissionGranted(): Promise<boolean>;\n requestLocationPermission(): Promise<boolean>;\n requestBackgroundLocationPermission(): Promise<boolean>;\n requestEnableLocationServices(): Promise<boolean>;\n isGooglePlayServicesAvailable(): Promise<boolean>;\n requestEnableGooglePlayServices(): Promise<boolean>;\n getSystemVersion(): Promise<number | string>;\n getAuthToken(branchId: string, clientKey: string): Promise<string>;\n initialize(configuration: string): Promise<void>;\n startAddressVerification(\n phoneNumber: string,\n locationId: string,\n lat: Number,\n lon: Number,\n configuration?: OkVerifyStartConfiguration\n ): Promise<string>;\n stopAddressVerification(\n phoneNumber: string,\n locationId: string\n ): Promise<string>;\n startForegroundService(): Promise<boolean>;\n stopForegroundService(): Promise<boolean>;\n isForegroundServiceRunning(): Promise<boolean>;\n initializeIOS(\n branchId: string,\n clientKey: string,\n environment: string\n ): Promise<boolean>;\n openAppSettings(): Promise<void>;\n retriveLocationPermissionStatus(): Promise<string>;\n};\n\nexport const OkHiNativeModule: OkHiNativeModuleType = NativeModules.Okhi;\n\nexport const OkHiNativeEvents = new NativeEventEmitter(NativeModules.Okhi);\n\nOkHiNativeEvents.addListener('onLocationPermissionStatusUpdate', () => null);\n"]}