react-native-okhi 1.0.13-beta.10 → 1.0.13-beta.13

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.
@@ -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
@@ -93,25 +93,17 @@ class Okhi: RCTEventEmitter {
93
93
  okVerify.stopAddressVerification(locationId: locationId)
94
94
  }
95
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
+
96
102
  override func supportedEvents() -> [String]! {
97
103
  return ["onLocationPermissionStatusUpdate"]
98
104
  }
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) {
105
+
106
+ private func fetchLocationPermissionStatus(status: CLAuthorizationStatus) -> String {
115
107
  var str: String = ""
116
108
  switch status {
117
109
  case .notDetermined:
@@ -129,7 +121,25 @@ extension Okhi: OkVerifyDelegate {
129
121
  @unknown default:
130
122
  str = "unknown"
131
123
  }
132
- 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))
133
143
  }
134
144
 
135
145
  func verify(_ okverify: OkVerify, didChangeLocationPermissionStatus requestType: OkVerifyLocationPermissionRequestType, status: Bool) {
@@ -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"]}
@@ -209,6 +209,10 @@ const openAppSettings = () => {
209
209
  exports.openAppSettings = openAppSettings;
210
210
 
211
211
  const retriveLocationPermissionStatus = async () => {
212
+ if (_reactNative.Platform.OS === 'ios') {
213
+ return _OkHiNativeModule.OkHiNativeModule.retriveLocationPermissionStatus();
214
+ }
215
+
212
216
  const alwaysPerm = await isBackgroundLocationPermissionGranted();
213
217
 
214
218
  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","isGranted","requestBackgroundLocationPermissionAndroid","permissions","requestBackgroundLocationPermissionIOS","requestBackgroundLocationPermission","requestEnableLocationServices","isGooglePlayServicesAvailable","requestEnableGooglePlayServices","request","locationPermissionType","rationale","callback","OkHiNativeEvents","removeAllListeners","addListener","then","result","whenInUseResult","version","Alert","alert","title","text","successButton","label","onPress","onDismiss","permission","openAppSettings","retriveLocationPermissionStatus","alwaysPerm","whenInUsePerm"],"mappings":"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","sourcesContent":["import { OkHiNativeModule, OkHiNativeEvents } from '../OkHiNativeModule';\nimport { Alert, PermissionsAndroid, Platform } from 'react-native';\nimport { errorHandler, isValidPlatform } from './_helpers';\nimport type {\n LocationPermissionCallback,\n LocationPermissionStatus,\n LocationRequestPermissionType,\n} from './types';\n\n/**\n * Checks whether location services are enabled\n * @returns {Promise<boolean>} A promise that resolves to a boolen value indicating whether the service is available\n */\nexport const isLocationServicesEnabled = (): Promise<boolean> => {\n return isValidPlatform(OkHiNativeModule.isLocationServicesEnabled);\n};\n\n/**\n * Checks whether when in use location permission is granted\n * @returns {Promise<boolean>} A promise that resolves to a boolen value indicating whether the permission is granted\n */\nexport const isLocationPermissionGranted = (): Promise<boolean> => {\n return isValidPlatform(OkHiNativeModule.isLocationPermissionGranted);\n};\n\nconst isBackgroundLocationPermissionGrantedAndroid =\n async (): Promise<boolean> => {\n const sdkVersion = await OkHiNativeModule.getSystemVersion();\n if (sdkVersion < 23) {\n return true;\n }\n if (sdkVersion < 29) {\n return await isLocationPermissionGranted();\n }\n const hasPermission = await PermissionsAndroid.check(\n PermissionsAndroid.PERMISSIONS.ACCESS_BACKGROUND_LOCATION\n );\n return hasPermission;\n };\n\nconst isBackgroundLocationPermissionGrantedIOS = (): Promise<boolean> => {\n return OkHiNativeModule.isBackgroundLocationPermissionGranted();\n};\n\n/**\n * Checks whether background location permission is granted\n * @returns {Promise<boolean>} A promise that resolves to a boolen value indicating whether the permission is granted\n */\nexport const isBackgroundLocationPermissionGranted = (): Promise<boolean> => {\n const fn =\n Platform.OS === 'android'\n ? isBackgroundLocationPermissionGrantedAndroid\n : isBackgroundLocationPermissionGrantedIOS;\n return isValidPlatform(fn);\n};\n\nconst requestLocationPermissionAndroid = async (): Promise<boolean> => {\n const status: any = await PermissionsAndroid.requestMultiple([\n PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION,\n PermissionsAndroid.PERMISSIONS.ACCESS_COARSE_LOCATION,\n ]);\n return status['android.permission.ACCESS_FINE_LOCATION'] === 'granted';\n};\n\nconst requestLocationPermissionIOS = (): Promise<boolean> => {\n return OkHiNativeModule.requestLocationPermission();\n};\n\n/**\n * Requests for when in use location permission\n * @returns {Promise<boolean>} A promise that resolves to a boolen value indicating whether the permission is granted\n */\nexport const requestLocationPermission = async (): Promise<boolean> => {\n const isGranted = await isLocationPermissionGranted();\n if (isGranted) return isGranted;\n return errorHandler(\n Platform.OS === 'android'\n ? requestLocationPermissionAndroid\n : requestLocationPermissionIOS\n );\n};\n\nconst requestBackgroundLocationPermissionAndroid =\n async (): Promise<boolean> => {\n const sdkVersion = await OkHiNativeModule.getSystemVersion();\n if (sdkVersion < 23) return true;\n if (sdkVersion >= 29) {\n const permissions: any = [\n PermissionsAndroid.PERMISSIONS.ACCESS_BACKGROUND_LOCATION,\n ];\n const status: any = await PermissionsAndroid.requestMultiple(permissions);\n return (\n status['android.permission.ACCESS_BACKGROUND_LOCATION'] === 'granted'\n );\n } else {\n return await requestLocationPermissionAndroid();\n }\n };\n\nconst requestBackgroundLocationPermissionIOS = (): Promise<boolean> => {\n return OkHiNativeModule.requestBackgroundLocationPermission();\n};\n\n/**\n * Requests for background location permission\n * @returns {Promise<boolean>} A promise that resolves to a boolen value indicating whether the permission is granted\n */\nexport const requestBackgroundLocationPermission =\n async (): Promise<boolean> => {\n const isGranted = await isBackgroundLocationPermissionGranted();\n if (isGranted) return isGranted;\n return errorHandler(\n Platform.OS === 'android'\n ? requestBackgroundLocationPermissionAndroid\n : requestBackgroundLocationPermissionIOS\n );\n };\n\n/**\n * Requests the user to enable location services by showing an in app modal on android and opening location settings on iOS\n * @returns {Promise<boolean>} A promise that resolves to either a boolean value on android or null on iOS\n */\nexport const requestEnableLocationServices = (): Promise<boolean | null> => {\n return isValidPlatform(OkHiNativeModule.requestEnableLocationServices);\n};\n\n/**\n * Android Only - Checks if Google Play Services is available\n * @returns {Promise<boolean>} A promise that resolves to a boolean value indicating whether the service is avaialbe\n */\nexport const isGooglePlayServicesAvailable = (): Promise<boolean> => {\n return isValidPlatform(\n OkHiNativeModule.isGooglePlayServicesAvailable,\n 'android'\n );\n};\n\n/**\n * Android Only - Requests user to enable Google Play Services\n * @returns {Promise<boolean>} A promise that resolves to a boolean value indicating whether the service is avaialbe\n */\nexport const requestEnableGooglePlayServices = (): Promise<boolean> => {\n return isValidPlatform(\n OkHiNativeModule.requestEnableGooglePlayServices,\n 'android'\n );\n};\n\n/**\n * Returns the system version of the current platform\n * @returns {Promise<boolean>} A promise that resolves either a string on iOS or number on Android\n */\nexport const getSystemVersion = (): Promise<string | number> =>\n isValidPlatform(OkHiNativeModule.getSystemVersion);\n\nexport const request = (\n locationPermissionType: LocationRequestPermissionType,\n rationale: {\n title: string;\n text: string;\n successButton?: { label: string };\n } | null,\n callback: LocationPermissionCallback\n) => {\n if (Platform.OS === 'ios') {\n OkHiNativeEvents.removeAllListeners('onLocationPermissionStatusUpdate');\n OkHiNativeEvents.addListener('onLocationPermissionStatusUpdate', callback);\n if (locationPermissionType === 'whenInUse') {\n OkHiNativeModule.requestLocationPermission();\n } else {\n OkHiNativeModule.requestBackgroundLocationPermission();\n }\n } else {\n if (locationPermissionType === 'whenInUse') {\n requestLocationPermissionAndroid().then((result) =>\n callback(result ? 'authorizedWhenInUse' : 'denied')\n );\n } else {\n requestLocationPermissionAndroid().then(async (whenInUseResult) => {\n if (whenInUseResult) {\n const version = await getSystemVersion();\n if (version >= 30 && rationale) {\n Alert.alert(\n rationale.title,\n rationale.text,\n [\n {\n text: rationale.successButton\n ? rationale.successButton.label\n : 'Okay',\n onPress: async () => {\n const result = await requestBackgroundLocationPermission();\n callback(\n result ? 'authorizedAlways' : 'authorizedWhenInUse'\n );\n },\n },\n ],\n {\n onDismiss: () => {\n callback('authorizedWhenInUse');\n },\n }\n );\n } else {\n const permission = await requestBackgroundLocationPermission();\n callback(permission ? 'authorizedAlways' : 'authorizedWhenInUse');\n }\n } else {\n callback('denied');\n }\n });\n }\n }\n};\n\nexport const openAppSettings = () => {\n OkHiNativeModule.openAppSettings();\n};\n\nexport const retriveLocationPermissionStatus =\n async (): Promise<LocationPermissionStatus> => {\n 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","OkHiNativeEvents","removeAllListeners","addListener","then","result","whenInUseResult","version","Alert","alert","title","text","successButton","label","onPress","onDismiss","permission","openAppSettings","retriveLocationPermissionStatus","alwaysPerm","whenInUsePerm"],"mappings":"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","sourcesContent":["import { OkHiNativeModule, OkHiNativeEvents } from '../OkHiNativeModule';\nimport { Alert, PermissionsAndroid, Platform } from 'react-native';\nimport { errorHandler, isValidPlatform } from './_helpers';\nimport type {\n LocationPermissionCallback,\n LocationPermissionStatus,\n LocationRequestPermissionType,\n} from './types';\n\n/**\n * Checks whether location services are enabled\n * @returns {Promise<boolean>} A promise that resolves to a boolen value indicating whether the service is available\n */\nexport const isLocationServicesEnabled = (): Promise<boolean> => {\n return isValidPlatform(OkHiNativeModule.isLocationServicesEnabled);\n};\n\n/**\n * Checks whether when in use location permission is granted\n * @returns {Promise<boolean>} A promise that resolves to a boolen value indicating whether the permission is granted\n */\nexport const isLocationPermissionGranted = (): Promise<boolean> => {\n return isValidPlatform(OkHiNativeModule.isLocationPermissionGranted);\n};\n\nconst isBackgroundLocationPermissionGrantedAndroid =\n async (): Promise<boolean> => {\n const sdkVersion = await OkHiNativeModule.getSystemVersion();\n if (sdkVersion < 23) {\n return true;\n }\n if (sdkVersion < 29) {\n return await isLocationPermissionGranted();\n }\n const hasPermission = await PermissionsAndroid.check(\n PermissionsAndroid.PERMISSIONS.ACCESS_BACKGROUND_LOCATION\n );\n return hasPermission;\n };\n\nconst isBackgroundLocationPermissionGrantedIOS = (): Promise<boolean> => {\n return OkHiNativeModule.isBackgroundLocationPermissionGranted();\n};\n\n/**\n * Checks whether background location permission is granted\n * @returns {Promise<boolean>} A promise that resolves to a boolen value indicating whether the permission is granted\n */\nexport const isBackgroundLocationPermissionGranted = (): Promise<boolean> => {\n const fn =\n Platform.OS === 'android'\n ? isBackgroundLocationPermissionGrantedAndroid\n : isBackgroundLocationPermissionGrantedIOS;\n return isValidPlatform(fn);\n};\n\nconst requestLocationPermissionAndroid = async (): Promise<boolean> => {\n const status: any = await PermissionsAndroid.requestMultiple([\n PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION,\n PermissionsAndroid.PERMISSIONS.ACCESS_COARSE_LOCATION,\n ]);\n return status['android.permission.ACCESS_FINE_LOCATION'] === 'granted';\n};\n\nconst requestLocationPermissionIOS = (): Promise<boolean> => {\n return OkHiNativeModule.requestLocationPermission();\n};\n\n/**\n * Requests for when in use location permission\n * @returns {Promise<boolean>} A promise that resolves to a boolen value indicating whether the permission is granted\n */\nexport const requestLocationPermission = async (): Promise<boolean> => {\n const isGranted = await isLocationPermissionGranted();\n if (isGranted) return isGranted;\n return errorHandler(\n Platform.OS === 'android'\n ? requestLocationPermissionAndroid\n : requestLocationPermissionIOS\n );\n};\n\nconst requestBackgroundLocationPermissionAndroid =\n async (): Promise<boolean> => {\n const sdkVersion = await OkHiNativeModule.getSystemVersion();\n if (sdkVersion < 23) return true;\n if (sdkVersion >= 29) {\n const permissions: any = [\n PermissionsAndroid.PERMISSIONS.ACCESS_BACKGROUND_LOCATION,\n ];\n const status: any = await PermissionsAndroid.requestMultiple(permissions);\n return (\n status['android.permission.ACCESS_BACKGROUND_LOCATION'] === 'granted'\n );\n } else {\n return await requestLocationPermissionAndroid();\n }\n };\n\nconst requestBackgroundLocationPermissionIOS = (): Promise<boolean> => {\n return OkHiNativeModule.requestBackgroundLocationPermission();\n};\n\n/**\n * Requests for background location permission\n * @returns {Promise<boolean>} A promise that resolves to a boolen value indicating whether the permission is granted\n */\nexport const requestBackgroundLocationPermission =\n async (): Promise<boolean> => {\n const isGranted = await isBackgroundLocationPermissionGranted();\n if (isGranted) return isGranted;\n return errorHandler(\n Platform.OS === 'android'\n ? requestBackgroundLocationPermissionAndroid\n : requestBackgroundLocationPermissionIOS\n );\n };\n\n/**\n * Requests the user to enable location services by showing an in app modal on android and opening location settings on iOS\n * @returns {Promise<boolean>} A promise that resolves to either a boolean value on android or null on iOS\n */\nexport const requestEnableLocationServices = (): Promise<boolean | null> => {\n return isValidPlatform(OkHiNativeModule.requestEnableLocationServices);\n};\n\n/**\n * Android Only - Checks if Google Play Services is available\n * @returns {Promise<boolean>} A promise that resolves to a boolean value indicating whether the service is avaialbe\n */\nexport const isGooglePlayServicesAvailable = (): Promise<boolean> => {\n return isValidPlatform(\n OkHiNativeModule.isGooglePlayServicesAvailable,\n 'android'\n );\n};\n\n/**\n * Android Only - Requests user to enable Google Play Services\n * @returns {Promise<boolean>} A promise that resolves to a boolean value indicating whether the service is avaialbe\n */\nexport const requestEnableGooglePlayServices = (): Promise<boolean> => {\n return isValidPlatform(\n OkHiNativeModule.requestEnableGooglePlayServices,\n 'android'\n );\n};\n\n/**\n * Returns the system version of the current platform\n * @returns {Promise<boolean>} A promise that resolves either a string on iOS or number on Android\n */\nexport const getSystemVersion = (): Promise<string | number> =>\n isValidPlatform(OkHiNativeModule.getSystemVersion);\n\nexport const request = (\n locationPermissionType: LocationRequestPermissionType,\n rationale: {\n title: string;\n text: string;\n successButton?: { label: string };\n } | null,\n callback: LocationPermissionCallback\n) => {\n if (Platform.OS === 'ios') {\n OkHiNativeEvents.removeAllListeners('onLocationPermissionStatusUpdate');\n OkHiNativeEvents.addListener('onLocationPermissionStatusUpdate', callback);\n if (locationPermissionType === 'whenInUse') {\n OkHiNativeModule.requestLocationPermission();\n } else {\n OkHiNativeModule.requestBackgroundLocationPermission();\n }\n } else {\n if (locationPermissionType === 'whenInUse') {\n requestLocationPermissionAndroid().then((result) =>\n callback(result ? 'authorizedWhenInUse' : 'denied')\n );\n } else {\n requestLocationPermissionAndroid().then(async (whenInUseResult) => {\n if (whenInUseResult) {\n const version = await getSystemVersion();\n if (version >= 30 && rationale) {\n Alert.alert(\n rationale.title,\n rationale.text,\n [\n {\n text: rationale.successButton\n ? rationale.successButton.label\n : 'Okay',\n onPress: async () => {\n const result = await requestBackgroundLocationPermission();\n callback(\n result ? 'authorizedAlways' : 'authorizedWhenInUse'\n );\n },\n },\n ],\n {\n onDismiss: () => {\n callback('authorizedWhenInUse');\n },\n }\n );\n } else {\n const permission = await requestBackgroundLocationPermission();\n callback(permission ? 'authorizedAlways' : 'authorizedWhenInUse');\n }\n } else {\n callback('denied');\n }\n });\n }\n }\n};\n\nexport const openAppSettings = () => {\n OkHiNativeModule.openAppSettings();\n};\n\nexport const retriveLocationPermissionStatus =\n async (): Promise<LocationPermissionStatus> => {\n if (Platform.OS === 'ios') {\n return OkHiNativeModule.retriveLocationPermissionStatus() as Promise<LocationPermissionStatus>;\n }\n const alwaysPerm = await isBackgroundLocationPermissionGranted();\n if (alwaysPerm) {\n return 'authorizedAlways';\n }\n const whenInUsePerm = await isLocationPermissionGranted();\n return whenInUsePerm ? 'authorizedWhenInUse' : 'denied';\n };\n"]}
@@ -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"]}
@@ -6,12 +6,13 @@ import { getFrameUrl, generateJavaScriptStartScript, generateStartDataPayload, p
6
6
  import { OkHiException } from '../OkCore/OkHiException';
7
7
  import { OkHiAuth } from '../OkCore/OkHiAuth';
8
8
  import { start as sv } from '../OkVerify';
9
- import { getApplicationConfiguration } from '../OkCore';
9
+ import { getApplicationConfiguration, retriveLocationPermissionStatus } from '../OkCore';
10
10
  /**
11
11
  * The OkHiLocationManager React Component is used to display an in app modal, enabling the user to quickly create an accurate OkHi address.
12
12
  */
13
13
 
14
14
  export const OkHiLocationManager = props => {
15
+ const [locationPermissionStatus, setLocationPermissionStatus] = useState(null);
15
16
  const [token, setToken] = useState(null);
16
17
  const [applicationConfiguration, setApplicationConfiguration] = useState(null);
17
18
  const defaultStyle = {
@@ -39,11 +40,7 @@ export const OkHiLocationManager = props => {
39
40
  } else if (config) {
40
41
  setApplicationConfiguration(config);
41
42
  const auth = new OkHiAuth();
42
- auth.anonymousSignInWithPhoneNumber(user.phone, ['address'], config).then(setToken).catch(error => {
43
- if (launch) {
44
- onError(error);
45
- }
46
- });
43
+ auth.anonymousSignInWithPhoneNumber(user.phone, ['address'], config).then(setToken).catch(onError);
47
44
  }
48
45
  }).catch(error => {
49
46
  if (launch) {
@@ -112,17 +109,27 @@ export const OkHiLocationManager = props => {
112
109
  }));
113
110
  };
114
111
 
112
+ const fetchLocationPermissionStatus = async () => {
113
+ const status = await retriveLocationPermissionStatus();
114
+ setLocationPermissionStatus(status);
115
+ };
116
+
115
117
  const renderContent = () => {
116
118
  if (token === null || applicationConfiguration == null) {
117
119
  return loader || /*#__PURE__*/React.createElement(Spinner, null);
118
120
  }
119
121
 
122
+ if (Platform.OS === 'ios' && locationPermissionStatus === null) {
123
+ fetchLocationPermissionStatus();
124
+ return loader || /*#__PURE__*/React.createElement(Spinner, null);
125
+ }
126
+
120
127
  const {
121
128
  jsAfterLoad,
122
129
  jsBeforeLoad
123
130
  } = generateJavaScriptStartScript({
124
131
  message: 'select_location',
125
- payload: generateStartDataPayload(props, token, applicationConfiguration)
132
+ payload: generateStartDataPayload(props, token, applicationConfiguration, locationPermissionStatus)
126
133
  });
127
134
  return /*#__PURE__*/React.createElement(SafeAreaView, {
128
135
  style: style
@@ -1 +1 @@
1
- {"version":3,"sources":["OkHiLocationManager.tsx"],"names":["React","useState","useEffect","Modal","SafeAreaView","Platform","WebView","Spinner","getFrameUrl","generateJavaScriptStartScript","generateStartDataPayload","parseOkHiLocation","OkHiException","OkHiAuth","start","sv","getApplicationConfiguration","OkHiLocationManager","props","token","setToken","applicationConfiguration","setApplicationConfiguration","defaultStyle","flex","style","user","onSuccess","onCloseRequest","onError","loader","launch","phone","then","config","code","UNAUTHORIZED_CODE","message","UNAUTHORIZED_MESSAGE","auth","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","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":["React","useState","useEffect","Modal","SafeAreaView","Platform","WebView","Spinner","getFrameUrl","generateJavaScriptStartScript","generateStartDataPayload","parseOkHiLocation","OkHiException","OkHiAuth","start","sv","getApplicationConfiguration","retriveLocationPermissionStatus","OkHiLocationManager","props","locationPermissionStatus","setLocationPermissionStatus","token","setToken","applicationConfiguration","setApplicationConfiguration","defaultStyle","flex","style","user","onSuccess","onCloseRequest","onError","loader","launch","phone","then","config","code","UNAUTHORIZED_CODE","message","UNAUTHORIZED_MESSAGE","auth","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","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"]}
@@ -1,10 +1,12 @@
1
1
  import { OkHiMode } from '../OkCore';
2
2
  import manifest from './app.json'; //TODO: fix this
3
3
 
4
+ import { Platform } from 'react-native';
4
5
  /**
5
6
  * @ignore
6
7
  */
7
- export const generateStartDataPayload = (props, authToken, applicationConfiguration) => {
8
+
9
+ export const generateStartDataPayload = (props, authToken, applicationConfiguration, locationPermissionStatus) => {
8
10
  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;
9
11
 
10
12
  const payload = {};
@@ -46,6 +48,13 @@ export const generateStartDataPayload = (props, authToken, applicationConfigurat
46
48
  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
47
49
  }
48
50
  };
51
+
52
+ if (Platform.OS === 'ios' && locationPermissionStatus) {
53
+ payload.context.permissions = {
54
+ location: locationPermissionStatus
55
+ };
56
+ }
57
+
49
58
  return payload;
50
59
  };
51
60
  /**
@@ -1 +1 @@
1
- {"version":3,"sources":["Util.ts"],"names":["OkHiMode","manifest","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","platform","config","streetView","backgroundColor","visible","getFrameUrl","DEV_FRAME_URL","PROD_FRAME_URL","SANDBOX_FRAME_URL","mode","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":["OkHiMode","manifest","Platform","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","platform","config","streetView","backgroundColor","visible","OS","permissions","location","getFrameUrl","DEV_FRAME_URL","PROD_FRAME_URL","SANDBOX_FRAME_URL","mode","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"]}
@@ -169,6 +169,10 @@ export const openAppSettings = () => {
169
169
  OkHiNativeModule.openAppSettings();
170
170
  };
171
171
  export const retriveLocationPermissionStatus = async () => {
172
+ if (Platform.OS === 'ios') {
173
+ return OkHiNativeModule.retriveLocationPermissionStatus();
174
+ }
175
+
172
176
  const alwaysPerm = await isBackgroundLocationPermissionGranted();
173
177
 
174
178
  if (alwaysPerm) {
@@ -1 +1 @@
1
- {"version":3,"sources":["Helpers.ts"],"names":["OkHiNativeModule","OkHiNativeEvents","Alert","PermissionsAndroid","Platform","errorHandler","isValidPlatform","isLocationServicesEnabled","isLocationPermissionGranted","isBackgroundLocationPermissionGrantedAndroid","sdkVersion","getSystemVersion","hasPermission","check","PERMISSIONS","ACCESS_BACKGROUND_LOCATION","isBackgroundLocationPermissionGrantedIOS","isBackgroundLocationPermissionGranted","fn","OS","requestLocationPermissionAndroid","status","requestMultiple","ACCESS_FINE_LOCATION","ACCESS_COARSE_LOCATION","requestLocationPermissionIOS","requestLocationPermission","isGranted","requestBackgroundLocationPermissionAndroid","permissions","requestBackgroundLocationPermissionIOS","requestBackgroundLocationPermission","requestEnableLocationServices","isGooglePlayServicesAvailable","requestEnableGooglePlayServices","request","locationPermissionType","rationale","callback","removeAllListeners","addListener","then","result","whenInUseResult","version","alert","title","text","successButton","label","onPress","onDismiss","permission","openAppSettings","retriveLocationPermissionStatus","alwaysPerm","whenInUsePerm"],"mappings":"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","sourcesContent":["import { OkHiNativeModule, OkHiNativeEvents } from '../OkHiNativeModule';\nimport { Alert, PermissionsAndroid, Platform } from 'react-native';\nimport { errorHandler, isValidPlatform } from './_helpers';\nimport type {\n LocationPermissionCallback,\n LocationPermissionStatus,\n LocationRequestPermissionType,\n} from './types';\n\n/**\n * Checks whether location services are enabled\n * @returns {Promise<boolean>} A promise that resolves to a boolen value indicating whether the service is available\n */\nexport const isLocationServicesEnabled = (): Promise<boolean> => {\n return isValidPlatform(OkHiNativeModule.isLocationServicesEnabled);\n};\n\n/**\n * Checks whether when in use location permission is granted\n * @returns {Promise<boolean>} A promise that resolves to a boolen value indicating whether the permission is granted\n */\nexport const isLocationPermissionGranted = (): Promise<boolean> => {\n return isValidPlatform(OkHiNativeModule.isLocationPermissionGranted);\n};\n\nconst isBackgroundLocationPermissionGrantedAndroid =\n async (): Promise<boolean> => {\n const sdkVersion = await OkHiNativeModule.getSystemVersion();\n if (sdkVersion < 23) {\n return true;\n }\n if (sdkVersion < 29) {\n return await isLocationPermissionGranted();\n }\n const hasPermission = await PermissionsAndroid.check(\n PermissionsAndroid.PERMISSIONS.ACCESS_BACKGROUND_LOCATION\n );\n return hasPermission;\n };\n\nconst isBackgroundLocationPermissionGrantedIOS = (): Promise<boolean> => {\n return OkHiNativeModule.isBackgroundLocationPermissionGranted();\n};\n\n/**\n * Checks whether background location permission is granted\n * @returns {Promise<boolean>} A promise that resolves to a boolen value indicating whether the permission is granted\n */\nexport const isBackgroundLocationPermissionGranted = (): Promise<boolean> => {\n const fn =\n Platform.OS === 'android'\n ? isBackgroundLocationPermissionGrantedAndroid\n : isBackgroundLocationPermissionGrantedIOS;\n return isValidPlatform(fn);\n};\n\nconst requestLocationPermissionAndroid = async (): Promise<boolean> => {\n const status: any = await PermissionsAndroid.requestMultiple([\n PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION,\n PermissionsAndroid.PERMISSIONS.ACCESS_COARSE_LOCATION,\n ]);\n return status['android.permission.ACCESS_FINE_LOCATION'] === 'granted';\n};\n\nconst requestLocationPermissionIOS = (): Promise<boolean> => {\n return OkHiNativeModule.requestLocationPermission();\n};\n\n/**\n * Requests for when in use location permission\n * @returns {Promise<boolean>} A promise that resolves to a boolen value indicating whether the permission is granted\n */\nexport const requestLocationPermission = async (): Promise<boolean> => {\n const isGranted = await isLocationPermissionGranted();\n if (isGranted) return isGranted;\n return errorHandler(\n Platform.OS === 'android'\n ? requestLocationPermissionAndroid\n : requestLocationPermissionIOS\n );\n};\n\nconst requestBackgroundLocationPermissionAndroid =\n async (): Promise<boolean> => {\n const sdkVersion = await OkHiNativeModule.getSystemVersion();\n if (sdkVersion < 23) return true;\n if (sdkVersion >= 29) {\n const permissions: any = [\n PermissionsAndroid.PERMISSIONS.ACCESS_BACKGROUND_LOCATION,\n ];\n const status: any = await PermissionsAndroid.requestMultiple(permissions);\n return (\n status['android.permission.ACCESS_BACKGROUND_LOCATION'] === 'granted'\n );\n } else {\n return await requestLocationPermissionAndroid();\n }\n };\n\nconst requestBackgroundLocationPermissionIOS = (): Promise<boolean> => {\n return OkHiNativeModule.requestBackgroundLocationPermission();\n};\n\n/**\n * Requests for background location permission\n * @returns {Promise<boolean>} A promise that resolves to a boolen value indicating whether the permission is granted\n */\nexport const requestBackgroundLocationPermission =\n async (): Promise<boolean> => {\n const isGranted = await isBackgroundLocationPermissionGranted();\n if (isGranted) return isGranted;\n return errorHandler(\n Platform.OS === 'android'\n ? requestBackgroundLocationPermissionAndroid\n : requestBackgroundLocationPermissionIOS\n );\n };\n\n/**\n * Requests the user to enable location services by showing an in app modal on android and opening location settings on iOS\n * @returns {Promise<boolean>} A promise that resolves to either a boolean value on android or null on iOS\n */\nexport const requestEnableLocationServices = (): Promise<boolean | null> => {\n return isValidPlatform(OkHiNativeModule.requestEnableLocationServices);\n};\n\n/**\n * Android Only - Checks if Google Play Services is available\n * @returns {Promise<boolean>} A promise that resolves to a boolean value indicating whether the service is avaialbe\n */\nexport const isGooglePlayServicesAvailable = (): Promise<boolean> => {\n return isValidPlatform(\n OkHiNativeModule.isGooglePlayServicesAvailable,\n 'android'\n );\n};\n\n/**\n * Android Only - Requests user to enable Google Play Services\n * @returns {Promise<boolean>} A promise that resolves to a boolean value indicating whether the service is avaialbe\n */\nexport const requestEnableGooglePlayServices = (): Promise<boolean> => {\n return isValidPlatform(\n OkHiNativeModule.requestEnableGooglePlayServices,\n 'android'\n );\n};\n\n/**\n * Returns the system version of the current platform\n * @returns {Promise<boolean>} A promise that resolves either a string on iOS or number on Android\n */\nexport const getSystemVersion = (): Promise<string | number> =>\n isValidPlatform(OkHiNativeModule.getSystemVersion);\n\nexport const request = (\n locationPermissionType: LocationRequestPermissionType,\n rationale: {\n title: string;\n text: string;\n successButton?: { label: string };\n } | null,\n callback: LocationPermissionCallback\n) => {\n if (Platform.OS === 'ios') {\n OkHiNativeEvents.removeAllListeners('onLocationPermissionStatusUpdate');\n OkHiNativeEvents.addListener('onLocationPermissionStatusUpdate', callback);\n if (locationPermissionType === 'whenInUse') {\n OkHiNativeModule.requestLocationPermission();\n } else {\n OkHiNativeModule.requestBackgroundLocationPermission();\n }\n } else {\n if (locationPermissionType === 'whenInUse') {\n requestLocationPermissionAndroid().then((result) =>\n callback(result ? 'authorizedWhenInUse' : 'denied')\n );\n } else {\n requestLocationPermissionAndroid().then(async (whenInUseResult) => {\n if (whenInUseResult) {\n const version = await getSystemVersion();\n if (version >= 30 && rationale) {\n Alert.alert(\n rationale.title,\n rationale.text,\n [\n {\n text: rationale.successButton\n ? rationale.successButton.label\n : 'Okay',\n onPress: async () => {\n const result = await requestBackgroundLocationPermission();\n callback(\n result ? 'authorizedAlways' : 'authorizedWhenInUse'\n );\n },\n },\n ],\n {\n onDismiss: () => {\n callback('authorizedWhenInUse');\n },\n }\n );\n } else {\n const permission = await requestBackgroundLocationPermission();\n callback(permission ? 'authorizedAlways' : 'authorizedWhenInUse');\n }\n } else {\n callback('denied');\n }\n });\n }\n }\n};\n\nexport const openAppSettings = () => {\n OkHiNativeModule.openAppSettings();\n};\n\nexport const retriveLocationPermissionStatus =\n async (): Promise<LocationPermissionStatus> => {\n 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":["OkHiNativeModule","OkHiNativeEvents","Alert","PermissionsAndroid","Platform","errorHandler","isValidPlatform","isLocationServicesEnabled","isLocationPermissionGranted","isBackgroundLocationPermissionGrantedAndroid","sdkVersion","getSystemVersion","hasPermission","check","PERMISSIONS","ACCESS_BACKGROUND_LOCATION","isBackgroundLocationPermissionGrantedIOS","isBackgroundLocationPermissionGranted","fn","OS","requestLocationPermissionAndroid","status","requestMultiple","ACCESS_FINE_LOCATION","ACCESS_COARSE_LOCATION","requestLocationPermissionIOS","requestLocationPermission","isGranted","requestBackgroundLocationPermissionAndroid","permissions","requestBackgroundLocationPermissionIOS","requestBackgroundLocationPermission","requestEnableLocationServices","isGooglePlayServicesAvailable","requestEnableGooglePlayServices","request","locationPermissionType","rationale","callback","removeAllListeners","addListener","then","result","whenInUseResult","version","alert","title","text","successButton","label","onPress","onDismiss","permission","openAppSettings","retriveLocationPermissionStatus","alwaysPerm","whenInUsePerm"],"mappings":"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","sourcesContent":["import { OkHiNativeModule, OkHiNativeEvents } from '../OkHiNativeModule';\nimport { Alert, PermissionsAndroid, Platform } from 'react-native';\nimport { errorHandler, isValidPlatform } from './_helpers';\nimport type {\n LocationPermissionCallback,\n LocationPermissionStatus,\n LocationRequestPermissionType,\n} from './types';\n\n/**\n * Checks whether location services are enabled\n * @returns {Promise<boolean>} A promise that resolves to a boolen value indicating whether the service is available\n */\nexport const isLocationServicesEnabled = (): Promise<boolean> => {\n return isValidPlatform(OkHiNativeModule.isLocationServicesEnabled);\n};\n\n/**\n * Checks whether when in use location permission is granted\n * @returns {Promise<boolean>} A promise that resolves to a boolen value indicating whether the permission is granted\n */\nexport const isLocationPermissionGranted = (): Promise<boolean> => {\n return isValidPlatform(OkHiNativeModule.isLocationPermissionGranted);\n};\n\nconst isBackgroundLocationPermissionGrantedAndroid =\n async (): Promise<boolean> => {\n const sdkVersion = await OkHiNativeModule.getSystemVersion();\n if (sdkVersion < 23) {\n return true;\n }\n if (sdkVersion < 29) {\n return await isLocationPermissionGranted();\n }\n const hasPermission = await PermissionsAndroid.check(\n PermissionsAndroid.PERMISSIONS.ACCESS_BACKGROUND_LOCATION\n );\n return hasPermission;\n };\n\nconst isBackgroundLocationPermissionGrantedIOS = (): Promise<boolean> => {\n return OkHiNativeModule.isBackgroundLocationPermissionGranted();\n};\n\n/**\n * Checks whether background location permission is granted\n * @returns {Promise<boolean>} A promise that resolves to a boolen value indicating whether the permission is granted\n */\nexport const isBackgroundLocationPermissionGranted = (): Promise<boolean> => {\n const fn =\n Platform.OS === 'android'\n ? isBackgroundLocationPermissionGrantedAndroid\n : isBackgroundLocationPermissionGrantedIOS;\n return isValidPlatform(fn);\n};\n\nconst requestLocationPermissionAndroid = async (): Promise<boolean> => {\n const status: any = await PermissionsAndroid.requestMultiple([\n PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION,\n PermissionsAndroid.PERMISSIONS.ACCESS_COARSE_LOCATION,\n ]);\n return status['android.permission.ACCESS_FINE_LOCATION'] === 'granted';\n};\n\nconst requestLocationPermissionIOS = (): Promise<boolean> => {\n return OkHiNativeModule.requestLocationPermission();\n};\n\n/**\n * Requests for when in use location permission\n * @returns {Promise<boolean>} A promise that resolves to a boolen value indicating whether the permission is granted\n */\nexport const requestLocationPermission = async (): Promise<boolean> => {\n const isGranted = await isLocationPermissionGranted();\n if (isGranted) return isGranted;\n return errorHandler(\n Platform.OS === 'android'\n ? requestLocationPermissionAndroid\n : requestLocationPermissionIOS\n );\n};\n\nconst requestBackgroundLocationPermissionAndroid =\n async (): Promise<boolean> => {\n const sdkVersion = await OkHiNativeModule.getSystemVersion();\n if (sdkVersion < 23) return true;\n if (sdkVersion >= 29) {\n const permissions: any = [\n PermissionsAndroid.PERMISSIONS.ACCESS_BACKGROUND_LOCATION,\n ];\n const status: any = await PermissionsAndroid.requestMultiple(permissions);\n return (\n status['android.permission.ACCESS_BACKGROUND_LOCATION'] === 'granted'\n );\n } else {\n return await requestLocationPermissionAndroid();\n }\n };\n\nconst requestBackgroundLocationPermissionIOS = (): Promise<boolean> => {\n return OkHiNativeModule.requestBackgroundLocationPermission();\n};\n\n/**\n * Requests for background location permission\n * @returns {Promise<boolean>} A promise that resolves to a boolen value indicating whether the permission is granted\n */\nexport const requestBackgroundLocationPermission =\n async (): Promise<boolean> => {\n const isGranted = await isBackgroundLocationPermissionGranted();\n if (isGranted) return isGranted;\n return errorHandler(\n Platform.OS === 'android'\n ? requestBackgroundLocationPermissionAndroid\n : requestBackgroundLocationPermissionIOS\n );\n };\n\n/**\n * Requests the user to enable location services by showing an in app modal on android and opening location settings on iOS\n * @returns {Promise<boolean>} A promise that resolves to either a boolean value on android or null on iOS\n */\nexport const requestEnableLocationServices = (): Promise<boolean | null> => {\n return isValidPlatform(OkHiNativeModule.requestEnableLocationServices);\n};\n\n/**\n * Android Only - Checks if Google Play Services is available\n * @returns {Promise<boolean>} A promise that resolves to a boolean value indicating whether the service is avaialbe\n */\nexport const isGooglePlayServicesAvailable = (): Promise<boolean> => {\n return isValidPlatform(\n OkHiNativeModule.isGooglePlayServicesAvailable,\n 'android'\n );\n};\n\n/**\n * Android Only - Requests user to enable Google Play Services\n * @returns {Promise<boolean>} A promise that resolves to a boolean value indicating whether the service is avaialbe\n */\nexport const requestEnableGooglePlayServices = (): Promise<boolean> => {\n return isValidPlatform(\n OkHiNativeModule.requestEnableGooglePlayServices,\n 'android'\n );\n};\n\n/**\n * Returns the system version of the current platform\n * @returns {Promise<boolean>} A promise that resolves either a string on iOS or number on Android\n */\nexport const getSystemVersion = (): Promise<string | number> =>\n isValidPlatform(OkHiNativeModule.getSystemVersion);\n\nexport const request = (\n locationPermissionType: LocationRequestPermissionType,\n rationale: {\n title: string;\n text: string;\n successButton?: { label: string };\n } | null,\n callback: LocationPermissionCallback\n) => {\n if (Platform.OS === 'ios') {\n OkHiNativeEvents.removeAllListeners('onLocationPermissionStatusUpdate');\n OkHiNativeEvents.addListener('onLocationPermissionStatusUpdate', callback);\n if (locationPermissionType === 'whenInUse') {\n OkHiNativeModule.requestLocationPermission();\n } else {\n OkHiNativeModule.requestBackgroundLocationPermission();\n }\n } else {\n if (locationPermissionType === 'whenInUse') {\n requestLocationPermissionAndroid().then((result) =>\n callback(result ? 'authorizedWhenInUse' : 'denied')\n );\n } else {\n requestLocationPermissionAndroid().then(async (whenInUseResult) => {\n if (whenInUseResult) {\n const version = await getSystemVersion();\n if (version >= 30 && rationale) {\n Alert.alert(\n rationale.title,\n rationale.text,\n [\n {\n text: rationale.successButton\n ? rationale.successButton.label\n : 'Okay',\n onPress: async () => {\n const result = await requestBackgroundLocationPermission();\n callback(\n result ? 'authorizedAlways' : 'authorizedWhenInUse'\n );\n },\n },\n ],\n {\n onDismiss: () => {\n callback('authorizedWhenInUse');\n },\n }\n );\n } else {\n const permission = await requestBackgroundLocationPermission();\n callback(permission ? 'authorizedAlways' : 'authorizedWhenInUse');\n }\n } else {\n callback('denied');\n }\n });\n }\n }\n};\n\nexport const openAppSettings = () => {\n OkHiNativeModule.openAppSettings();\n};\n\nexport const retriveLocationPermissionStatus =\n async (): Promise<LocationPermissionStatus> => {\n if (Platform.OS === 'ios') {\n return OkHiNativeModule.retriveLocationPermissionStatus() as Promise<LocationPermissionStatus>;\n }\n const alwaysPerm = await isBackgroundLocationPermissionGranted();\n if (alwaysPerm) {\n return 'authorizedAlways';\n }\n const whenInUsePerm = await isLocationPermissionGranted();\n return whenInUsePerm ? 'authorizedWhenInUse' : 'denied';\n };\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["index.ts"],"names":["NativeModules","NativeEventEmitter","OkHiNativeModule","Okhi","OkHiNativeEvents","addListener"],"mappings":"AAAA,SAASA,aAAT,EAAwBC,kBAAxB,QAAkD,cAAlD;AAsCA,OAAO,MAAMC,gBAAsC,GAAGF,aAAa,CAACG,IAA7D;AAEP,OAAO,MAAMC,gBAAgB,GAAG,IAAIH,kBAAJ,CAAuBD,aAAa,CAACG,IAArC,CAAzB;AAEPC,gBAAgB,CAACC,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":["NativeModules","NativeEventEmitter","OkHiNativeModule","Okhi","OkHiNativeEvents","addListener"],"mappings":"AAAA,SAASA,aAAT,EAAwBC,kBAAxB,QAAkD,cAAlD;AAuCA,OAAO,MAAMC,gBAAsC,GAAGF,aAAa,CAACG,IAA7D;AAEP,OAAO,MAAMC,gBAAgB,GAAG,IAAIH,kBAAJ,CAAuBD,aAAa,CAACG,IAArC,CAAzB;AAEPC,gBAAgB,CAACC,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"]}
@@ -1,11 +1,11 @@
1
1
  import type { OkHiLocationManagerProps } from './types';
2
- import type { OkHiLocation } from '../OkCore';
2
+ import type { LocationPermissionStatus, OkHiLocation } from '../OkCore';
3
3
  import type { OkHiLocationManagerStartDataPayload, OkHiLocationManagerStartMessage } from './types';
4
4
  import type { AuthApplicationConfig } from '../OkCore/_types';
5
5
  /**
6
6
  * @ignore
7
7
  */
8
- export declare const generateStartDataPayload: (props: OkHiLocationManagerProps, authToken: string, applicationConfiguration: AuthApplicationConfig) => OkHiLocationManagerStartDataPayload;
8
+ export declare const generateStartDataPayload: (props: OkHiLocationManagerProps, authToken: string, applicationConfiguration: AuthApplicationConfig, locationPermissionStatus: LocationPermissionStatus | null) => OkHiLocationManagerStartDataPayload;
9
9
  /**
10
10
  * @ignore
11
11
  */
@@ -20,6 +20,7 @@ declare type OkHiNativeModuleType = {
20
20
  isForegroundServiceRunning(): Promise<boolean>;
21
21
  initializeIOS(branchId: string, clientKey: string, environment: string): Promise<boolean>;
22
22
  openAppSettings(): Promise<void>;
23
+ retriveLocationPermissionStatus(): Promise<string>;
23
24
  };
24
25
  export declare const OkHiNativeModule: OkHiNativeModuleType;
25
26
  export declare const OkHiNativeEvents: NativeEventEmitter;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-okhi",
3
- "version": "1.0.13-beta.10",
3
+ "version": "1.0.13-beta.13",
4
4
  "description": "The OkHi React Native library enables you to collect and verify addresses from your users",
5
5
  "main": "lib/commonjs/index",
6
6
  "module": "lib/module/index",
@@ -17,11 +17,18 @@ import { OkHiAuth } from '../OkCore/OkHiAuth';
17
17
  import type { AuthApplicationConfig } from '../OkCore/_types';
18
18
  import { start as sv } from '../OkVerify';
19
19
  import type { OkVerifyStartConfiguration } from '../OkVerify/types';
20
- import { getApplicationConfiguration } from '../OkCore';
20
+ import {
21
+ getApplicationConfiguration,
22
+ LocationPermissionStatus,
23
+ retriveLocationPermissionStatus,
24
+ } from '../OkCore';
25
+
21
26
  /**
22
27
  * The OkHiLocationManager React Component is used to display an in app modal, enabling the user to quickly create an accurate OkHi address.
23
28
  */
24
29
  export const OkHiLocationManager = (props: OkHiLocationManagerProps) => {
30
+ const [locationPermissionStatus, setLocationPermissionStatus] =
31
+ useState<null | LocationPermissionStatus>(null);
25
32
  const [token, setToken] = useState<string | null>(null);
26
33
  const [applicationConfiguration, setApplicationConfiguration] =
27
34
  useState<AuthApplicationConfig | null>(null);
@@ -49,11 +56,7 @@ export const OkHiLocationManager = (props: OkHiLocationManagerProps) => {
49
56
  auth
50
57
  .anonymousSignInWithPhoneNumber(user.phone, ['address'], config)
51
58
  .then(setToken)
52
- .catch((error) => {
53
- if (launch) {
54
- onError(error);
55
- }
56
- });
59
+ .catch(onError);
57
60
  }
58
61
  })
59
62
  .catch((error) => {
@@ -129,14 +132,29 @@ export const OkHiLocationManager = (props: OkHiLocationManagerProps) => {
129
132
  );
130
133
  };
131
134
 
135
+ const fetchLocationPermissionStatus = async () => {
136
+ const status = await retriveLocationPermissionStatus();
137
+ setLocationPermissionStatus(status);
138
+ };
139
+
132
140
  const renderContent = () => {
133
141
  if (token === null || applicationConfiguration == null) {
134
142
  return loader || <Spinner />;
135
143
  }
136
144
 
145
+ if (Platform.OS === 'ios' && locationPermissionStatus === null) {
146
+ fetchLocationPermissionStatus();
147
+ return loader || <Spinner />;
148
+ }
149
+
137
150
  const { jsAfterLoad, jsBeforeLoad } = generateJavaScriptStartScript({
138
151
  message: 'select_location',
139
- payload: generateStartDataPayload(props, token, applicationConfiguration),
152
+ payload: generateStartDataPayload(
153
+ props,
154
+ token,
155
+ applicationConfiguration,
156
+ locationPermissionStatus
157
+ ),
140
158
  });
141
159
 
142
160
  return (
@@ -1,5 +1,5 @@
1
1
  import type { OkHiLocationManagerProps } from './types';
2
- import type { OkHiLocation } from '../OkCore';
2
+ import type { LocationPermissionStatus, OkHiLocation } from '../OkCore';
3
3
  import { OkHiMode } from '../OkCore';
4
4
  import type {
5
5
  OkHiLocationManagerStartDataPayload,
@@ -7,6 +7,7 @@ import type {
7
7
  } from './types';
8
8
  import manifest from './app.json'; //TODO: fix this
9
9
  import type { AuthApplicationConfig } from '../OkCore/_types';
10
+ import { Platform } from 'react-native';
10
11
 
11
12
  /**
12
13
  * @ignore
@@ -14,7 +15,8 @@ import type { AuthApplicationConfig } from '../OkCore/_types';
14
15
  export const generateStartDataPayload = (
15
16
  props: OkHiLocationManagerProps,
16
17
  authToken: string,
17
- applicationConfiguration: AuthApplicationConfig
18
+ applicationConfiguration: AuthApplicationConfig,
19
+ locationPermissionStatus: LocationPermissionStatus | null
18
20
  ): OkHiLocationManagerStartDataPayload => {
19
21
  const payload: any = {};
20
22
  payload.style = !props.theme
@@ -60,6 +62,11 @@ export const generateStartDataPayload = (
60
62
  visible: props.config?.appBar?.visible,
61
63
  },
62
64
  };
65
+ if (Platform.OS === 'ios' && locationPermissionStatus) {
66
+ payload.context.permissions = {
67
+ location: locationPermissionStatus,
68
+ };
69
+ }
63
70
  return payload;
64
71
  };
65
72
 
@@ -220,6 +220,9 @@ export const openAppSettings = () => {
220
220
 
221
221
  export const retriveLocationPermissionStatus =
222
222
  async (): Promise<LocationPermissionStatus> => {
223
+ if (Platform.OS === 'ios') {
224
+ return OkHiNativeModule.retriveLocationPermissionStatus() as Promise<LocationPermissionStatus>;
225
+ }
223
226
  const alwaysPerm = await isBackgroundLocationPermissionGranted();
224
227
  if (alwaysPerm) {
225
228
  return 'authorizedAlways';
@@ -34,6 +34,7 @@ type OkHiNativeModuleType = {
34
34
  environment: string
35
35
  ): Promise<boolean>;
36
36
  openAppSettings(): Promise<void>;
37
+ retriveLocationPermissionStatus(): Promise<string>;
37
38
  };
38
39
 
39
40
  export const OkHiNativeModule: OkHiNativeModuleType = NativeModules.Okhi;
package/android/.DS_Store DELETED
Binary file
package/ios/.DS_Store DELETED
Binary file