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.
- package/android/src/main/java/com/reactnativeokhi/OkhiModule.java +10 -0
- package/ios/Okhi.m +2 -0
- package/ios/Okhi.swift +27 -17
- 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/OkCore/Helpers.js +4 -0
- 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/OkCore/Helpers.js +4 -0
- 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/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/OkCore/Helpers.ts +3 -0
- package/src/OkHiNativeModule/index.ts +1 -0
- package/android/.DS_Store +0 -0
- 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
|
@@ -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
|
-
|
|
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(
|
|
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"]}
|
|
@@ -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;;
|
|
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(
|
|
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
|
-
|
|
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","
|
|
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;
|
|
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.
|
|
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 {
|
|
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(
|
|
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(
|
|
152
|
+
payload: generateStartDataPayload(
|
|
153
|
+
props,
|
|
154
|
+
token,
|
|
155
|
+
applicationConfiguration,
|
|
156
|
+
locationPermissionStatus
|
|
157
|
+
),
|
|
140
158
|
});
|
|
141
159
|
|
|
142
160
|
return (
|
package/src/OkCollect/Util.ts
CHANGED
|
@@ -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
|
|
package/src/OkCore/Helpers.ts
CHANGED
|
@@ -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';
|
package/android/.DS_Store
DELETED
|
Binary file
|
package/ios/.DS_Store
DELETED
|
Binary file
|