react-native-okhi 1.2.3-beta.5 → 1.2.3-beta.6
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/lib/commonjs/OkCollect/OkHiLocationManager.js +6 -6
- package/lib/commonjs/OkCollect/OkHiLocationManager.js.map +1 -1
- package/lib/commonjs/OkCollect/app.json +1 -1
- package/lib/module/OkCollect/OkHiLocationManager.js +7 -7
- package/lib/module/OkCollect/OkHiLocationManager.js.map +1 -1
- package/lib/module/OkCollect/app.json +1 -1
- package/package.json +1 -1
- package/src/OkCollect/OkHiLocationManager.tsx +13 -6
- package/src/OkCollect/app.json +1 -1
|
@@ -104,13 +104,13 @@ const OkHiLocationManager = props => {
|
|
|
104
104
|
};
|
|
105
105
|
const handleAndroidRequestLocationPermission = async level => {
|
|
106
106
|
// using request for android because we can programmatically turn on location services, unlike yucky ios
|
|
107
|
-
(0, _OkCore.request)(level, null, (
|
|
108
|
-
if (error) {
|
|
107
|
+
(0, _OkCore.request)(level, null, async (_, error) => {
|
|
108
|
+
if (!error) {
|
|
109
|
+
const isAlwaysGranted = await (0, _OkCore.isBackgroundLocationPermissionGranted)();
|
|
110
|
+
const isWhenInUseGranted = await (0, _OkCore.isLocationPermissionGranted)();
|
|
111
|
+
runWebViewCallback(isAlwaysGranted ? 'always' : isWhenInUseGranted ? 'whenInUse' : 'denied');
|
|
112
|
+
} else {
|
|
109
113
|
onError(error);
|
|
110
|
-
} else if (level === 'whenInUse' && status === 'authorizedWhenInUse') {
|
|
111
|
-
runWebViewCallback(level);
|
|
112
|
-
} else if (level === 'always' && status === 'authorizedAlways') {
|
|
113
|
-
runWebViewCallback(level);
|
|
114
114
|
}
|
|
115
115
|
});
|
|
116
116
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_reactNativeWebview","_Spinner","_Util","_OkHiException","_OkHiAuth","_OkVerify","_OkCore","_OkHiNativeModule","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","OkHiLocationManager","props","token","setToken","useState","applicationConfiguration","setApplicationConfiguration","startPayload","setStartPaylaod","defaultStyle","flex","style","user","onSuccess","onCloseRequest","onError","loader","launch","config","webViewRef","useRef","startMessage","mode","ready","setReady","useEffect","phone","getApplicationConfiguration","then","OkHiException","code","UNAUTHORIZED_CODE","message","UNAUTHORIZED_MESSAGE","auth","OkHiAuth","anonymousSignInWithPhoneNumber","catch","error","generateStartDataPayload","console","log","JSON","stringify","Platform","OS","Version","OkHiNativeModule","setItem","payload","url","getFrameUrl","permissionsOnboarding","isBackgroundLocationPermissionGranted","result","PERMISSION_DENIED_CODE","runWebViewCallback","value","current","jsString","injectJavaScript","handleAndroidRequestLocationPermission","level","request","status","handleIOSRequestLocationPermission","serviceError","SERVICE_UNAVAILABLE_CODE","unknownError","UNKNOWN_ERROR_CODE","isServiceAvailable","isLocationServicesEnabled","requestLocationPermission","granted","openAppSettings","handleRequestLocationPermission","_ref","handleOnMessage","_ref2","nativeEvent","data","response","parse","openProtectedAppsSettings","fcmPushNotificationToken","location","parseOkHiLocation","startVerification","createdUser","Promise","resolve","reject","id","BAD_REQUEST_CODE","sv","lat","lon","errorMessage","Error","handleOnError","NETWORK_ERROR_CODE","NETWORK_ERROR_MESSAGE","handleModalRequestClose","_webViewRef$current","goBack","renderContent","createElement","Spinner","jsAfterLoad","jsBeforeLoad","generateJavaScriptStartScript","SafeAreaView","WebView","source","uri","injectedJavaScriptBeforeContentLoaded","undefined","injectedJavaScript","onMessage","onHttpError","geolocationEnabled","allowsBackForwardNavigationGestures","ref","Modal","animationType","transparent","visible","onRequestClose","exports","_default"],"sources":["OkHiLocationManager.tsx"],"sourcesContent":["import React, { useState, useEffect, useRef } 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 OkHiLocationManagerStartDataPayload,\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 isBackgroundLocationPermissionGranted,\n isLocationServicesEnabled,\n openAppSettings,\n openProtectedAppsSettings,\n request,\n requestLocationPermission,\n} from '../OkCore';\nimport { OkHiNativeModule } from '../OkHiNativeModule';\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 [token, setToken] = useState<string | null>(null);\n const [applicationConfiguration, setApplicationConfiguration] =\n useState<AuthApplicationConfig | null>(null);\n const [startPayload, setStartPaylaod] =\n useState<null | OkHiLocationManagerStartDataPayload>(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, config } =\n props;\n const webViewRef = useRef<WebView | null>(null);\n const startMessage =\n props.mode === 'create' ? 'start_app' : 'select_location';\n const [ready, setReady] = useState(false);\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, ['verify'], 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 useEffect(() => {\n if (token !== null && applicationConfiguration !== null) {\n // TODO: handle faliure\n generateStartDataPayload(props, token, applicationConfiguration)\n .then((startPayload) => {\n console.log('>>', JSON.stringify(startPayload));\n setStartPaylaod(startPayload);\n if (Platform.OS === 'android' && Platform.Version > 25) {\n OkHiNativeModule.setItem(\n 'okcollect-launch-payload',\n JSON.stringify({\n message: startMessage,\n payload: startPayload,\n url: getFrameUrl(applicationConfiguration),\n })\n ).catch(console.error);\n }\n })\n .catch(console.error);\n }\n }, [applicationConfiguration, props, token]);\n\n useEffect(() => {\n if (launch) {\n if (\n typeof config?.permissionsOnboarding === 'boolean' &&\n !config.permissionsOnboarding\n ) {\n isBackgroundLocationPermissionGranted().then((result) => {\n if (!result) {\n onError(\n new OkHiException({\n code: OkHiException.PERMISSION_DENIED_CODE,\n message:\n 'Always location permission must be granted to launch OkCollect',\n })\n );\n } else {\n setReady(true);\n }\n });\n } else {\n setReady(true);\n }\n }\n }, [launch, config?.permissionsOnboarding]);\n\n const runWebViewCallback = (value: string) => {\n if (webViewRef.current) {\n const jsString = `(function (){ if (typeof runOkHiLocationManagerCallback === \"function\") { runOkHiLocationManagerCallback(\"${value}\") } })()`;\n webViewRef.current.injectJavaScript(jsString);\n }\n };\n\n const handleAndroidRequestLocationPermission = async (\n level: 'whenInUse' | 'always'\n ) => {\n // using request for android because we can programmatically turn on location services, unlike yucky ios\n request(level, null, (status, error) => {\n if (error) {\n onError(error);\n } else if (level === 'whenInUse' && status === 'authorizedWhenInUse') {\n runWebViewCallback(level);\n } else if (level === 'always' && status === 'authorizedAlways') {\n runWebViewCallback(level);\n }\n });\n };\n\n const handleIOSRequestLocationPermission = async (\n level: 'whenInUse' | 'always'\n ) => {\n const serviceError = new OkHiException({\n code: OkHiException.SERVICE_UNAVAILABLE_CODE,\n message:\n 'Location service is currently not available. Please enable in app settings',\n });\n const unknownError = new OkHiException({\n code: OkHiException.UNKNOWN_ERROR_CODE,\n message:\n 'Something went wrong while requesting permissions. Please try again later.',\n });\n try {\n const isServiceAvailable = await isLocationServicesEnabled();\n if (!isServiceAvailable) {\n onError(serviceError);\n } else if (level === 'whenInUse') {\n const result = await requestLocationPermission();\n runWebViewCallback(result ? level : 'denied');\n } else if (level === 'always') {\n const granted = await isBackgroundLocationPermissionGranted();\n if (granted) {\n runWebViewCallback(level);\n } else {\n openAppSettings();\n }\n }\n } catch (error) {\n onError(unknownError);\n }\n };\n\n const handleRequestLocationPermission = async ({\n level,\n }: {\n level: 'whenInUse' | 'always';\n }) => {\n if (Platform.OS === 'android') {\n handleAndroidRequestLocationPermission(level);\n } else if (Platform.OS === 'ios') {\n handleIOSRequestLocationPermission(level);\n }\n };\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: 'Something went wrong, please try again later.',\n })\n );\n } else if (response.message === 'exit_app') {\n onCloseRequest();\n } else if (response.message === 'request_enable_protected_apps') {\n openProtectedAppsSettings();\n } else if (\n response.message === 'location_created' ||\n response.message === 'location_selected' ||\n response.message === 'location_updated'\n ) {\n onSuccess({\n user: {\n ...response.payload.user,\n fcmPushNotificationToken: user.fcmPushNotificationToken,\n },\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 createdUser.fcmPushNotificationToken\n )\n .then(resolve)\n .catch(reject);\n }\n });\n },\n });\n } else if (response.message === 'request_location_permission') {\n handleRequestLocationPermission(response.payload);\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 handleModalRequestClose = () => {\n webViewRef.current?.goBack();\n };\n\n const renderContent = () => {\n if (token === null || applicationConfiguration == null) {\n return loader || <Spinner />;\n }\n\n if (startPayload === null) {\n return loader || <Spinner />;\n }\n\n const { jsAfterLoad, jsBeforeLoad } = generateJavaScriptStartScript({\n message: startMessage,\n payload: startPayload,\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 ref={webViewRef}\n />\n </SafeAreaView>\n );\n };\n\n return (\n <Modal\n animationType=\"slide\"\n transparent={false}\n visible={ready}\n onRequestClose={handleModalRequestClose}\n >\n {ready ? renderContent() : null}\n </Modal>\n );\n};\n\nexport default OkHiLocationManager;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_reactNativeWebview","_Spinner","_Util","_OkHiException","_OkHiAuth","_OkVerify","_OkCore","_OkHiNativeModule","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","OkHiLocationManager","props","token","setToken","useState","applicationConfiguration","setApplicationConfiguration","startPayload","setStartPaylaod","defaultStyle","flex","style","user","onSuccess","onCloseRequest","onError","loader","launch","config","webViewRef","useRef","startMessage","mode","ready","setReady","useEffect","phone","getApplicationConfiguration","then","OkHiException","code","UNAUTHORIZED_CODE","message","UNAUTHORIZED_MESSAGE","auth","OkHiAuth","anonymousSignInWithPhoneNumber","catch","error","generateStartDataPayload","console","log","JSON","stringify","Platform","OS","Version","OkHiNativeModule","setItem","payload","url","getFrameUrl","permissionsOnboarding","isBackgroundLocationPermissionGranted","result","PERMISSION_DENIED_CODE","runWebViewCallback","value","current","jsString","injectJavaScript","handleAndroidRequestLocationPermission","level","request","_","isAlwaysGranted","isWhenInUseGranted","isLocationPermissionGranted","handleIOSRequestLocationPermission","serviceError","SERVICE_UNAVAILABLE_CODE","unknownError","UNKNOWN_ERROR_CODE","isServiceAvailable","isLocationServicesEnabled","requestLocationPermission","granted","openAppSettings","handleRequestLocationPermission","_ref","handleOnMessage","_ref2","nativeEvent","data","response","parse","openProtectedAppsSettings","fcmPushNotificationToken","location","parseOkHiLocation","startVerification","createdUser","Promise","resolve","reject","id","BAD_REQUEST_CODE","sv","lat","lon","errorMessage","Error","handleOnError","NETWORK_ERROR_CODE","NETWORK_ERROR_MESSAGE","handleModalRequestClose","_webViewRef$current","goBack","renderContent","createElement","Spinner","jsAfterLoad","jsBeforeLoad","generateJavaScriptStartScript","SafeAreaView","WebView","source","uri","injectedJavaScriptBeforeContentLoaded","undefined","injectedJavaScript","onMessage","onHttpError","geolocationEnabled","allowsBackForwardNavigationGestures","ref","Modal","animationType","transparent","visible","onRequestClose","exports","_default"],"sources":["OkHiLocationManager.tsx"],"sourcesContent":["import React, { useState, useEffect, useRef } 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 OkHiLocationManagerStartDataPayload,\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 isBackgroundLocationPermissionGranted,\n isLocationPermissionGranted,\n isLocationServicesEnabled,\n openAppSettings,\n openProtectedAppsSettings,\n request,\n requestLocationPermission,\n} from '../OkCore';\nimport { OkHiNativeModule } from '../OkHiNativeModule';\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 [token, setToken] = useState<string | null>(null);\n const [applicationConfiguration, setApplicationConfiguration] =\n useState<AuthApplicationConfig | null>(null);\n const [startPayload, setStartPaylaod] =\n useState<null | OkHiLocationManagerStartDataPayload>(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, config } =\n props;\n const webViewRef = useRef<WebView | null>(null);\n const startMessage =\n props.mode === 'create' ? 'start_app' : 'select_location';\n const [ready, setReady] = useState(false);\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, ['verify'], 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 useEffect(() => {\n if (token !== null && applicationConfiguration !== null) {\n // TODO: handle faliure\n generateStartDataPayload(props, token, applicationConfiguration)\n .then((startPayload) => {\n console.log('>>', JSON.stringify(startPayload));\n setStartPaylaod(startPayload);\n if (Platform.OS === 'android' && Platform.Version > 25) {\n OkHiNativeModule.setItem(\n 'okcollect-launch-payload',\n JSON.stringify({\n message: startMessage,\n payload: startPayload,\n url: getFrameUrl(applicationConfiguration),\n })\n ).catch(console.error);\n }\n })\n .catch(console.error);\n }\n }, [applicationConfiguration, props, token]);\n\n useEffect(() => {\n if (launch) {\n if (\n typeof config?.permissionsOnboarding === 'boolean' &&\n !config.permissionsOnboarding\n ) {\n isBackgroundLocationPermissionGranted().then((result) => {\n if (!result) {\n onError(\n new OkHiException({\n code: OkHiException.PERMISSION_DENIED_CODE,\n message:\n 'Always location permission must be granted to launch OkCollect',\n })\n );\n } else {\n setReady(true);\n }\n });\n } else {\n setReady(true);\n }\n }\n }, [launch, config?.permissionsOnboarding]);\n\n const runWebViewCallback = (value: string) => {\n if (webViewRef.current) {\n const jsString = `(function (){ if (typeof runOkHiLocationManagerCallback === \"function\") { runOkHiLocationManagerCallback(\"${value}\") } })()`;\n webViewRef.current.injectJavaScript(jsString);\n }\n };\n\n const handleAndroidRequestLocationPermission = async (\n level: 'whenInUse' | 'always'\n ) => {\n // using request for android because we can programmatically turn on location services, unlike yucky ios\n request(level, null, async (_, error) => {\n if (!error) {\n const isAlwaysGranted = await isBackgroundLocationPermissionGranted();\n const isWhenInUseGranted = await isLocationPermissionGranted();\n runWebViewCallback(\n isAlwaysGranted\n ? 'always'\n : isWhenInUseGranted\n ? 'whenInUse'\n : 'denied'\n );\n } else {\n onError(error);\n }\n });\n };\n\n const handleIOSRequestLocationPermission = async (\n level: 'whenInUse' | 'always'\n ) => {\n const serviceError = new OkHiException({\n code: OkHiException.SERVICE_UNAVAILABLE_CODE,\n message:\n 'Location service is currently not available. Please enable in app settings',\n });\n const unknownError = new OkHiException({\n code: OkHiException.UNKNOWN_ERROR_CODE,\n message:\n 'Something went wrong while requesting permissions. Please try again later.',\n });\n try {\n const isServiceAvailable = await isLocationServicesEnabled();\n if (!isServiceAvailable) {\n onError(serviceError);\n } else if (level === 'whenInUse') {\n const result = await requestLocationPermission();\n runWebViewCallback(result ? level : 'denied');\n } else if (level === 'always') {\n const granted = await isBackgroundLocationPermissionGranted();\n if (granted) {\n runWebViewCallback(level);\n } else {\n openAppSettings();\n }\n }\n } catch (error) {\n onError(unknownError);\n }\n };\n\n const handleRequestLocationPermission = async ({\n level,\n }: {\n level: 'whenInUse' | 'always';\n }) => {\n if (Platform.OS === 'android') {\n handleAndroidRequestLocationPermission(level);\n } else if (Platform.OS === 'ios') {\n handleIOSRequestLocationPermission(level);\n }\n };\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: 'Something went wrong, please try again later.',\n })\n );\n } else if (response.message === 'exit_app') {\n onCloseRequest();\n } else if (response.message === 'request_enable_protected_apps') {\n openProtectedAppsSettings();\n } else if (\n response.message === 'location_created' ||\n response.message === 'location_selected' ||\n response.message === 'location_updated'\n ) {\n onSuccess({\n user: {\n ...response.payload.user,\n fcmPushNotificationToken: user.fcmPushNotificationToken,\n },\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 createdUser.fcmPushNotificationToken\n )\n .then(resolve)\n .catch(reject);\n }\n });\n },\n });\n } else if (response.message === 'request_location_permission') {\n handleRequestLocationPermission(response.payload);\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 handleModalRequestClose = () => {\n webViewRef.current?.goBack();\n };\n\n const renderContent = () => {\n if (token === null || applicationConfiguration == null) {\n return loader || <Spinner />;\n }\n\n if (startPayload === null) {\n return loader || <Spinner />;\n }\n\n const { jsAfterLoad, jsBeforeLoad } = generateJavaScriptStartScript({\n message: startMessage,\n payload: startPayload,\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 ref={webViewRef}\n />\n </SafeAreaView>\n );\n };\n\n return (\n <Modal\n animationType=\"slide\"\n transparent={false}\n visible={ready}\n onRequestClose={handleModalRequestClose}\n >\n {ready ? renderContent() : null}\n </Modal>\n );\n};\n\nexport default OkHiLocationManager;\n"],"mappings":"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"}
|
|
@@ -6,7 +6,7 @@ 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, isBackgroundLocationPermissionGranted, isLocationServicesEnabled, openAppSettings, openProtectedAppsSettings, request, requestLocationPermission } from '../OkCore';
|
|
9
|
+
import { getApplicationConfiguration, isBackgroundLocationPermissionGranted, isLocationPermissionGranted, isLocationServicesEnabled, openAppSettings, openProtectedAppsSettings, request, requestLocationPermission } from '../OkCore';
|
|
10
10
|
import { OkHiNativeModule } from '../OkHiNativeModule';
|
|
11
11
|
|
|
12
12
|
/**
|
|
@@ -97,13 +97,13 @@ export const OkHiLocationManager = props => {
|
|
|
97
97
|
};
|
|
98
98
|
const handleAndroidRequestLocationPermission = async level => {
|
|
99
99
|
// using request for android because we can programmatically turn on location services, unlike yucky ios
|
|
100
|
-
request(level, null, (
|
|
101
|
-
if (error) {
|
|
100
|
+
request(level, null, async (_, error) => {
|
|
101
|
+
if (!error) {
|
|
102
|
+
const isAlwaysGranted = await isBackgroundLocationPermissionGranted();
|
|
103
|
+
const isWhenInUseGranted = await isLocationPermissionGranted();
|
|
104
|
+
runWebViewCallback(isAlwaysGranted ? 'always' : isWhenInUseGranted ? 'whenInUse' : 'denied');
|
|
105
|
+
} else {
|
|
102
106
|
onError(error);
|
|
103
|
-
} else if (level === 'whenInUse' && status === 'authorizedWhenInUse') {
|
|
104
|
-
runWebViewCallback(level);
|
|
105
|
-
} else if (level === 'always' && status === 'authorizedAlways') {
|
|
106
|
-
runWebViewCallback(level);
|
|
107
107
|
}
|
|
108
108
|
});
|
|
109
109
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useState","useEffect","useRef","Modal","SafeAreaView","Platform","WebView","Spinner","getFrameUrl","generateJavaScriptStartScript","generateStartDataPayload","parseOkHiLocation","OkHiException","OkHiAuth","start","sv","getApplicationConfiguration","isBackgroundLocationPermissionGranted","isLocationServicesEnabled","openAppSettings","openProtectedAppsSettings","request","requestLocationPermission","OkHiNativeModule","OkHiLocationManager","props","token","setToken","applicationConfiguration","setApplicationConfiguration","startPayload","setStartPaylaod","defaultStyle","flex","style","user","onSuccess","onCloseRequest","onError","loader","launch","config","webViewRef","startMessage","mode","ready","setReady","phone","then","code","UNAUTHORIZED_CODE","message","UNAUTHORIZED_MESSAGE","auth","anonymousSignInWithPhoneNumber","catch","error","console","log","JSON","stringify","OS","Version","setItem","payload","url","permissionsOnboarding","result","PERMISSION_DENIED_CODE","runWebViewCallback","value","current","jsString","injectJavaScript","handleAndroidRequestLocationPermission","level","status","handleIOSRequestLocationPermission","serviceError","SERVICE_UNAVAILABLE_CODE","unknownError","UNKNOWN_ERROR_CODE","isServiceAvailable","granted","handleRequestLocationPermission","_ref","handleOnMessage","_ref2","nativeEvent","data","response","parse","fcmPushNotificationToken","location","startVerification","createdUser","Promise","resolve","reject","id","BAD_REQUEST_CODE","lat","lon","errorMessage","Error","handleOnError","NETWORK_ERROR_CODE","NETWORK_ERROR_MESSAGE","handleModalRequestClose","_webViewRef$current","goBack","renderContent","createElement","jsAfterLoad","jsBeforeLoad","source","uri","injectedJavaScriptBeforeContentLoaded","undefined","injectedJavaScript","onMessage","onHttpError","geolocationEnabled","allowsBackForwardNavigationGestures","ref","animationType","transparent","visible","onRequestClose"],"sources":["OkHiLocationManager.tsx"],"sourcesContent":["import React, { useState, useEffect, useRef } 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 OkHiLocationManagerStartDataPayload,\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 isBackgroundLocationPermissionGranted,\n isLocationServicesEnabled,\n openAppSettings,\n openProtectedAppsSettings,\n request,\n requestLocationPermission,\n} from '../OkCore';\nimport { OkHiNativeModule } from '../OkHiNativeModule';\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 [token, setToken] = useState<string | null>(null);\n const [applicationConfiguration, setApplicationConfiguration] =\n useState<AuthApplicationConfig | null>(null);\n const [startPayload, setStartPaylaod] =\n useState<null | OkHiLocationManagerStartDataPayload>(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, config } =\n props;\n const webViewRef = useRef<WebView | null>(null);\n const startMessage =\n props.mode === 'create' ? 'start_app' : 'select_location';\n const [ready, setReady] = useState(false);\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, ['verify'], 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 useEffect(() => {\n if (token !== null && applicationConfiguration !== null) {\n // TODO: handle faliure\n generateStartDataPayload(props, token, applicationConfiguration)\n .then((startPayload) => {\n console.log('>>', JSON.stringify(startPayload));\n setStartPaylaod(startPayload);\n if (Platform.OS === 'android' && Platform.Version > 25) {\n OkHiNativeModule.setItem(\n 'okcollect-launch-payload',\n JSON.stringify({\n message: startMessage,\n payload: startPayload,\n url: getFrameUrl(applicationConfiguration),\n })\n ).catch(console.error);\n }\n })\n .catch(console.error);\n }\n }, [applicationConfiguration, props, token]);\n\n useEffect(() => {\n if (launch) {\n if (\n typeof config?.permissionsOnboarding === 'boolean' &&\n !config.permissionsOnboarding\n ) {\n isBackgroundLocationPermissionGranted().then((result) => {\n if (!result) {\n onError(\n new OkHiException({\n code: OkHiException.PERMISSION_DENIED_CODE,\n message:\n 'Always location permission must be granted to launch OkCollect',\n })\n );\n } else {\n setReady(true);\n }\n });\n } else {\n setReady(true);\n }\n }\n }, [launch, config?.permissionsOnboarding]);\n\n const runWebViewCallback = (value: string) => {\n if (webViewRef.current) {\n const jsString = `(function (){ if (typeof runOkHiLocationManagerCallback === \"function\") { runOkHiLocationManagerCallback(\"${value}\") } })()`;\n webViewRef.current.injectJavaScript(jsString);\n }\n };\n\n const handleAndroidRequestLocationPermission = async (\n level: 'whenInUse' | 'always'\n ) => {\n // using request for android because we can programmatically turn on location services, unlike yucky ios\n request(level, null, (status, error) => {\n if (error) {\n onError(error);\n } else if (level === 'whenInUse' && status === 'authorizedWhenInUse') {\n runWebViewCallback(level);\n } else if (level === 'always' && status === 'authorizedAlways') {\n runWebViewCallback(level);\n }\n });\n };\n\n const handleIOSRequestLocationPermission = async (\n level: 'whenInUse' | 'always'\n ) => {\n const serviceError = new OkHiException({\n code: OkHiException.SERVICE_UNAVAILABLE_CODE,\n message:\n 'Location service is currently not available. Please enable in app settings',\n });\n const unknownError = new OkHiException({\n code: OkHiException.UNKNOWN_ERROR_CODE,\n message:\n 'Something went wrong while requesting permissions. Please try again later.',\n });\n try {\n const isServiceAvailable = await isLocationServicesEnabled();\n if (!isServiceAvailable) {\n onError(serviceError);\n } else if (level === 'whenInUse') {\n const result = await requestLocationPermission();\n runWebViewCallback(result ? level : 'denied');\n } else if (level === 'always') {\n const granted = await isBackgroundLocationPermissionGranted();\n if (granted) {\n runWebViewCallback(level);\n } else {\n openAppSettings();\n }\n }\n } catch (error) {\n onError(unknownError);\n }\n };\n\n const handleRequestLocationPermission = async ({\n level,\n }: {\n level: 'whenInUse' | 'always';\n }) => {\n if (Platform.OS === 'android') {\n handleAndroidRequestLocationPermission(level);\n } else if (Platform.OS === 'ios') {\n handleIOSRequestLocationPermission(level);\n }\n };\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: 'Something went wrong, please try again later.',\n })\n );\n } else if (response.message === 'exit_app') {\n onCloseRequest();\n } else if (response.message === 'request_enable_protected_apps') {\n openProtectedAppsSettings();\n } else if (\n response.message === 'location_created' ||\n response.message === 'location_selected' ||\n response.message === 'location_updated'\n ) {\n onSuccess({\n user: {\n ...response.payload.user,\n fcmPushNotificationToken: user.fcmPushNotificationToken,\n },\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 createdUser.fcmPushNotificationToken\n )\n .then(resolve)\n .catch(reject);\n }\n });\n },\n });\n } else if (response.message === 'request_location_permission') {\n handleRequestLocationPermission(response.payload);\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 handleModalRequestClose = () => {\n webViewRef.current?.goBack();\n };\n\n const renderContent = () => {\n if (token === null || applicationConfiguration == null) {\n return loader || <Spinner />;\n }\n\n if (startPayload === null) {\n return loader || <Spinner />;\n }\n\n const { jsAfterLoad, jsBeforeLoad } = generateJavaScriptStartScript({\n message: startMessage,\n payload: startPayload,\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 ref={webViewRef}\n />\n </SafeAreaView>\n );\n };\n\n return (\n <Modal\n animationType=\"slide\"\n transparent={false}\n visible={ready}\n onRequestClose={handleModalRequestClose}\n >\n {ready ? renderContent() : null}\n </Modal>\n );\n};\n\nexport default OkHiLocationManager;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["React","useState","useEffect","useRef","Modal","SafeAreaView","Platform","WebView","Spinner","getFrameUrl","generateJavaScriptStartScript","generateStartDataPayload","parseOkHiLocation","OkHiException","OkHiAuth","start","sv","getApplicationConfiguration","isBackgroundLocationPermissionGranted","isLocationPermissionGranted","isLocationServicesEnabled","openAppSettings","openProtectedAppsSettings","request","requestLocationPermission","OkHiNativeModule","OkHiLocationManager","props","token","setToken","applicationConfiguration","setApplicationConfiguration","startPayload","setStartPaylaod","defaultStyle","flex","style","user","onSuccess","onCloseRequest","onError","loader","launch","config","webViewRef","startMessage","mode","ready","setReady","phone","then","code","UNAUTHORIZED_CODE","message","UNAUTHORIZED_MESSAGE","auth","anonymousSignInWithPhoneNumber","catch","error","console","log","JSON","stringify","OS","Version","setItem","payload","url","permissionsOnboarding","result","PERMISSION_DENIED_CODE","runWebViewCallback","value","current","jsString","injectJavaScript","handleAndroidRequestLocationPermission","level","_","isAlwaysGranted","isWhenInUseGranted","handleIOSRequestLocationPermission","serviceError","SERVICE_UNAVAILABLE_CODE","unknownError","UNKNOWN_ERROR_CODE","isServiceAvailable","granted","handleRequestLocationPermission","_ref","handleOnMessage","_ref2","nativeEvent","data","response","parse","fcmPushNotificationToken","location","startVerification","createdUser","Promise","resolve","reject","id","BAD_REQUEST_CODE","lat","lon","errorMessage","Error","handleOnError","NETWORK_ERROR_CODE","NETWORK_ERROR_MESSAGE","handleModalRequestClose","_webViewRef$current","goBack","renderContent","createElement","jsAfterLoad","jsBeforeLoad","source","uri","injectedJavaScriptBeforeContentLoaded","undefined","injectedJavaScript","onMessage","onHttpError","geolocationEnabled","allowsBackForwardNavigationGestures","ref","animationType","transparent","visible","onRequestClose"],"sources":["OkHiLocationManager.tsx"],"sourcesContent":["import React, { useState, useEffect, useRef } 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 OkHiLocationManagerStartDataPayload,\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 isBackgroundLocationPermissionGranted,\n isLocationPermissionGranted,\n isLocationServicesEnabled,\n openAppSettings,\n openProtectedAppsSettings,\n request,\n requestLocationPermission,\n} from '../OkCore';\nimport { OkHiNativeModule } from '../OkHiNativeModule';\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 [token, setToken] = useState<string | null>(null);\n const [applicationConfiguration, setApplicationConfiguration] =\n useState<AuthApplicationConfig | null>(null);\n const [startPayload, setStartPaylaod] =\n useState<null | OkHiLocationManagerStartDataPayload>(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, config } =\n props;\n const webViewRef = useRef<WebView | null>(null);\n const startMessage =\n props.mode === 'create' ? 'start_app' : 'select_location';\n const [ready, setReady] = useState(false);\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, ['verify'], 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 useEffect(() => {\n if (token !== null && applicationConfiguration !== null) {\n // TODO: handle faliure\n generateStartDataPayload(props, token, applicationConfiguration)\n .then((startPayload) => {\n console.log('>>', JSON.stringify(startPayload));\n setStartPaylaod(startPayload);\n if (Platform.OS === 'android' && Platform.Version > 25) {\n OkHiNativeModule.setItem(\n 'okcollect-launch-payload',\n JSON.stringify({\n message: startMessage,\n payload: startPayload,\n url: getFrameUrl(applicationConfiguration),\n })\n ).catch(console.error);\n }\n })\n .catch(console.error);\n }\n }, [applicationConfiguration, props, token]);\n\n useEffect(() => {\n if (launch) {\n if (\n typeof config?.permissionsOnboarding === 'boolean' &&\n !config.permissionsOnboarding\n ) {\n isBackgroundLocationPermissionGranted().then((result) => {\n if (!result) {\n onError(\n new OkHiException({\n code: OkHiException.PERMISSION_DENIED_CODE,\n message:\n 'Always location permission must be granted to launch OkCollect',\n })\n );\n } else {\n setReady(true);\n }\n });\n } else {\n setReady(true);\n }\n }\n }, [launch, config?.permissionsOnboarding]);\n\n const runWebViewCallback = (value: string) => {\n if (webViewRef.current) {\n const jsString = `(function (){ if (typeof runOkHiLocationManagerCallback === \"function\") { runOkHiLocationManagerCallback(\"${value}\") } })()`;\n webViewRef.current.injectJavaScript(jsString);\n }\n };\n\n const handleAndroidRequestLocationPermission = async (\n level: 'whenInUse' | 'always'\n ) => {\n // using request for android because we can programmatically turn on location services, unlike yucky ios\n request(level, null, async (_, error) => {\n if (!error) {\n const isAlwaysGranted = await isBackgroundLocationPermissionGranted();\n const isWhenInUseGranted = await isLocationPermissionGranted();\n runWebViewCallback(\n isAlwaysGranted\n ? 'always'\n : isWhenInUseGranted\n ? 'whenInUse'\n : 'denied'\n );\n } else {\n onError(error);\n }\n });\n };\n\n const handleIOSRequestLocationPermission = async (\n level: 'whenInUse' | 'always'\n ) => {\n const serviceError = new OkHiException({\n code: OkHiException.SERVICE_UNAVAILABLE_CODE,\n message:\n 'Location service is currently not available. Please enable in app settings',\n });\n const unknownError = new OkHiException({\n code: OkHiException.UNKNOWN_ERROR_CODE,\n message:\n 'Something went wrong while requesting permissions. Please try again later.',\n });\n try {\n const isServiceAvailable = await isLocationServicesEnabled();\n if (!isServiceAvailable) {\n onError(serviceError);\n } else if (level === 'whenInUse') {\n const result = await requestLocationPermission();\n runWebViewCallback(result ? level : 'denied');\n } else if (level === 'always') {\n const granted = await isBackgroundLocationPermissionGranted();\n if (granted) {\n runWebViewCallback(level);\n } else {\n openAppSettings();\n }\n }\n } catch (error) {\n onError(unknownError);\n }\n };\n\n const handleRequestLocationPermission = async ({\n level,\n }: {\n level: 'whenInUse' | 'always';\n }) => {\n if (Platform.OS === 'android') {\n handleAndroidRequestLocationPermission(level);\n } else if (Platform.OS === 'ios') {\n handleIOSRequestLocationPermission(level);\n }\n };\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: 'Something went wrong, please try again later.',\n })\n );\n } else if (response.message === 'exit_app') {\n onCloseRequest();\n } else if (response.message === 'request_enable_protected_apps') {\n openProtectedAppsSettings();\n } else if (\n response.message === 'location_created' ||\n response.message === 'location_selected' ||\n response.message === 'location_updated'\n ) {\n onSuccess({\n user: {\n ...response.payload.user,\n fcmPushNotificationToken: user.fcmPushNotificationToken,\n },\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 createdUser.fcmPushNotificationToken\n )\n .then(resolve)\n .catch(reject);\n }\n });\n },\n });\n } else if (response.message === 'request_location_permission') {\n handleRequestLocationPermission(response.payload);\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 handleModalRequestClose = () => {\n webViewRef.current?.goBack();\n };\n\n const renderContent = () => {\n if (token === null || applicationConfiguration == null) {\n return loader || <Spinner />;\n }\n\n if (startPayload === null) {\n return loader || <Spinner />;\n }\n\n const { jsAfterLoad, jsBeforeLoad } = generateJavaScriptStartScript({\n message: startMessage,\n payload: startPayload,\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 ref={webViewRef}\n />\n </SafeAreaView>\n );\n };\n\n return (\n <Modal\n animationType=\"slide\"\n transparent={false}\n visible={ready}\n onRequestClose={handleModalRequestClose}\n >\n {ready ? renderContent() : null}\n </Modal>\n );\n};\n\nexport default OkHiLocationManager;\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -21,6 +21,7 @@ import type { OkVerifyStartConfiguration } from '../OkVerify/types';
|
|
|
21
21
|
import {
|
|
22
22
|
getApplicationConfiguration,
|
|
23
23
|
isBackgroundLocationPermissionGranted,
|
|
24
|
+
isLocationPermissionGranted,
|
|
24
25
|
isLocationServicesEnabled,
|
|
25
26
|
openAppSettings,
|
|
26
27
|
openProtectedAppsSettings,
|
|
@@ -136,13 +137,19 @@ export const OkHiLocationManager = (props: OkHiLocationManagerProps) => {
|
|
|
136
137
|
level: 'whenInUse' | 'always'
|
|
137
138
|
) => {
|
|
138
139
|
// using request for android because we can programmatically turn on location services, unlike yucky ios
|
|
139
|
-
request(level, null, (
|
|
140
|
-
if (error) {
|
|
140
|
+
request(level, null, async (_, error) => {
|
|
141
|
+
if (!error) {
|
|
142
|
+
const isAlwaysGranted = await isBackgroundLocationPermissionGranted();
|
|
143
|
+
const isWhenInUseGranted = await isLocationPermissionGranted();
|
|
144
|
+
runWebViewCallback(
|
|
145
|
+
isAlwaysGranted
|
|
146
|
+
? 'always'
|
|
147
|
+
: isWhenInUseGranted
|
|
148
|
+
? 'whenInUse'
|
|
149
|
+
: 'denied'
|
|
150
|
+
);
|
|
151
|
+
} else {
|
|
141
152
|
onError(error);
|
|
142
|
-
} else if (level === 'whenInUse' && status === 'authorizedWhenInUse') {
|
|
143
|
-
runWebViewCallback(level);
|
|
144
|
-
} else if (level === 'always' && status === 'authorizedAlways') {
|
|
145
|
-
runWebViewCallback(level);
|
|
146
153
|
}
|
|
147
154
|
});
|
|
148
155
|
};
|
package/src/OkCollect/app.json
CHANGED