react-native-okhi 1.0.13-beta.9 → 1.0.15-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) 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 +38 -22
  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.map +1 -1
  12. package/lib/module/OkCollect/OkHiLocationManager.js +14 -7
  13. package/lib/module/OkCollect/OkHiLocationManager.js.map +1 -1
  14. package/lib/module/OkCollect/Util.js +10 -1
  15. package/lib/module/OkCollect/Util.js.map +1 -1
  16. package/lib/module/OkCollect/app.json +1 -1
  17. package/lib/module/OkCore/Helpers.js +117 -34
  18. package/lib/module/OkCore/Helpers.js.map +1 -1
  19. package/lib/module/OkHiNativeModule/index.js.map +1 -1
  20. package/lib/typescript/OkCollect/Util.d.ts +2 -2
  21. package/lib/typescript/OkCore/Helpers.d.ts +3 -0
  22. package/lib/typescript/OkCore/types.d.ts +2 -1
  23. package/lib/typescript/OkHiNativeModule/index.d.ts +1 -0
  24. package/package.json +1 -1
  25. package/src/OkCollect/OkHiLocationManager.tsx +25 -7
  26. package/src/OkCollect/Util.ts +9 -2
  27. package/src/OkCollect/app.json +1 -1
  28. package/src/OkCore/Helpers.ts +151 -45
  29. package/src/OkCore/types.ts +5 -1
  30. package/src/OkHiNativeModule/index.ts +1 -0
  31. package/android/.DS_Store +0 -0
  32. package/android/.idea/workspace.xml +0 -43
  33. 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
