react-native-okhi 1.0.13-beta.9 → 1.0.15-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/android/src/main/java/com/reactnativeokhi/OkhiModule.java +10 -0
- package/ios/Okhi.m +2 -0
- package/ios/Okhi.swift +38 -22
- package/lib/commonjs/OkCollect/OkHiLocationManager.js +13 -6
- package/lib/commonjs/OkCollect/OkHiLocationManager.js.map +1 -1
- package/lib/commonjs/OkCollect/Util.js +10 -1
- package/lib/commonjs/OkCollect/Util.js.map +1 -1
- package/lib/commonjs/OkCollect/app.json +1 -1
- package/lib/commonjs/OkCore/Helpers.js +117 -33
- package/lib/commonjs/OkCore/Helpers.js.map +1 -1
- package/lib/commonjs/OkHiNativeModule/index.js.map +1 -1
- package/lib/module/OkCollect/OkHiLocationManager.js +14 -7
- package/lib/module/OkCollect/OkHiLocationManager.js.map +1 -1
- package/lib/module/OkCollect/Util.js +10 -1
- package/lib/module/OkCollect/Util.js.map +1 -1
- package/lib/module/OkCollect/app.json +1 -1
- package/lib/module/OkCore/Helpers.js +117 -34
- package/lib/module/OkCore/Helpers.js.map +1 -1
- package/lib/module/OkHiNativeModule/index.js.map +1 -1
- package/lib/typescript/OkCollect/Util.d.ts +2 -2
- package/lib/typescript/OkCore/Helpers.d.ts +3 -0
- package/lib/typescript/OkCore/types.d.ts +2 -1
- package/lib/typescript/OkHiNativeModule/index.d.ts +1 -0
- package/package.json +1 -1
- package/src/OkCollect/OkHiLocationManager.tsx +25 -7
- package/src/OkCollect/Util.ts +9 -2
- package/src/OkCollect/app.json +1 -1
- package/src/OkCore/Helpers.ts +151 -45
- package/src/OkCore/types.ts +5 -1
- package/src/OkHiNativeModule/index.ts +1 -0
- package/android/.DS_Store +0 -0
- package/android/.idea/workspace.xml +0 -43
- package/ios/.DS_Store +0 -0
|
@@ -258,6 +258,16 @@ public class OkhiModule extends ReactContextBaseJavaModule {
|
|
|
258
258
|
getReactApplicationContext().startActivity(intent);
|
|
259
259
|
}
|
|
260
260
|
|
|
261
|
+
@ReactMethod
|
|
262
|
+
public void addListener(String eventName) {
|
|
263
|
+
// Keep: Required for RN built in Event Emitter Calls.
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
@ReactMethod
|
|
267
|
+
public void removeListeners(Integer count) {
|
|
268
|
+
// Keep: Required for RN built in Event Emitter Calls.
|
|
269
|
+
}
|
|
270
|
+
|
|
261
271
|
private Dynamic getConfig(ReadableMap map, String prop) {
|
|
262
272
|
if (map != null && map.hasKey("android")) {
|
|
263
273
|
ReadableMap config = map.getMap("android");
|
package/ios/Okhi.m
CHANGED
|
@@ -35,4 +35,6 @@ RCT_EXTERN_METHOD(startAddressVerification:(NSString *)phoneNumber locationId:(N
|
|
|
35
35
|
|
|
36
36
|
RCT_EXTERN_METHOD(stopAddressVerification:(NSString *)phoneNumber locationId:(NSString *)locationId resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject)
|
|
37
37
|
|
|
38
|
+
RCT_EXTERN_METHOD(retriveLocationPermissionStatus: (RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject)
|
|
39
|
+
|
|
38
40
|
@end
|
package/ios/Okhi.swift
CHANGED
|
@@ -13,6 +13,8 @@ class Okhi: RCTEventEmitter {
|
|
|
13
13
|
private var reject: RCTPromiseRejectBlock?
|
|
14
14
|
private var initResolve: RCTPromiseResolveBlock?
|
|
15
15
|
private var initReject: RCTPromiseRejectBlock?
|
|
16
|
+
private var didChangeLocationPermissionStatusResolve: RCTPromiseResolveBlock?
|
|
17
|
+
private var didChangeLocationPermissionStatusReject: RCTPromiseRejectBlock?
|
|
16
18
|
private var okVerify: OkVerify
|
|
17
19
|
|
|
18
20
|
|
|
@@ -47,14 +49,16 @@ class Okhi: RCTEventEmitter {
|
|
|
47
49
|
resolve(UIDevice.current.systemVersion)
|
|
48
50
|
}
|
|
49
51
|
|
|
50
|
-
@objc func requestLocationPermission(_ resolve:@escaping RCTPromiseResolveBlock, reject
|
|
51
|
-
self.
|
|
52
|
+
@objc func requestLocationPermission(_ resolve:@escaping RCTPromiseResolveBlock, reject:@escaping RCTPromiseRejectBlock) {
|
|
53
|
+
self.didChangeLocationPermissionStatusResolve = resolve
|
|
54
|
+
self.didChangeLocationPermissionStatusReject = reject
|
|
52
55
|
currentLocationPermissionRequestType = .whenInUse
|
|
53
56
|
okVerify.requestLocationPermission()
|
|
54
57
|
}
|
|
55
58
|
|
|
56
|
-
@objc func requestBackgroundLocationPermission(_ resolve:@escaping RCTPromiseResolveBlock, reject
|
|
57
|
-
self.
|
|
59
|
+
@objc func requestBackgroundLocationPermission(_ resolve:@escaping RCTPromiseResolveBlock, reject:@escaping RCTPromiseRejectBlock) {
|
|
60
|
+
self.didChangeLocationPermissionStatusResolve = resolve
|
|
61
|
+
self.didChangeLocationPermissionStatusReject = reject
|
|
58
62
|
currentLocationPermissionRequestType = .always
|
|
59
63
|
okVerify.requestBackgroundLocationPermission()
|
|
60
64
|
}
|
|
@@ -93,25 +97,17 @@ class Okhi: RCTEventEmitter {
|
|
|
93
97
|
okVerify.stopAddressVerification(locationId: locationId)
|
|
94
98
|
}
|
|
95
99
|
|
|
100
|
+
@objc func retriveLocationPermissionStatus(_ resolve: RCTPromiseResolveBlock, reject:RCTPromiseRejectBlock) {
|
|
101
|
+
let manager = CLLocationManager()
|
|
102
|
+
let status = fetchLocationPermissionStatus(status: getLocationAuthorizationStatus(manager: manager))
|
|
103
|
+
resolve(status)
|
|
104
|
+
}
|
|
105
|
+
|
|
96
106
|
override func supportedEvents() -> [String]! {
|
|
97
107
|
return ["onLocationPermissionStatusUpdate"]
|
|
98
108
|
}
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
// MARK: - OkHi Utils
|
|
102
|
-
extension Okhi {
|
|
103
|
-
func getLocationAuthorizationStatus(manager: CLLocationManager) -> CLAuthorizationStatus {
|
|
104
|
-
if #available(iOS 14.0, *) {
|
|
105
|
-
return manager.authorizationStatus
|
|
106
|
-
} else {
|
|
107
|
-
return CLLocationManager.authorizationStatus()
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
// MARK: - OkVerify Delegates
|
|
113
|
-
extension Okhi: OkVerifyDelegate {
|
|
114
|
-
func verify(_ okverify: OkVerify, didUpdateLocationPermissionStatus status: CLAuthorizationStatus) {
|
|
109
|
+
|
|
110
|
+
private func fetchLocationPermissionStatus(status: CLAuthorizationStatus) -> String {
|
|
115
111
|
var str: String = ""
|
|
116
112
|
switch status {
|
|
117
113
|
case .notDetermined:
|
|
@@ -129,11 +125,29 @@ extension Okhi: OkVerifyDelegate {
|
|
|
129
125
|
@unknown default:
|
|
130
126
|
str = "unknown"
|
|
131
127
|
}
|
|
132
|
-
|
|
128
|
+
return str
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
// MARK: - OkHi Utils
|
|
133
|
+
extension Okhi {
|
|
134
|
+
func getLocationAuthorizationStatus(manager: CLLocationManager) -> CLAuthorizationStatus {
|
|
135
|
+
if #available(iOS 14.0, *) {
|
|
136
|
+
return manager.authorizationStatus
|
|
137
|
+
} else {
|
|
138
|
+
return CLLocationManager.authorizationStatus()
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
// MARK: - OkVerify Delegates
|
|
144
|
+
extension Okhi: OkVerifyDelegate {
|
|
145
|
+
func verify(_ okverify: OkVerify, didUpdateLocationPermissionStatus status: CLAuthorizationStatus) {
|
|
146
|
+
sendEvent(withName: "onLocationPermissionStatusUpdate", body: fetchLocationPermissionStatus(status: status))
|
|
133
147
|
}
|
|
134
148
|
|
|
135
149
|
func verify(_ okverify: OkVerify, didChangeLocationPermissionStatus requestType: OkVerifyLocationPermissionRequestType, status: Bool) {
|
|
136
|
-
if let resolve = self.
|
|
150
|
+
if let resolve = self.didChangeLocationPermissionStatusResolve {
|
|
137
151
|
if currentLocationPermissionRequestType == .whenInUse && requestType == .whenInUse {
|
|
138
152
|
resolve(status)
|
|
139
153
|
} else if currentLocationPermissionRequestType == .always && requestType == .always {
|
|
@@ -141,6 +155,8 @@ extension Okhi: OkVerifyDelegate {
|
|
|
141
155
|
} else {
|
|
142
156
|
resolve(false)
|
|
143
157
|
}
|
|
158
|
+
self.didChangeLocationPermissionStatusResolve = nil
|
|
159
|
+
self.didChangeLocationPermissionStatusReject = nil
|
|
144
160
|
}
|
|
145
161
|
}
|
|
146
162
|
|
|
@@ -31,6 +31,7 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
|
|
|
31
31
|
* The OkHiLocationManager React Component is used to display an in app modal, enabling the user to quickly create an accurate OkHi address.
|
|
32
32
|
*/
|
|
33
33
|
const OkHiLocationManager = props => {
|
|
34
|
+
const [locationPermissionStatus, setLocationPermissionStatus] = (0, _react.useState)(null);
|
|
34
35
|
const [token, setToken] = (0, _react.useState)(null);
|
|
35
36
|
const [applicationConfiguration, setApplicationConfiguration] = (0, _react.useState)(null);
|
|
36
37
|
const defaultStyle = {
|
|
@@ -58,11 +59,7 @@ const OkHiLocationManager = props => {
|
|
|
58
59
|
} else if (config) {
|
|
59
60
|
setApplicationConfiguration(config);
|
|
60
61
|
const auth = new _OkHiAuth.OkHiAuth();
|
|
61
|
-
auth.anonymousSignInWithPhoneNumber(user.phone, ['address'], config).then(setToken).catch(
|
|
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","
|
|
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"]}
|
|
@@ -11,6 +11,8 @@ var _reactNative = require("react-native");
|
|
|
11
11
|
|
|
12
12
|
var _helpers = require("./_helpers");
|
|
13
13
|
|
|
14
|
+
var _OkHiException = require("./OkHiException");
|
|
15
|
+
|
|
14
16
|
/**
|
|
15
17
|
* Checks whether location services are enabled
|
|
16
18
|
* @returns {Promise<boolean>} A promise that resolves to a boolen value indicating whether the service is available
|
|
@@ -78,7 +80,6 @@ const requestLocationPermissionIOS = () => {
|
|
|
78
80
|
|
|
79
81
|
|
|
80
82
|
const requestLocationPermission = async () => {
|
|
81
|
-
console.log('yooo');
|
|
82
83
|
const isGranted = await isLocationPermissionGranted();
|
|
83
84
|
if (isGranted) return isGranted;
|
|
84
85
|
return (0, _helpers.errorHandler)(_reactNative.Platform.OS === 'android' ? requestLocationPermissionAndroid : requestLocationPermissionIOS);
|
|
@@ -159,46 +160,125 @@ const getSystemVersion = () => (0, _helpers.isValidPlatform)(_OkHiNativeModule.O
|
|
|
159
160
|
exports.getSystemVersion = getSystemVersion;
|
|
160
161
|
|
|
161
162
|
const request = (locationPermissionType, rationale, callback) => {
|
|
162
|
-
|
|
163
|
-
|
|
163
|
+
const serviceError = new _OkHiException.OkHiException({
|
|
164
|
+
code: _OkHiException.OkHiException.SERVICE_UNAVAILABLE_CODE,
|
|
165
|
+
message: 'Location service is currently not available. Please enable in app settings'
|
|
166
|
+
});
|
|
167
|
+
const googlePlayError = new _OkHiException.OkHiException({
|
|
168
|
+
code: _OkHiException.OkHiException.SERVICE_UNAVAILABLE_CODE,
|
|
169
|
+
message: 'Google Play Services is currently unavailable. Please enable in settings'
|
|
170
|
+
});
|
|
171
|
+
|
|
172
|
+
const handleError = error => {
|
|
173
|
+
callback(null, error);
|
|
174
|
+
};
|
|
175
|
+
|
|
176
|
+
const handleGooglePlayServiceRequest = () => {
|
|
177
|
+
requestEnableGooglePlayServices().then(googlePlayStatus => {
|
|
178
|
+
if (!googlePlayStatus) {
|
|
179
|
+
handleError(googlePlayError);
|
|
180
|
+
} else {
|
|
181
|
+
handleRationaleRequest();
|
|
182
|
+
}
|
|
183
|
+
});
|
|
184
|
+
};
|
|
185
|
+
|
|
186
|
+
const handleRationaleAlert = alertRationale => {
|
|
187
|
+
return new Promise((resolve, _) => {
|
|
188
|
+
_reactNative.Alert.alert(alertRationale.title, alertRationale.text, [{
|
|
189
|
+
text: alertRationale.grantButton ? alertRationale.grantButton.label : 'Grant',
|
|
190
|
+
onPress: () => {
|
|
191
|
+
resolve(true);
|
|
192
|
+
}
|
|
193
|
+
}, {
|
|
194
|
+
text: alertRationale.denyButton ? alertRationale.denyButton.label : 'Deny',
|
|
195
|
+
onPress: () => {
|
|
196
|
+
resolve(false);
|
|
197
|
+
},
|
|
198
|
+
style: 'cancel'
|
|
199
|
+
}], {
|
|
200
|
+
onDismiss: () => {
|
|
201
|
+
resolve(false);
|
|
202
|
+
}
|
|
203
|
+
});
|
|
204
|
+
});
|
|
205
|
+
};
|
|
164
206
|
|
|
165
|
-
|
|
207
|
+
const handlePermissionRequest = () => {
|
|
208
|
+
if (_reactNative.Platform.OS === 'ios') {
|
|
209
|
+
_OkHiNativeModule.OkHiNativeEvents.removeAllListeners('onLocationPermissionStatusUpdate');
|
|
166
210
|
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
211
|
+
_OkHiNativeModule.OkHiNativeEvents.addListener('onLocationPermissionStatusUpdate', permissionUpdate => {
|
|
212
|
+
callback(permissionUpdate, null);
|
|
213
|
+
});
|
|
214
|
+
|
|
215
|
+
if (locationPermissionType === 'whenInUse') {
|
|
216
|
+
_OkHiNativeModule.OkHiNativeModule.requestLocationPermission();
|
|
217
|
+
} else {
|
|
218
|
+
_OkHiNativeModule.OkHiNativeModule.requestBackgroundLocationPermission();
|
|
219
|
+
}
|
|
175
220
|
} else {
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
if (
|
|
181
|
-
|
|
182
|
-
text: rationale.successButton ? rationale.successButton.label : 'Okay',
|
|
183
|
-
onPress: async () => {
|
|
184
|
-
const result = await requestBackgroundLocationPermission();
|
|
185
|
-
callback(result ? 'authorizedAlways' : 'authorizedWhenInUse');
|
|
186
|
-
}
|
|
187
|
-
}], {
|
|
188
|
-
onDismiss: () => {
|
|
189
|
-
callback('authorizedWhenInUse');
|
|
190
|
-
}
|
|
191
|
-
});
|
|
221
|
+
if (locationPermissionType === 'whenInUse') {
|
|
222
|
+
requestLocationPermissionAndroid().then(whenInUseResult => callback(whenInUseResult ? 'authorizedWhenInUse' : 'denied', null));
|
|
223
|
+
} else {
|
|
224
|
+
requestLocationPermissionAndroid().then(initialWhenInUseResult => {
|
|
225
|
+
if (!initialWhenInUseResult) {
|
|
226
|
+
callback('denied', null);
|
|
192
227
|
} else {
|
|
193
|
-
|
|
194
|
-
|
|
228
|
+
callback('authorizedWhenInUse', null);
|
|
229
|
+
requestBackgroundLocationPermission().then(alwaysResult => {
|
|
230
|
+
callback(alwaysResult ? 'authorizedAlways' : 'authorizedWhenInUse', null);
|
|
231
|
+
});
|
|
195
232
|
}
|
|
233
|
+
});
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
};
|
|
237
|
+
|
|
238
|
+
const handleRationaleRequest = async () => {
|
|
239
|
+
const currentStatus = await retriveLocationPermissionStatus();
|
|
240
|
+
let showRationale = true;
|
|
241
|
+
|
|
242
|
+
if (locationPermissionType === 'whenInUse' && (currentStatus === 'authorizedWhenInUse' || currentStatus === 'authorizedAlways')) {
|
|
243
|
+
showRationale = false;
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
if (locationPermissionType === 'always' && currentStatus === 'authorizedAlways') {
|
|
247
|
+
showRationale = false;
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
if (rationale && showRationale) {
|
|
251
|
+
const result = await handleRationaleAlert(rationale);
|
|
252
|
+
|
|
253
|
+
if (!result) {
|
|
254
|
+
callback('rationaleDissmissed', null);
|
|
255
|
+
} else {
|
|
256
|
+
handlePermissionRequest();
|
|
257
|
+
}
|
|
258
|
+
} else {
|
|
259
|
+
handlePermissionRequest();
|
|
260
|
+
}
|
|
261
|
+
};
|
|
262
|
+
|
|
263
|
+
isLocationServicesEnabled().then(serviceStatus => {
|
|
264
|
+
if (!serviceStatus && _reactNative.Platform.OS === 'ios') {
|
|
265
|
+
handleError(serviceError);
|
|
266
|
+
} else if (!serviceStatus && _reactNative.Platform.OS === 'android') {
|
|
267
|
+
requestEnableLocationServices().then(enableResult => {
|
|
268
|
+
if (!enableResult) {
|
|
269
|
+
handleError(serviceError);
|
|
196
270
|
} else {
|
|
197
|
-
|
|
271
|
+
handleGooglePlayServiceRequest();
|
|
198
272
|
}
|
|
199
|
-
});
|
|
273
|
+
}).catch(handleError);
|
|
274
|
+
} else {
|
|
275
|
+
if (_reactNative.Platform.OS === 'ios') {
|
|
276
|
+
handleRationaleRequest();
|
|
277
|
+
} else {
|
|
278
|
+
handleGooglePlayServiceRequest();
|
|
279
|
+
}
|
|
200
280
|
}
|
|
201
|
-
}
|
|
281
|
+
}).catch(handleError);
|
|
202
282
|
};
|
|
203
283
|
|
|
204
284
|
exports.request = request;
|
|
@@ -210,6 +290,10 @@ const openAppSettings = () => {
|
|
|
210
290
|
exports.openAppSettings = openAppSettings;
|
|
211
291
|
|
|
212
292
|
const retriveLocationPermissionStatus = async () => {
|
|
293
|
+
if (_reactNative.Platform.OS === 'ios') {
|
|
294
|
+
return _OkHiNativeModule.OkHiNativeModule.retriveLocationPermissionStatus();
|
|
295
|
+
}
|
|
296
|
+
|
|
213
297
|
const alwaysPerm = await isBackgroundLocationPermissionGranted();
|
|
214
298
|
|
|
215
299
|
if (alwaysPerm) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["Helpers.ts"],"names":["isLocationServicesEnabled","OkHiNativeModule","isLocationPermissionGranted","isBackgroundLocationPermissionGrantedAndroid","sdkVersion","getSystemVersion","hasPermission","PermissionsAndroid","check","PERMISSIONS","ACCESS_BACKGROUND_LOCATION","isBackgroundLocationPermissionGrantedIOS","isBackgroundLocationPermissionGranted","fn","Platform","OS","requestLocationPermissionAndroid","status","requestMultiple","ACCESS_FINE_LOCATION","ACCESS_COARSE_LOCATION","requestLocationPermissionIOS","requestLocationPermission","console","log","isGranted","requestBackgroundLocationPermissionAndroid","permissions","requestBackgroundLocationPermissionIOS","requestBackgroundLocationPermission","requestEnableLocationServices","isGooglePlayServicesAvailable","requestEnableGooglePlayServices","request","locationPermissionType","rationale","callback","OkHiNativeEvents","removeAllListeners","addListener","then","result","whenInUseResult","version","Alert","alert","title","text","successButton","label","onPress","onDismiss","permission","openAppSettings","retriveLocationPermissionStatus","alwaysPerm","whenInUsePerm"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;AAOA;AACA;AACA;AACA;AACO,MAAMA,yBAAyB,GAAG,MAAwB;AAC/D,SAAO,8BAAgBC,mCAAiBD,yBAAjC,CAAP;AACD,CAFM;AAIP;AACA;AACA;AACA;;;;;AACO,MAAME,2BAA2B,GAAG,MAAwB;AACjE,SAAO,8BAAgBD,mCAAiBC,2BAAjC,CAAP;AACD,CAFM;;;;AAIP,MAAMC,4CAA4C,GAChD,YAA8B;AAC5B,QAAMC,UAAU,GAAG,MAAMH,mCAAiBI,gBAAjB,EAAzB;;AACA,MAAID,UAAU,GAAG,EAAjB,EAAqB;AACnB,WAAO,IAAP;AACD;;AACD,MAAIA,UAAU,GAAG,EAAjB,EAAqB;AACnB,WAAO,MAAMF,2BAA2B,EAAxC;AACD;;AACD,QAAMI,aAAa,GAAG,MAAMC,gCAAmBC,KAAnB,CAC1BD,gCAAmBE,WAAnB,CAA+BC,0BADL,CAA5B;AAGA,SAAOJ,aAAP;AACD,CAbH;;AAeA,MAAMK,wCAAwC,GAAG,MAAwB;AACvE,SAAOV,mCAAiBW,qCAAjB,EAAP;AACD,CAFD;AAIA;AACA;AACA;AACA;;;AACO,MAAMA,qCAAqC,GAAG,MAAwB;AAC3E,QAAMC,EAAE,GACNC,sBAASC,EAAT,KAAgB,SAAhB,GACIZ,4CADJ,GAEIQ,wCAHN;AAIA,SAAO,8BAAgBE,EAAhB,CAAP;AACD,CANM;;;;AAQP,MAAMG,gCAAgC,GAAG,YAA8B;AACrE,QAAMC,MAAW,GAAG,MAAMV,gCAAmBW,eAAnB,CAAmC,CAC3DX,gCAAmBE,WAAnB,CAA+BU,oBAD4B,EAE3DZ,gCAAmBE,WAAnB,CAA+BW,sBAF4B,CAAnC,CAA1B;AAIA,SAAOH,MAAM,CAAC,yCAAD,CAAN,KAAsD,SAA7D;AACD,CAND;;AAQA,MAAMI,4BAA4B,GAAG,MAAwB;AAC3D,SAAOpB,mCAAiBqB,yBAAjB,EAAP;AACD,CAFD;AAIA;AACA;AACA;AACA;;;AACO,MAAMA,yBAAyB,GAAG,YAA8B;AACrEC,EAAAA,OAAO,CAACC,GAAR,CAAY,MAAZ;AACA,QAAMC,SAAS,GAAG,MAAMvB,2BAA2B,EAAnD;AACA,MAAIuB,SAAJ,EAAe,OAAOA,SAAP;AACf,SAAO,2BACLX,sBAASC,EAAT,KAAgB,SAAhB,GACIC,gCADJ,GAEIK,4BAHC,CAAP;AAKD,CATM;;;;AAWP,MAAMK,0CAA0C,GAC9C,YAA8B;AAC5B,QAAMtB,UAAU,GAAG,MAAMH,mCAAiBI,gBAAjB,EAAzB;AACA,MAAID,UAAU,GAAG,EAAjB,EAAqB,OAAO,IAAP;;AACrB,MAAIA,UAAU,IAAI,EAAlB,EAAsB;AACpB,UAAMuB,WAAgB,GAAG,CACvBpB,gCAAmBE,WAAnB,CAA+BC,0BADR,CAAzB;AAGA,UAAMO,MAAW,GAAG,MAAMV,gCAAmBW,eAAnB,CAAmCS,WAAnC,CAA1B;AACA,WACEV,MAAM,CAAC,+CAAD,CAAN,KAA4D,SAD9D;AAGD,GARD,MAQO;AACL,WAAO,MAAMD,gCAAgC,EAA7C;AACD;AACF,CAfH;;AAiBA,MAAMY,sCAAsC,GAAG,MAAwB;AACrE,SAAO3B,mCAAiB4B,mCAAjB,EAAP;AACD,CAFD;AAIA;AACA;AACA;AACA;;;AACO,MAAMA,mCAAmC,GAC9C,YAA8B;AAC5B,QAAMJ,SAAS,GAAG,MAAMb,qCAAqC,EAA7D;AACA,MAAIa,SAAJ,EAAe,OAAOA,SAAP;AACf,SAAO,2BACLX,sBAASC,EAAT,KAAgB,SAAhB,GACIW,0CADJ,GAEIE,sCAHC,CAAP;AAKD,CATI;AAWP;AACA;AACA;AACA;;;;;AACO,MAAME,6BAA6B,GAAG,MAA+B;AAC1E,SAAO,8BAAgB7B,mCAAiB6B,6BAAjC,CAAP;AACD,CAFM;AAIP;AACA;AACA;AACA;;;;;AACO,MAAMC,6BAA6B,GAAG,MAAwB;AACnE,SAAO,8BACL9B,mCAAiB8B,6BADZ,EAEL,SAFK,CAAP;AAID,CALM;AAOP;AACA;AACA;AACA;;;;;AACO,MAAMC,+BAA+B,GAAG,MAAwB;AACrE,SAAO,8BACL/B,mCAAiB+B,+BADZ,EAEL,SAFK,CAAP;AAID,CALM;AAOP;AACA;AACA;AACA;;;;;AACO,MAAM3B,gBAAgB,GAAG,MAC9B,8BAAgBJ,mCAAiBI,gBAAjC,CADK;;;;AAGA,MAAM4B,OAAO,GAAG,CACrBC,sBADqB,EAErBC,SAFqB,EAOrBC,QAPqB,KAQlB;AACH,MAAItB,sBAASC,EAAT,KAAgB,KAApB,EAA2B;AACzBsB,uCAAiBC,kBAAjB,CAAoC,kCAApC;;AACAD,uCAAiBE,WAAjB,CAA6B,kCAA7B,EAAiEH,QAAjE;;AACA,QAAIF,sBAAsB,KAAK,WAA/B,EAA4C;AAC1CjC,yCAAiBqB,yBAAjB;AACD,KAFD,MAEO;AACLrB,yCAAiB4B,mCAAjB;AACD;AACF,GARD,MAQO;AACL,QAAIK,sBAAsB,KAAK,WAA/B,EAA4C;AAC1ClB,MAAAA,gCAAgC,GAAGwB,IAAnC,CAAyCC,MAAD,IACtCL,QAAQ,CAACK,MAAM,GAAG,qBAAH,GAA2B,QAAlC,CADV;AAGD,KAJD,MAIO;AACLzB,MAAAA,gCAAgC,GAAGwB,IAAnC,CAAwC,MAAOE,eAAP,IAA2B;AACjE,YAAIA,eAAJ,EAAqB;AACnB,gBAAMC,OAAO,GAAG,MAAMtC,gBAAgB,EAAtC;;AACA,cAAIsC,OAAO,IAAI,EAAX,IAAiBR,SAArB,EAAgC;AAC9BS,+BAAMC,KAAN,CACEV,SAAS,CAACW,KADZ,EAEEX,SAAS,CAACY,IAFZ,EAGE,CACE;AACEA,cAAAA,IAAI,EAAEZ,SAAS,CAACa,aAAV,GACFb,SAAS,CAACa,aAAV,CAAwBC,KADtB,GAEF,MAHN;AAIEC,cAAAA,OAAO,EAAE,YAAY;AACnB,sBAAMT,MAAM,GAAG,MAAMZ,mCAAmC,EAAxD;AACAO,gBAAAA,QAAQ,CACNK,MAAM,GAAG,kBAAH,GAAwB,qBADxB,CAAR;AAGD;AATH,aADF,CAHF,EAgBE;AACEU,cAAAA,SAAS,EAAE,MAAM;AACff,gBAAAA,QAAQ,CAAC,qBAAD,CAAR;AACD;AAHH,aAhBF;AAsBD,WAvBD,MAuBO;AACL,kBAAMgB,UAAU,GAAG,MAAMvB,mCAAmC,EAA5D;AACAO,YAAAA,QAAQ,CAACgB,UAAU,GAAG,kBAAH,GAAwB,qBAAnC,CAAR;AACD;AACF,SA7BD,MA6BO;AACLhB,UAAAA,QAAQ,CAAC,QAAD,CAAR;AACD;AACF,OAjCD;AAkCD;AACF;AACF,CA3DM;;;;AA6DA,MAAMiB,eAAe,GAAG,MAAM;AACnCpD,qCAAiBoD,eAAjB;AACD,CAFM;;;;AAIA,MAAMC,+BAA+B,GAC1C,YAA+C;AAC7C,QAAMC,UAAU,GAAG,MAAM3C,qCAAqC,EAA9D;;AACA,MAAI2C,UAAJ,EAAgB;AACd,WAAO,kBAAP;AACD;;AACD,QAAMC,aAAa,GAAG,MAAMtD,2BAA2B,EAAvD;AACA,SAAOsD,aAAa,GAAG,qBAAH,GAA2B,QAA/C;AACD,CARI","sourcesContent":["import { OkHiNativeModule, OkHiNativeEvents } from '../OkHiNativeModule';\nimport { Alert, PermissionsAndroid, Platform } from 'react-native';\nimport { errorHandler, isValidPlatform } from './_helpers';\nimport type {\n LocationPermissionCallback,\n LocationPermissionStatus,\n LocationRequestPermissionType,\n} from './types';\n\n/**\n * Checks whether location services are enabled\n * @returns {Promise<boolean>} A promise that resolves to a boolen value indicating whether the service is available\n */\nexport const isLocationServicesEnabled = (): Promise<boolean> => {\n return isValidPlatform(OkHiNativeModule.isLocationServicesEnabled);\n};\n\n/**\n * Checks whether when in use location permission is granted\n * @returns {Promise<boolean>} A promise that resolves to a boolen value indicating whether the permission is granted\n */\nexport const isLocationPermissionGranted = (): Promise<boolean> => {\n return isValidPlatform(OkHiNativeModule.isLocationPermissionGranted);\n};\n\nconst isBackgroundLocationPermissionGrantedAndroid =\n async (): Promise<boolean> => {\n const sdkVersion = await OkHiNativeModule.getSystemVersion();\n if (sdkVersion < 23) {\n return true;\n }\n if (sdkVersion < 29) {\n return await isLocationPermissionGranted();\n }\n const hasPermission = await PermissionsAndroid.check(\n PermissionsAndroid.PERMISSIONS.ACCESS_BACKGROUND_LOCATION\n );\n return hasPermission;\n };\n\nconst isBackgroundLocationPermissionGrantedIOS = (): Promise<boolean> => {\n return OkHiNativeModule.isBackgroundLocationPermissionGranted();\n};\n\n/**\n * Checks whether background location permission is granted\n * @returns {Promise<boolean>} A promise that resolves to a boolen value indicating whether the permission is granted\n */\nexport const isBackgroundLocationPermissionGranted = (): Promise<boolean> => {\n const fn =\n Platform.OS === 'android'\n ? isBackgroundLocationPermissionGrantedAndroid\n : isBackgroundLocationPermissionGrantedIOS;\n return isValidPlatform(fn);\n};\n\nconst requestLocationPermissionAndroid = async (): Promise<boolean> => {\n const status: any = await PermissionsAndroid.requestMultiple([\n PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION,\n PermissionsAndroid.PERMISSIONS.ACCESS_COARSE_LOCATION,\n ]);\n return status['android.permission.ACCESS_FINE_LOCATION'] === 'granted';\n};\n\nconst requestLocationPermissionIOS = (): Promise<boolean> => {\n return OkHiNativeModule.requestLocationPermission();\n};\n\n/**\n * Requests for when in use location permission\n * @returns {Promise<boolean>} A promise that resolves to a boolen value indicating whether the permission is granted\n */\nexport const requestLocationPermission = async (): Promise<boolean> => {\n console.log('yooo');\n const isGranted = await isLocationPermissionGranted();\n if (isGranted) return isGranted;\n return errorHandler(\n Platform.OS === 'android'\n ? requestLocationPermissionAndroid\n : requestLocationPermissionIOS\n );\n};\n\nconst requestBackgroundLocationPermissionAndroid =\n async (): Promise<boolean> => {\n const sdkVersion = await OkHiNativeModule.getSystemVersion();\n if (sdkVersion < 23) return true;\n if (sdkVersion >= 29) {\n const permissions: any = [\n PermissionsAndroid.PERMISSIONS.ACCESS_BACKGROUND_LOCATION,\n ];\n const status: any = await PermissionsAndroid.requestMultiple(permissions);\n return (\n status['android.permission.ACCESS_BACKGROUND_LOCATION'] === 'granted'\n );\n } else {\n return await requestLocationPermissionAndroid();\n }\n };\n\nconst requestBackgroundLocationPermissionIOS = (): Promise<boolean> => {\n return OkHiNativeModule.requestBackgroundLocationPermission();\n};\n\n/**\n * Requests for background location permission\n * @returns {Promise<boolean>} A promise that resolves to a boolen value indicating whether the permission is granted\n */\nexport const requestBackgroundLocationPermission =\n async (): Promise<boolean> => {\n const isGranted = await isBackgroundLocationPermissionGranted();\n if (isGranted) return isGranted;\n return errorHandler(\n Platform.OS === 'android'\n ? requestBackgroundLocationPermissionAndroid\n : requestBackgroundLocationPermissionIOS\n );\n };\n\n/**\n * Requests the user to enable location services by showing an in app modal on android and opening location settings on iOS\n * @returns {Promise<boolean>} A promise that resolves to either a boolean value on android or null on iOS\n */\nexport const requestEnableLocationServices = (): Promise<boolean | null> => {\n return isValidPlatform(OkHiNativeModule.requestEnableLocationServices);\n};\n\n/**\n * Android Only - Checks if Google Play Services is available\n * @returns {Promise<boolean>} A promise that resolves to a boolean value indicating whether the service is avaialbe\n */\nexport const isGooglePlayServicesAvailable = (): Promise<boolean> => {\n return isValidPlatform(\n OkHiNativeModule.isGooglePlayServicesAvailable,\n 'android'\n );\n};\n\n/**\n * Android Only - Requests user to enable Google Play Services\n * @returns {Promise<boolean>} A promise that resolves to a boolean value indicating whether the service is avaialbe\n */\nexport const requestEnableGooglePlayServices = (): Promise<boolean> => {\n return isValidPlatform(\n OkHiNativeModule.requestEnableGooglePlayServices,\n 'android'\n );\n};\n\n/**\n * Returns the system version of the current platform\n * @returns {Promise<boolean>} A promise that resolves either a string on iOS or number on Android\n */\nexport const getSystemVersion = (): Promise<string | number> =>\n isValidPlatform(OkHiNativeModule.getSystemVersion);\n\nexport const request = (\n locationPermissionType: LocationRequestPermissionType,\n rationale: {\n title: string;\n text: string;\n successButton?: { label: string };\n } | null,\n callback: LocationPermissionCallback\n) => {\n if (Platform.OS === 'ios') {\n OkHiNativeEvents.removeAllListeners('onLocationPermissionStatusUpdate');\n OkHiNativeEvents.addListener('onLocationPermissionStatusUpdate', callback);\n if (locationPermissionType === 'whenInUse') {\n OkHiNativeModule.requestLocationPermission();\n } else {\n OkHiNativeModule.requestBackgroundLocationPermission();\n }\n } else {\n if (locationPermissionType === 'whenInUse') {\n requestLocationPermissionAndroid().then((result) =>\n callback(result ? 'authorizedWhenInUse' : 'denied')\n );\n } else {\n requestLocationPermissionAndroid().then(async (whenInUseResult) => {\n if (whenInUseResult) {\n const version = await getSystemVersion();\n if (version >= 30 && rationale) {\n Alert.alert(\n rationale.title,\n rationale.text,\n [\n {\n text: rationale.successButton\n ? rationale.successButton.label\n : 'Okay',\n onPress: async () => {\n const result = await requestBackgroundLocationPermission();\n callback(\n result ? 'authorizedAlways' : 'authorizedWhenInUse'\n );\n },\n },\n ],\n {\n onDismiss: () => {\n callback('authorizedWhenInUse');\n },\n }\n );\n } else {\n const permission = await requestBackgroundLocationPermission();\n callback(permission ? 'authorizedAlways' : 'authorizedWhenInUse');\n }\n } else {\n callback('denied');\n }\n });\n }\n }\n};\n\nexport const openAppSettings = () => {\n OkHiNativeModule.openAppSettings();\n};\n\nexport const retriveLocationPermissionStatus =\n async (): Promise<LocationPermissionStatus> => {\n const alwaysPerm = await isBackgroundLocationPermissionGranted();\n if (alwaysPerm) {\n return 'authorizedAlways';\n }\n const whenInUsePerm = await isLocationPermissionGranted();\n return whenInUsePerm ? 'authorizedWhenInUse' : 'denied';\n };\n"]}
|
|
1
|
+
{"version":3,"sources":["Helpers.ts"],"names":["isLocationServicesEnabled","OkHiNativeModule","isLocationPermissionGranted","isBackgroundLocationPermissionGrantedAndroid","sdkVersion","getSystemVersion","hasPermission","PermissionsAndroid","check","PERMISSIONS","ACCESS_BACKGROUND_LOCATION","isBackgroundLocationPermissionGrantedIOS","isBackgroundLocationPermissionGranted","fn","Platform","OS","requestLocationPermissionAndroid","status","requestMultiple","ACCESS_FINE_LOCATION","ACCESS_COARSE_LOCATION","requestLocationPermissionIOS","requestLocationPermission","isGranted","requestBackgroundLocationPermissionAndroid","permissions","requestBackgroundLocationPermissionIOS","requestBackgroundLocationPermission","requestEnableLocationServices","isGooglePlayServicesAvailable","requestEnableGooglePlayServices","request","locationPermissionType","rationale","callback","serviceError","OkHiException","code","SERVICE_UNAVAILABLE_CODE","message","googlePlayError","handleError","error","handleGooglePlayServiceRequest","then","googlePlayStatus","handleRationaleRequest","handleRationaleAlert","alertRationale","Promise","resolve","_","Alert","alert","title","text","grantButton","label","onPress","denyButton","style","onDismiss","handlePermissionRequest","OkHiNativeEvents","removeAllListeners","addListener","permissionUpdate","whenInUseResult","initialWhenInUseResult","alwaysResult","currentStatus","retriveLocationPermissionStatus","showRationale","result","serviceStatus","enableResult","catch","openAppSettings","alwaysPerm","whenInUsePerm"],"mappings":"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","sourcesContent":["import { OkHiNativeModule, OkHiNativeEvents } from '../OkHiNativeModule';\nimport { Alert, PermissionsAndroid, Platform } from 'react-native';\nimport { errorHandler, isValidPlatform } from './_helpers';\nimport type {\n LocationPermissionCallback,\n LocationPermissionStatus,\n LocationRequestPermissionType,\n} from './types';\nimport { OkHiException } from './OkHiException';\n\n/**\n * Checks whether location services are enabled\n * @returns {Promise<boolean>} A promise that resolves to a boolen value indicating whether the service is available\n */\nexport const isLocationServicesEnabled = (): Promise<boolean> => {\n return isValidPlatform(OkHiNativeModule.isLocationServicesEnabled);\n};\n\n/**\n * Checks whether when in use location permission is granted\n * @returns {Promise<boolean>} A promise that resolves to a boolen value indicating whether the permission is granted\n */\nexport const isLocationPermissionGranted = (): Promise<boolean> => {\n return isValidPlatform(OkHiNativeModule.isLocationPermissionGranted);\n};\n\nconst isBackgroundLocationPermissionGrantedAndroid =\n async (): Promise<boolean> => {\n const sdkVersion = await OkHiNativeModule.getSystemVersion();\n if (sdkVersion < 23) {\n return true;\n }\n if (sdkVersion < 29) {\n return await isLocationPermissionGranted();\n }\n const hasPermission = await PermissionsAndroid.check(\n PermissionsAndroid.PERMISSIONS.ACCESS_BACKGROUND_LOCATION\n );\n return hasPermission;\n };\n\nconst isBackgroundLocationPermissionGrantedIOS = (): Promise<boolean> => {\n return OkHiNativeModule.isBackgroundLocationPermissionGranted();\n};\n\n/**\n * Checks whether background location permission is granted\n * @returns {Promise<boolean>} A promise that resolves to a boolen value indicating whether the permission is granted\n */\nexport const isBackgroundLocationPermissionGranted = (): Promise<boolean> => {\n const fn =\n Platform.OS === 'android'\n ? isBackgroundLocationPermissionGrantedAndroid\n : isBackgroundLocationPermissionGrantedIOS;\n return isValidPlatform(fn);\n};\n\nconst requestLocationPermissionAndroid = async (): Promise<boolean> => {\n const status: any = await PermissionsAndroid.requestMultiple([\n PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION,\n PermissionsAndroid.PERMISSIONS.ACCESS_COARSE_LOCATION,\n ]);\n return status['android.permission.ACCESS_FINE_LOCATION'] === 'granted';\n};\n\nconst requestLocationPermissionIOS = (): Promise<boolean> => {\n return OkHiNativeModule.requestLocationPermission();\n};\n\n/**\n * Requests for when in use location permission\n * @returns {Promise<boolean>} A promise that resolves to a boolen value indicating whether the permission is granted\n */\nexport const requestLocationPermission = async (): Promise<boolean> => {\n const isGranted = await isLocationPermissionGranted();\n if (isGranted) return isGranted;\n return errorHandler(\n Platform.OS === 'android'\n ? requestLocationPermissionAndroid\n : requestLocationPermissionIOS\n );\n};\n\nconst requestBackgroundLocationPermissionAndroid =\n async (): Promise<boolean> => {\n const sdkVersion = await OkHiNativeModule.getSystemVersion();\n if (sdkVersion < 23) return true;\n if (sdkVersion >= 29) {\n const permissions: any = [\n PermissionsAndroid.PERMISSIONS.ACCESS_BACKGROUND_LOCATION,\n ];\n const status: any = await PermissionsAndroid.requestMultiple(permissions);\n return (\n status['android.permission.ACCESS_BACKGROUND_LOCATION'] === 'granted'\n );\n } else {\n return await requestLocationPermissionAndroid();\n }\n };\n\nconst requestBackgroundLocationPermissionIOS = (): Promise<boolean> => {\n return OkHiNativeModule.requestBackgroundLocationPermission();\n};\n\n/**\n * Requests for background location permission\n * @returns {Promise<boolean>} A promise that resolves to a boolen value indicating whether the permission is granted\n */\nexport const requestBackgroundLocationPermission =\n async (): Promise<boolean> => {\n const isGranted = await isBackgroundLocationPermissionGranted();\n if (isGranted) return isGranted;\n return errorHandler(\n Platform.OS === 'android'\n ? requestBackgroundLocationPermissionAndroid\n : requestBackgroundLocationPermissionIOS\n );\n };\n\n/**\n * Requests the user to enable location services by showing an in app modal on android and opening location settings on iOS\n * @returns {Promise<boolean>} A promise that resolves to either a boolean value on android or null on iOS\n */\nexport const requestEnableLocationServices = (): Promise<boolean | null> => {\n return isValidPlatform(OkHiNativeModule.requestEnableLocationServices);\n};\n\n/**\n * Android Only - Checks if Google Play Services is available\n * @returns {Promise<boolean>} A promise that resolves to a boolean value indicating whether the service is avaialbe\n */\nexport const isGooglePlayServicesAvailable = (): Promise<boolean> => {\n return isValidPlatform(\n OkHiNativeModule.isGooglePlayServicesAvailable,\n 'android'\n );\n};\n\n/**\n * Android Only - Requests user to enable Google Play Services\n * @returns {Promise<boolean>} A promise that resolves to a boolean value indicating whether the service is avaialbe\n */\nexport const requestEnableGooglePlayServices = (): Promise<boolean> => {\n return isValidPlatform(\n OkHiNativeModule.requestEnableGooglePlayServices,\n 'android'\n );\n};\n\n/**\n * Returns the system version of the current platform\n * @returns {Promise<boolean>} A promise that resolves either a string on iOS or number on Android\n */\nexport const getSystemVersion = (): Promise<string | number> =>\n isValidPlatform(OkHiNativeModule.getSystemVersion);\n\nexport const request = (\n locationPermissionType: LocationRequestPermissionType,\n rationale: {\n title: string;\n text: string;\n successButton?: { label: string };\n denyButton?: { label: string };\n } | null,\n callback: LocationPermissionCallback\n) => {\n const serviceError = new OkHiException({\n code: OkHiException.SERVICE_UNAVAILABLE_CODE,\n message:\n 'Location service is currently not available. Please enable in app settings',\n });\n\n const googlePlayError = new OkHiException({\n code: OkHiException.SERVICE_UNAVAILABLE_CODE,\n message:\n 'Google Play Services is currently unavailable. Please enable in settings',\n });\n\n const handleError = (error: OkHiException) => {\n callback(null, error);\n };\n\n const handleGooglePlayServiceRequest = () => {\n requestEnableGooglePlayServices().then((googlePlayStatus) => {\n if (!googlePlayStatus) {\n handleError(googlePlayError);\n } else {\n handleRationaleRequest();\n }\n });\n };\n\n const handleRationaleAlert = (alertRationale: {\n title: string;\n text: string;\n grantButton?: { label: string };\n denyButton?: { label: string };\n }) => {\n return new Promise((resolve, _) => {\n Alert.alert(\n alertRationale.title,\n alertRationale.text,\n [\n {\n text: alertRationale.grantButton\n ? alertRationale.grantButton.label\n : 'Grant',\n onPress: () => {\n resolve(true);\n },\n },\n {\n text: alertRationale.denyButton\n ? alertRationale.denyButton.label\n : 'Deny',\n onPress: () => {\n resolve(false);\n },\n style: 'cancel',\n },\n ],\n {\n onDismiss: () => {\n resolve(false);\n },\n }\n );\n });\n };\n\n const handlePermissionRequest = () => {\n if (Platform.OS === 'ios') {\n OkHiNativeEvents.removeAllListeners('onLocationPermissionStatusUpdate');\n OkHiNativeEvents.addListener(\n 'onLocationPermissionStatusUpdate',\n (permissionUpdate) => {\n callback(permissionUpdate, null);\n }\n );\n if (locationPermissionType === 'whenInUse') {\n OkHiNativeModule.requestLocationPermission();\n } else {\n OkHiNativeModule.requestBackgroundLocationPermission();\n }\n } else {\n if (locationPermissionType === 'whenInUse') {\n requestLocationPermissionAndroid().then((whenInUseResult) =>\n callback(whenInUseResult ? 'authorizedWhenInUse' : 'denied', null)\n );\n } else {\n requestLocationPermissionAndroid().then((initialWhenInUseResult) => {\n if (!initialWhenInUseResult) {\n callback('denied', null);\n } else {\n callback('authorizedWhenInUse', null);\n requestBackgroundLocationPermission().then((alwaysResult) => {\n callback(\n alwaysResult ? 'authorizedAlways' : 'authorizedWhenInUse',\n null\n );\n });\n }\n });\n }\n }\n };\n\n const handleRationaleRequest = async () => {\n const currentStatus = await retriveLocationPermissionStatus();\n let showRationale = true;\n if (\n locationPermissionType === 'whenInUse' &&\n (currentStatus === 'authorizedWhenInUse' ||\n currentStatus === 'authorizedAlways')\n ) {\n showRationale = false;\n }\n if (\n locationPermissionType === 'always' &&\n currentStatus === 'authorizedAlways'\n ) {\n showRationale = false;\n }\n if (rationale && showRationale) {\n const result = await handleRationaleAlert(rationale);\n if (!result) {\n callback('rationaleDissmissed', null);\n } else {\n handlePermissionRequest();\n }\n } else {\n handlePermissionRequest();\n }\n };\n\n isLocationServicesEnabled()\n .then((serviceStatus) => {\n if (!serviceStatus && Platform.OS === 'ios') {\n handleError(serviceError);\n } else if (!serviceStatus && Platform.OS === 'android') {\n requestEnableLocationServices()\n .then((enableResult) => {\n if (!enableResult) {\n handleError(serviceError);\n } else {\n handleGooglePlayServiceRequest();\n }\n })\n .catch(handleError);\n } else {\n if (Platform.OS === 'ios') {\n handleRationaleRequest();\n } else {\n handleGooglePlayServiceRequest();\n }\n }\n })\n .catch(handleError);\n};\n\nexport const openAppSettings = () => {\n OkHiNativeModule.openAppSettings();\n};\n\nexport const retriveLocationPermissionStatus =\n async (): Promise<LocationPermissionStatus> => {\n if (Platform.OS === 'ios') {\n return OkHiNativeModule.retriveLocationPermissionStatus() as Promise<LocationPermissionStatus>;\n }\n const alwaysPerm = await isBackgroundLocationPermissionGranted();\n if (alwaysPerm) {\n return 'authorizedAlways';\n }\n const whenInUsePerm = await isLocationPermissionGranted();\n return whenInUsePerm ? 'authorizedWhenInUse' : 'denied';\n };\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["index.ts"],"names":["OkHiNativeModule","NativeModules","Okhi","OkHiNativeEvents","NativeEventEmitter","addListener"],"mappings":";;;;;;;AAAA;;
|
|
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"]}
|