@@ -13,6 +13,8 @@ class Okhi: RCTEventEmitter {
13
13
  private var reject: RCTPromiseRejectBlock?
14
14
  private var initResolve: RCTPromiseResolveBlock?
15
15
  private var initReject: RCTPromiseRejectBlock?
16
+ private var didChangeLocationPermissionStatusResolve: RCTPromiseResolveBlock?
17
+ private var didChangeLocationPermissionStatusReject: RCTPromiseRejectBlock?
16
18
  private var okVerify: OkVerify
17
19
 
18
20
 
@@ -47,14 +49,16 @@ class Okhi: RCTEventEmitter {
47
49
  resolve(UIDevice.current.systemVersion)
48
50
  }
49
51
 
50
- @objc func requestLocationPermission(_ resolve:@escaping RCTPromiseResolveBlock, reject:RCTPromiseRejectBlock) {
51
- self.resolve = resolve
52
+ @objc func requestLocationPermission(_ resolve:@escaping RCTPromiseResolveBlock, reject:@escaping RCTPromiseRejectBlock) {
53
+ self.didChangeLocationPermissionStatusResolve = resolve
54
+ self.didChangeLocationPermissionStatusReject = reject
52
55
  currentLocationPermissionRequestType = .whenInUse
53
56
  okVerify.requestLocationPermission()
54
57
  }
55
58
 
56
- @objc func requestBackgroundLocationPermission(_ resolve:@escaping RCTPromiseResolveBlock, reject:RCTPromiseRejectBlock) {
57
- self.resolve = resolve
59
+ @objc func requestBackgroundLocationPermission(_ resolve:@escaping RCTPromiseResolveBlock, reject:@escaping RCTPromiseRejectBlock) {
60
+ self.didChangeLocationPermissionStatusResolve = resolve
61
+ self.didChangeLocationPermissionStatusReject = reject
58
62
  currentLocationPermissionRequestType = .always
59
63
  okVerify.requestBackgroundLocationPermission()
60
64
  }
@@ -93,25 +97,17 @@ class Okhi: RCTEventEmitter {
93
97
  okVerify.stopAddressVerification(locationId: locationId)
94
98
  }
95
99
 
100
+ @objc func retriveLocationPermissionStatus(_ resolve: RCTPromiseResolveBlock, reject:RCTPromiseRejectBlock) {
101
+ let manager = CLLocationManager()
102
+ let status = fetchLocationPermissionStatus(status: getLocationAuthorizationStatus(manager: manager))
103
+ resolve(status)
104
+ }
105
+
96
106
  override func supportedEvents() -> [String]! {
97
107
  return ["onLocationPermissionStatusUpdate"]
98
108
  }
99
- }
100
-
101
- // MARK: - OkHi Utils
102
- extension Okhi {
103
- func getLocationAuthorizationStatus(manager: CLLocationManager) -> CLAuthorizationStatus {
104
- if #available(iOS 14.0, *) {
105
- return manager.authorizationStatus
106
- } else {
107
- return CLLocationManager.authorizationStatus()
108
- }
109
- }
110
- }
111
-
112
- // MARK: - OkVerify Delegates
113
- extension Okhi: OkVerifyDelegate {
114
- func verify(_ okverify: OkVerify, didUpdateLocationPermissionStatus status: CLAuthorizationStatus) {
109
+
110
+ private func fetchLocationPermissionStatus(status: CLAuthorizationStatus) -> String {
115
111
  var str: String = ""
116
112
  switch status {
117
113
  case .notDetermined:
@@ -129,11 +125,29 @@ extension Okhi: OkVerifyDelegate {
129
125
  @unknown default:
130
126
  str = "unknown"
131
127
  }
132
- sendEvent(withName: "onLocationPermissionStatusUpdate", body: str)
128
+ return str
129
+ }
130
+ }
131
+
132
+ // MARK: - OkHi Utils
133
+ extension Okhi {
134
+ func getLocationAuthorizationStatus(manager: CLLocationManager) -> CLAuthorizationStatus {
135
+ if #available(iOS 14.0, *) {
136
+ return manager.authorizationStatus
137
+ } else {
138
+ return CLLocationManager.authorizationStatus()
139
+ }
140
+ }
141
+ }
142
+
143
+ // MARK: - OkVerify Delegates
144
+ extension Okhi: OkVerifyDelegate {
145
+ func verify(_ okverify: OkVerify, didUpdateLocationPermissionStatus status: CLAuthorizationStatus) {
146
+ sendEvent(withName: "onLocationPermissionStatusUpdate", body: fetchLocationPermissionStatus(status: status))
133
147
  }
134
148
 
135
149
  func verify(_ okverify: OkVerify, didChangeLocationPermissionStatus requestType: OkVerifyLocationPermissionRequestType, status: Bool) {
136
- if let resolve = self.resolve {
150
+ if let resolve = self.didChangeLocationPermissionStatusResolve {
137
151
  if currentLocationPermissionRequestType == .whenInUse && requestType == .whenInUse {
138
152
  resolve(status)
139
153
  } else if currentLocationPermissionRequestType == .always && requestType == .always {
@@ -141,6 +155,8 @@ extension Okhi: OkVerifyDelegate {
141
155
  } else {
142
156
  resolve(false)
143
157
  }
158
+ self.didChangeLocationPermissionStatusResolve = nil
159
+ self.didChangeLocationPermissionStatusReject = nil
144
160
  }
145
161
  }
146
162
 
@@ -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.15"
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":";;;;;;;AAAA;;AACA;;AACA;;AAOA;AACA;AACA;AACA;AACO,MAAMA,yBAAyB,GAAG,MAAwB;AAC/D,SAAO,8BAAgBC,mCAAiBD,yBAAjC,CAAP;AACD,CAFM;AAIP;AACA;AACA;AACA;;;;;AACO,MAAME,2BAA2B,GAAG,MAAwB;AACjE,SAAO,8BAAgBD,mCAAiBC,2BAAjC,CAAP;AACD,CAFM;;;;AAIP,MAAMC,4CAA4C,GAChD,YAA8B;AAC5B,QAAMC,UAAU,GAAG,MAAMH,mCAAiBI,gBAAjB,EAAzB;;AACA,MAAID,UAAU,GAAG,EAAjB,EAAqB;AACnB,WAAO,IAAP;AACD;;AACD,MAAIA,UAAU,GAAG,EAAjB,EAAqB;AACnB,WAAO,MAAMF,2BAA2B,EAAxC;AACD;;AACD,QAAMI,aAAa,GAAG,MAAMC,gCAAmBC,KAAnB,CAC1BD,gCAAmBE,WAAnB,CAA+BC,0BADL,CAA5B;AAGA,SAAOJ,aAAP;AACD,CAbH;;AAeA,MAAMK,wCAAwC,GAAG,MAAwB;AACvE,SAAOV,mCAAiBW,qCAAjB,EAAP;AACD,CAFD;AAIA;AACA;AACA;AACA;;;AACO,MAAMA,qCAAqC,GAAG,MAAwB;AAC3E,QAAMC,EAAE,GACNC,sBAASC,EAAT,KAAgB,SAAhB,GACIZ,4CADJ,GAEIQ,wCAHN;AAIA,SAAO,8BAAgBE,EAAhB,CAAP;AACD,CANM;;;;AAQP,MAAMG,gCAAgC,GAAG,YAA8B;AACrE,QAAMC,MAAW,GAAG,MAAMV,gCAAmBW,eAAnB,CAAmC,CAC3DX,gCAAmBE,WAAnB,CAA+BU,oBAD4B,EAE3DZ,gCAAmBE,WAAnB,CAA+BW,sBAF4B,CAAnC,CAA1B;AAIA,SAAOH,MAAM,CAAC,yCAAD,CAAN,KAAsD,SAA7D;AACD,CAND;;AAQA,MAAMI,4BAA4B,GAAG,MAAwB;AAC3D,SAAOpB,mCAAiBqB,yBAAjB,EAAP;AACD,CAFD;AAIA;AACA;AACA;AACA;;;AACO,MAAMA,yBAAyB,GAAG,YAA8B;AACrEC,EAAAA,OAAO,CAACC,GAAR,CAAY,MAAZ;AACA,QAAMC,SAAS,GAAG,MAAMvB,2BAA2B,EAAnD;AACA,MAAIuB,SAAJ,EAAe,OAAOA,SAAP;AACf,SAAO,2BACLX,sBAASC,EAAT,KAAgB,SAAhB,GACIC,gCADJ,GAEIK,4BAHC,CAAP;AAKD,CATM;;;;AAWP,MAAMK,0CAA0C,GAC9C,YAA8B;AAC5B,QAAMtB,UAAU,GAAG,MAAMH,mCAAiBI,gBAAjB,EAAzB;AACA,MAAID,UAAU,GAAG,EAAjB,EAAqB,OAAO,IAAP;;AACrB,MAAIA,UAAU,IAAI,EAAlB,EAAsB;AACpB,UAAMuB,WAAgB,GAAG,CACvBpB,gCAAmBE,WAAnB,CAA+BC,0BADR,CAAzB;AAGA,UAAMO,MAAW,GAAG,MAAMV,gCAAmBW,eAAnB,CAAmCS,WAAnC,CAA1B;AACA,WACEV,MAAM,CAAC,+CAAD,CAAN,KAA4D,SAD9D;AAGD,GARD,MAQO;AACL,WAAO,MAAMD,gCAAgC,EAA7C;AACD;AACF,CAfH;;AAiBA,MAAMY,sCAAsC,GAAG,MAAwB;AACrE,SAAO3B,mCAAiB4B,mCAAjB,EAAP;AACD,CAFD;AAIA;AACA;AACA;AACA;;;AACO,MAAMA,mCAAmC,GAC9C,YAA8B;AAC5B,QAAMJ,SAAS,GAAG,MAAMb,qCAAqC,EAA7D;AACA,MAAIa,SAAJ,EAAe,OAAOA,SAAP;AACf,SAAO,2BACLX,sBAASC,EAAT,KAAgB,SAAhB,GACIW,0CADJ,GAEIE,sCAHC,CAAP;AAKD,CATI;AAWP;AACA;AACA;AACA;;;;;AACO,MAAME,6BAA6B,GAAG,MAA+B;AAC1E,SAAO,8BAAgB7B,mCAAiB6B,6BAAjC,CAAP;AACD,CAFM;AAIP;AACA;AACA;AACA;;;;;AACO,MAAMC,6BAA6B,GAAG,MAAwB;AACnE,SAAO,8BACL9B,mCAAiB8B,6BADZ,EAEL,SAFK,CAAP;AAID,CALM;AAOP;AACA;AACA;AACA;;;;;AACO,MAAMC,+BAA+B,GAAG,MAAwB;AACrE,SAAO,8BACL/B,mCAAiB+B,+BADZ,EAEL,SAFK,CAAP;AAID,CALM;AAOP;AACA;AACA;AACA;;;;;AACO,MAAM3B,gBAAgB,GAAG,MAC9B,8BAAgBJ,mCAAiBI,gBAAjC,CADK;;;;AAGA,MAAM4B,OAAO,GAAG,CACrBC,sBADqB,EAErBC,SAFqB,EAOrBC,QAPqB,KAQlB;AACH,MAAItB,sBAASC,EAAT,KAAgB,KAApB,EAA2B;AACzBsB,uCAAiBC,kBAAjB,CAAoC,kCAApC;;AACAD,uCAAiBE,WAAjB,CAA6B,kCAA7B,EAAiEH,QAAjE;;AACA,QAAIF,sBAAsB,KAAK,WAA/B,EAA4C;AAC1CjC,yCAAiBqB,yBAAjB;AACD,KAFD,MAEO;AACLrB,yCAAiB4B,mCAAjB;AACD;AACF,GARD,MAQO;AACL,QAAIK,sBAAsB,KAAK,WAA/B,EAA4C;AAC1ClB,MAAAA,gCAAgC,GAAGwB,IAAnC,CAAyCC,MAAD,IACtCL,QAAQ,CAACK,MAAM,GAAG,qBAAH,GAA2B,QAAlC,CADV;AAGD,KAJD,MAIO;AACLzB,MAAAA,gCAAgC,GAAGwB,IAAnC,CAAwC,MAAOE,eAAP,IAA2B;AACjE,YAAIA,eAAJ,EAAqB;AACnB,gBAAMC,OAAO,GAAG,MAAMtC,gBAAgB,EAAtC;;AACA,cAAIsC,OAAO,IAAI,EAAX,IAAiBR,SAArB,EAAgC;AAC9BS,+BAAMC,KAAN,CACEV,SAAS,CAACW,KADZ,EAEEX,SAAS,CAACY,IAFZ,EAGE,CACE;AACEA,cAAAA,IAAI,EAAEZ,SAAS,CAACa,aAAV,GACFb,SAAS,CAACa,aAAV,CAAwBC,KADtB,GAEF,MAHN;AAIEC,cAAAA,OAAO,EAAE,YAAY;AACnB,sBAAMT,MAAM,GAAG,MAAMZ,mCAAmC,EAAxD;AACAO,gBAAAA,QAAQ,CACNK,MAAM,GAAG,kBAAH,GAAwB,qBADxB,CAAR;AAGD;AATH,aADF,CAHF,EAgBE;AACEU,cAAAA,SAAS,EAAE,MAAM;AACff,gBAAAA,QAAQ,CAAC,qBAAD,CAAR;AACD;AAHH,aAhBF;AAsBD,WAvBD,MAuBO;AACL,kBAAMgB,UAAU,GAAG,MAAMvB,mCAAmC,EAA5D;AACAO,YAAAA,QAAQ,CAACgB,UAAU,GAAG,kBAAH,GAAwB,qBAAnC,CAAR;AACD;AACF,SA7BD,MA6BO;AACLhB,UAAAA,QAAQ,CAAC,QAAD,CAAR;AACD;AACF,OAjCD;AAkCD;AACF;AACF,CA3DM;;;;AA6DA,MAAMiB,eAAe,GAAG,MAAM;AACnCpD,qCAAiBoD,eAAjB;AACD,CAFM;;;;AAIA,MAAMC,+BAA+B,GAC1C,YAA+C;AAC7C,QAAMC,UAAU,GAAG,MAAM3C,qCAAqC,EAA9D;;AACA,MAAI2C,UAAJ,EAAgB;AACd,WAAO,kBAAP;AACD;;AACD,QAAMC,aAAa,GAAG,MAAMtD,2BAA2B,EAAvD;AACA,SAAOsD,aAAa,GAAG,qBAAH,GAA2B,QAA/C;AACD,CARI","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"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["index.ts"],"names":["OkHiNativeModule","NativeModules","Okhi","OkHiNativeEvents","NativeEventEmitter","addListener"],"mappings":";;;;;;;AAAA;;AAsCO,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};\n\nexport const OkHiNativeModule: OkHiNativeModuleType = NativeModules.Okhi;\n\nexport const OkHiNativeEvents = new NativeEventEmitter(NativeModules.Okhi);\n\nOkHiNativeEvents.addListener('onLocationPermissionStatusUpdate', () => null);\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"]}