react-native-okhi 1.0.31 → 1.1.0

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.
@@ -5,7 +5,7 @@ buildscript {
5
5
  }
6
6
 
7
7
  dependencies {
8
- classpath 'com.android.tools.build:gradle:3.5.3'
8
+ classpath 'com.android.tools.build:gradle:7.2.2'
9
9
  }
10
10
  }
11
11
 
@@ -125,8 +125,8 @@ repositories {
125
125
  dependencies {
126
126
  //noinspection GradleDynamicVersion
127
127
  implementation "com.facebook.react:react-native:+"
128
- implementation 'com.github.okhi:android-core:v1.4.9'
129
- implementation 'com.github.okhi:android-okverify:v1.7.4'
128
+ implementation 'com.github.OkHi:android-core:v1.5.9'
129
+ implementation 'com.github.OkHi:android-okverify:v1.9.10'
130
130
  // From node_modules
131
131
  }
132
132
 
@@ -1,5 +1,5 @@
1
1
  Okhi_kotlinVersion=1.7.0
2
2
  Okhi_minSdkVersion=21
3
- Okhi_targetSdkVersion=32
4
- Okhi_compileSdkVersion=32
3
+ Okhi_targetSdkVersion=33
4
+ Okhi_compileSdkVersion=33
5
5
  Okhi_ndkversion=21.4.7075529
@@ -50,6 +50,7 @@ const OkHiLocationManager = props => {
50
50
  loader,
51
51
  launch
52
52
  } = props;
53
+ const webViewRef = (0, _react.useRef)(null);
53
54
  (0, _react.useEffect)(() => {
54
55
  if (applicationConfiguration == null && token == null && user.phone) {
55
56
  (0, _OkCore.getApplicationConfiguration)().then(config => {
@@ -74,15 +75,15 @@ const OkHiLocationManager = props => {
74
75
  if (token !== null && applicationConfiguration !== null) {
75
76
  // TODO: handle faliure
76
77
  (0, _Util.generateStartDataPayload)(props, token, applicationConfiguration).then(startPayload => {
77
- if (_reactNative.Platform.OS === 'android') {
78
+ setStartPaylaod(startPayload);
79
+
80
+ if (_reactNative.Platform.OS === 'android' && _reactNative.Platform.Version > 25) {
78
81
  _OkHiNativeModule.OkHiNativeModule.setItem('okcollect-launch-payload', JSON.stringify({
79
82
  message: 'select_location',
80
83
  payload: startPayload,
81
84
  url: (0, _Util.getFrameUrl)(applicationConfiguration)
82
85
  })).catch(console.error);
83
86
  }
84
-
85
- setStartPaylaod(startPayload);
86
87
  }).catch(console.error);
87
88
  }
88
89
  }, [applicationConfiguration, props, token]);
@@ -148,6 +149,12 @@ const OkHiLocationManager = props => {
148
149
  }));
149
150
  };
150
151
 
152
+ const handleModalRequestClose = () => {
153
+ var _webViewRef$current;
154
+
155
+ (_webViewRef$current = webViewRef.current) === null || _webViewRef$current === void 0 ? void 0 : _webViewRef$current.goBack();
156
+ };
157
+
151
158
  const renderContent = () => {
152
159
  if (token === null || applicationConfiguration == null) {
153
160
  return loader || /*#__PURE__*/_react.default.createElement(_Spinner.Spinner, null);
@@ -176,14 +183,16 @@ const OkHiLocationManager = props => {
176
183
  onError: handleOnError,
177
184
  onHttpError: handleOnError,
178
185
  geolocationEnabled: true,
179
- allowsBackForwardNavigationGestures: true
186
+ allowsBackForwardNavigationGestures: true,
187
+ ref: webViewRef
180
188
  }));
181
189
  };
182
190
 
183
191
  return /*#__PURE__*/_react.default.createElement(_reactNative.Modal, {
184
192
  animationType: "slide",
185
193
  transparent: false,
186
- visible: launch
194
+ visible: launch,
195
+ onRequestClose: handleModalRequestClose
187
196
  }, launch ? renderContent() : null);
188
197
  };
189
198
 
@@ -1 +1 @@
1
- {"version":3,"names":["OkHiLocationManager","props","token","setToken","useState","applicationConfiguration","setApplicationConfiguration","startPayload","setStartPaylaod","defaultStyle","flex","style","user","onSuccess","onCloseRequest","onError","loader","launch","useEffect","phone","getApplicationConfiguration","then","config","OkHiException","code","UNAUTHORIZED_CODE","message","UNAUTHORIZED_MESSAGE","auth","OkHiAuth","anonymousSignInWithPhoneNumber","catch","error","generateStartDataPayload","Platform","OS","OkHiNativeModule","setItem","JSON","stringify","payload","url","getFrameUrl","console","handleOnMessage","nativeEvent","data","response","parse","UNKNOWN_ERROR_CODE","toString","openProtectedAppsSettings","location","parseOkHiLocation","startVerification","createdUser","Promise","resolve","reject","id","BAD_REQUEST_CODE","sv","lat","lon","errorMessage","Error","handleOnError","NETWORK_ERROR_CODE","NETWORK_ERROR_MESSAGE","renderContent","jsAfterLoad","jsBeforeLoad","generateJavaScriptStartScript","uri","undefined"],"sources":["OkHiLocationManager.tsx"],"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 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 openProtectedAppsSettings,\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 } = props;\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 if (Platform.OS === 'android') {\n OkHiNativeModule.setItem(\n 'okcollect-launch-payload',\n JSON.stringify({\n message: 'select_location',\n payload: startPayload,\n url: getFrameUrl(applicationConfiguration),\n })\n ).catch(console.error);\n }\n setStartPaylaod(startPayload);\n })\n .catch(console.error);\n }\n }, [applicationConfiguration, props, 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 if (response.message === 'request_enable_protected_apps') {\n openProtectedAppsSettings();\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 if (startPayload === null) {\n return loader || <Spinner />;\n }\n\n const { jsAfterLoad, jsBeforeLoad } = generateJavaScriptStartScript({\n message: 'select_location',\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 />\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"],"mappings":"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"}
1
+ {"version":3,"names":["OkHiLocationManager","props","token","setToken","useState","applicationConfiguration","setApplicationConfiguration","startPayload","setStartPaylaod","defaultStyle","flex","style","user","onSuccess","onCloseRequest","onError","loader","launch","webViewRef","useRef","useEffect","phone","getApplicationConfiguration","then","config","OkHiException","code","UNAUTHORIZED_CODE","message","UNAUTHORIZED_MESSAGE","auth","OkHiAuth","anonymousSignInWithPhoneNumber","catch","error","generateStartDataPayload","Platform","OS","Version","OkHiNativeModule","setItem","JSON","stringify","payload","url","getFrameUrl","console","handleOnMessage","nativeEvent","data","response","parse","UNKNOWN_ERROR_CODE","toString","openProtectedAppsSettings","location","parseOkHiLocation","startVerification","createdUser","Promise","resolve","reject","id","BAD_REQUEST_CODE","sv","lat","lon","errorMessage","Error","handleOnError","NETWORK_ERROR_CODE","NETWORK_ERROR_MESSAGE","handleModalRequestClose","current","goBack","renderContent","jsAfterLoad","jsBeforeLoad","generateJavaScriptStartScript","uri","undefined"],"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 openProtectedAppsSettings,\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 } = props;\n const webViewRef = useRef<WebView | null>(null);\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 setStartPaylaod(startPayload);\n if (Platform.OS === 'android' && Platform.Version > 25) {\n OkHiNativeModule.setItem(\n 'okcollect-launch-payload',\n JSON.stringify({\n message: 'select_location',\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 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 if (response.message === 'request_enable_protected_apps') {\n openProtectedAppsSettings();\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 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: 'select_location',\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={launch}\n onRequestClose={handleModalRequestClose}\n >\n {launch ? renderContent() : null}\n </Modal>\n );\n};\n\nexport default OkHiLocationManager;\n"],"mappings":"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"}
@@ -114,6 +114,21 @@ const getFrameUrl = applicationConfiguration => {
114
114
  const DEV_FRAME_URL = 'https://dev-manager-v5.okhi.io';
115
115
  const PROD_FRAME_URL = 'https://manager-v5.okhi.io';
116
116
  const SANDBOX_FRAME_URL = 'https://sandbox-manager-v5.okhi.io';
117
+ const LEGACY_DEV_FRAME_URL = 'https://dev-legacy-manager-v5.okhi.io';
118
+ const LEGACY_PROD_FRAME_URL = 'https://legacy-manager-v5.okhi.io';
119
+ const LEGACY_SANDBOX_FRAME_URL = 'https://sandbox-legacy-manager-v5.okhi.io';
120
+
121
+ if (_reactNative.Platform.OS === 'android' && _reactNative.Platform.Version < 24) {
122
+ if (applicationConfiguration.context.mode === _OkCore.OkHiMode.PROD) {
123
+ return LEGACY_PROD_FRAME_URL;
124
+ }
125
+
126
+ if (applicationConfiguration.context.mode === 'dev') {
127
+ return LEGACY_DEV_FRAME_URL;
128
+ }
129
+
130
+ return LEGACY_SANDBOX_FRAME_URL;
131
+ }
117
132
 
118
133
  if (applicationConfiguration.context.mode === _OkCore.OkHiMode.PROD) {
119
134
  return PROD_FRAME_URL;
@@ -143,11 +158,7 @@ const generateJavaScriptStartScript = startPayload => {
143
158
  }
144
159
  true;
145
160
  `;
146
- const jsAfterLoad = `
147
- window.startOkHiLocationManager({
148
- receiveMessage: function(data) { window.ReactNativeWebView.postMessage(data) } },
149
- ${JSON.stringify(startPayload)})
150
- `;
161
+ const jsAfterLoad = `window.startOkHiLocationManager({ receiveMessage: function(data) { window.ReactNativeWebView.postMessage(data) } }, ${JSON.stringify(startPayload)})`;
151
162
  return {
152
163
  jsBeforeLoad,
153
164
  jsAfterLoad
@@ -1 +1 @@
1
- {"version":3,"names":["generateStartDataPayload","props","authToken","applicationConfiguration","payload","style","theme","undefined","base","color","colors","primary","logo","appBar","name","app","user","phone","firstName","lastName","email","auth","context","container","version","developer","library","manifest","platform","hasLocationPermission","isLocationPermissionGranted","error","console","log","hasBackgroundLocationPermission","isBackgroundLocationPermissionGranted","permissions","location","Platform","OS","manufacturer","model","OkHiNativeModule","retrieveDeviceInfo","device","config","protectedApps","canOpenProtectedAppsSettings","streetView","backgroundColor","visible","addressTypes","home","work","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"],"sources":["Util.ts"],"sourcesContent":["import type { OkHiLocationManagerProps } from './types';\nimport {\n canOpenProtectedAppsSettings,\n isBackgroundLocationPermissionGranted,\n isLocationPermissionGranted,\n OkHiLocation,\n} 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';\nimport { OkHiNativeModule } from '../OkHiNativeModule';\n\n/**\n * @ignore\n */\nexport const generateStartDataPayload = async (\n props: OkHiLocationManagerProps,\n authToken: string,\n applicationConfiguration: AuthApplicationConfig\n): Promise<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 email: props.user.email,\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\n let hasLocationPermission: boolean | undefined;\n try {\n hasLocationPermission = await isLocationPermissionGranted();\n } catch (error) {\n console.log(error);\n }\n\n let hasBackgroundLocationPermission: boolean | undefined;\n try {\n hasBackgroundLocationPermission =\n await isBackgroundLocationPermissionGranted();\n } catch (error) {\n console.log(error);\n }\n\n if (\n typeof hasLocationPermission === 'boolean' &&\n typeof hasBackgroundLocationPermission === 'boolean'\n ) {\n payload.context.permissions = {\n location: hasBackgroundLocationPermission\n ? 'always'\n : hasLocationPermission\n ? 'whenInUse'\n : 'denied',\n };\n }\n\n if (Platform.OS === 'android') {\n const { manufacturer, model } = await OkHiNativeModule.retrieveDeviceInfo();\n payload.context.device = {\n manufacturer,\n model,\n };\n payload.context.permissions = {\n ...payload.context.permissions,\n };\n }\n payload.config = {\n protectedApps:\n Platform.OS === 'android' && (await canOpenProtectedAppsSettings()),\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 addressTypes: {\n home:\n typeof props.config?.addressTypes?.home === 'boolean'\n ? props.config?.addressTypes?.home\n : true,\n work:\n typeof props.config?.addressTypes?.work === 'boolean'\n ? props.config?.addressTypes?.work\n : true,\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"],"mappings":"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"}
1
+ {"version":3,"names":["generateStartDataPayload","props","authToken","applicationConfiguration","payload","style","theme","undefined","base","color","colors","primary","logo","appBar","name","app","user","phone","firstName","lastName","email","auth","context","container","version","developer","library","manifest","platform","hasLocationPermission","isLocationPermissionGranted","error","console","log","hasBackgroundLocationPermission","isBackgroundLocationPermissionGranted","permissions","location","Platform","OS","manufacturer","model","OkHiNativeModule","retrieveDeviceInfo","device","config","protectedApps","canOpenProtectedAppsSettings","streetView","backgroundColor","visible","addressTypes","home","work","getFrameUrl","DEV_FRAME_URL","PROD_FRAME_URL","SANDBOX_FRAME_URL","LEGACY_DEV_FRAME_URL","LEGACY_PROD_FRAME_URL","LEGACY_SANDBOX_FRAME_URL","Version","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"],"sources":["Util.ts"],"sourcesContent":["import type { OkHiLocationManagerProps } from './types';\nimport {\n canOpenProtectedAppsSettings,\n isBackgroundLocationPermissionGranted,\n isLocationPermissionGranted,\n OkHiLocation,\n} 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';\nimport { OkHiNativeModule } from '../OkHiNativeModule';\n\n/**\n * @ignore\n */\nexport const generateStartDataPayload = async (\n props: OkHiLocationManagerProps,\n authToken: string,\n applicationConfiguration: AuthApplicationConfig\n): Promise<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 email: props.user.email,\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\n let hasLocationPermission: boolean | undefined;\n try {\n hasLocationPermission = await isLocationPermissionGranted();\n } catch (error) {\n console.log(error);\n }\n\n let hasBackgroundLocationPermission: boolean | undefined;\n try {\n hasBackgroundLocationPermission =\n await isBackgroundLocationPermissionGranted();\n } catch (error) {\n console.log(error);\n }\n\n if (\n typeof hasLocationPermission === 'boolean' &&\n typeof hasBackgroundLocationPermission === 'boolean'\n ) {\n payload.context.permissions = {\n location: hasBackgroundLocationPermission\n ? 'always'\n : hasLocationPermission\n ? 'whenInUse'\n : 'denied',\n };\n }\n\n if (Platform.OS === 'android') {\n const { manufacturer, model } = await OkHiNativeModule.retrieveDeviceInfo();\n payload.context.device = {\n manufacturer,\n model,\n };\n payload.context.permissions = {\n ...payload.context.permissions,\n };\n }\n payload.config = {\n protectedApps:\n Platform.OS === 'android' && (await canOpenProtectedAppsSettings()),\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 addressTypes: {\n home:\n typeof props.config?.addressTypes?.home === 'boolean'\n ? props.config?.addressTypes?.home\n : true,\n work:\n typeof props.config?.addressTypes?.work === 'boolean'\n ? props.config?.addressTypes?.work\n : true,\n },\n };\n return payload;\n};\n\n/**\n * @ignore\n */\nexport const getFrameUrl = (\n applicationConfiguration: AuthApplicationConfig\n): string => {\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\n const LEGACY_DEV_FRAME_URL = 'https://dev-legacy-manager-v5.okhi.io';\n const LEGACY_PROD_FRAME_URL = 'https://legacy-manager-v5.okhi.io';\n const LEGACY_SANDBOX_FRAME_URL = 'https://sandbox-legacy-manager-v5.okhi.io';\n\n if (Platform.OS === 'android' && Platform.Version < 24) {\n if (applicationConfiguration.context.mode === OkHiMode.PROD) {\n return LEGACY_PROD_FRAME_URL;\n }\n if (applicationConfiguration.context.mode === ('dev' as any)) {\n return LEGACY_DEV_FRAME_URL;\n }\n return LEGACY_SANDBOX_FRAME_URL;\n }\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 = `window.startOkHiLocationManager({ receiveMessage: function(data) { window.ReactNativeWebView.postMessage(data) } }, ${JSON.stringify(\n 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"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "name": "okhiWebReactNative",
3
- "version": "1.0.31"
3
+ "version": "1.1.0"
4
4
  }
@@ -1,4 +1,4 @@
1
- import React, { useState, useEffect } from 'react';
1
+ import React, { useState, useEffect, useRef } from 'react';
2
2
  import { Modal, SafeAreaView, Platform } from 'react-native';
3
3
  import { WebView } from 'react-native-webview';
4
4
  import { Spinner } from './Spinner';
@@ -30,6 +30,7 @@ export const OkHiLocationManager = props => {
30
30
  loader,
31
31
  launch
32
32
  } = props;
33
+ const webViewRef = useRef(null);
33
34
  useEffect(() => {
34
35
  if (applicationConfiguration == null && token == null && user.phone) {
35
36
  getApplicationConfiguration().then(config => {
@@ -54,15 +55,15 @@ export const OkHiLocationManager = props => {
54
55
  if (token !== null && applicationConfiguration !== null) {
55
56
  // TODO: handle faliure
56
57
  generateStartDataPayload(props, token, applicationConfiguration).then(startPayload => {
57
- if (Platform.OS === 'android') {
58
+ setStartPaylaod(startPayload);
59
+
60
+ if (Platform.OS === 'android' && Platform.Version > 25) {
58
61
  OkHiNativeModule.setItem('okcollect-launch-payload', JSON.stringify({
59
62
  message: 'select_location',
60
63
  payload: startPayload,
61
64
  url: getFrameUrl(applicationConfiguration)
62
65
  })).catch(console.error);
63
66
  }
64
-
65
- setStartPaylaod(startPayload);
66
67
  }).catch(console.error);
67
68
  }
68
69
  }, [applicationConfiguration, props, token]);
@@ -128,6 +129,12 @@ export const OkHiLocationManager = props => {
128
129
  }));
129
130
  };
130
131
 
132
+ const handleModalRequestClose = () => {
133
+ var _webViewRef$current;
134
+
135
+ (_webViewRef$current = webViewRef.current) === null || _webViewRef$current === void 0 ? void 0 : _webViewRef$current.goBack();
136
+ };
137
+
131
138
  const renderContent = () => {
132
139
  if (token === null || applicationConfiguration == null) {
133
140
  return loader || /*#__PURE__*/React.createElement(Spinner, null);
@@ -156,14 +163,16 @@ export const OkHiLocationManager = props => {
156
163
  onError: handleOnError,
157
164
  onHttpError: handleOnError,
158
165
  geolocationEnabled: true,
159
- allowsBackForwardNavigationGestures: true
166
+ allowsBackForwardNavigationGestures: true,
167
+ ref: webViewRef
160
168
  }));
161
169
  };
162
170
 
163
171
  return /*#__PURE__*/React.createElement(Modal, {
164
172
  animationType: "slide",
165
173
  transparent: false,
166
- visible: launch
174
+ visible: launch,
175
+ onRequestClose: handleModalRequestClose
167
176
  }, launch ? renderContent() : null);
168
177
  };
169
178
  export default OkHiLocationManager;
@@ -1 +1 @@
1
- {"version":3,"names":["React","useState","useEffect","Modal","SafeAreaView","Platform","WebView","Spinner","getFrameUrl","generateJavaScriptStartScript","generateStartDataPayload","parseOkHiLocation","OkHiException","OkHiAuth","start","sv","getApplicationConfiguration","openProtectedAppsSettings","OkHiNativeModule","OkHiLocationManager","props","token","setToken","applicationConfiguration","setApplicationConfiguration","startPayload","setStartPaylaod","defaultStyle","flex","style","user","onSuccess","onCloseRequest","onError","loader","launch","phone","then","config","code","UNAUTHORIZED_CODE","message","UNAUTHORIZED_MESSAGE","auth","anonymousSignInWithPhoneNumber","catch","error","OS","setItem","JSON","stringify","payload","url","console","handleOnMessage","nativeEvent","data","response","parse","UNKNOWN_ERROR_CODE","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","undefined"],"sources":["OkHiLocationManager.tsx"],"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 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 openProtectedAppsSettings,\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 } = props;\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 if (Platform.OS === 'android') {\n OkHiNativeModule.setItem(\n 'okcollect-launch-payload',\n JSON.stringify({\n message: 'select_location',\n payload: startPayload,\n url: getFrameUrl(applicationConfiguration),\n })\n ).catch(console.error);\n }\n setStartPaylaod(startPayload);\n })\n .catch(console.error);\n }\n }, [applicationConfiguration, props, 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 if (response.message === 'request_enable_protected_apps') {\n openProtectedAppsSettings();\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 if (startPayload === null) {\n return loader || <Spinner />;\n }\n\n const { jsAfterLoad, jsBeforeLoad } = generateJavaScriptStartScript({\n message: 'select_location',\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 />\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"],"mappings":"AAAA,OAAOA,KAAP,IAAgBC,QAAhB,EAA0BC,SAA1B,QAA2C,OAA3C;AACA,SAASC,KAAT,EAAgBC,YAAhB,EAA8BC,QAA9B,QAA8C,cAA9C;AACA,SAASC,OAAT,QAA6C,sBAA7C;AACA,SAASC,OAAT,QAAwB,WAAxB;AAMA,SACEC,WADF,EAEEC,6BAFF,EAGEC,wBAHF,EAIEC,iBAJF,QAKO,QALP;AAMA,SAASC,aAAT,QAA8B,yBAA9B;AACA,SAASC,QAAT,QAAyB,oBAAzB;AAEA,SAASC,KAAK,IAAIC,EAAlB,QAA4B,aAA5B;AAEA,SACEC,2BADF,EAEEC,yBAFF,QAGO,WAHP;AAIA,SAASC,gBAAT,QAAiC,qBAAjC;AAEA;AACA;AACA;;AACA,OAAO,MAAMC,mBAAmB,GAAIC,KAAD,IAAqC;EACtE,MAAM,CAACC,KAAD,EAAQC,QAAR,IAAoBrB,QAAQ,CAAgB,IAAhB,CAAlC;EACA,MAAM,CAACsB,wBAAD,EAA2BC,2BAA3B,IACJvB,QAAQ,CAA+B,IAA/B,CADV;EAEA,MAAM,CAACwB,YAAD,EAAeC,eAAf,IACJzB,QAAQ,CAA6C,IAA7C,CADV;EAEA,MAAM0B,YAAY,GAAG;IAAEC,IAAI,EAAE;EAAR,CAArB;EACA,MAAMC,KAAK,GAAGT,KAAK,CAACS,KAAN,GACV,EAAE,GAAGT,KAAK,CAACS,KAAX;IAAkB,GAAGF;EAArB,CADU,GAEVA,YAFJ;EAIA,MAAM;IAAEG,IAAF;IAAQC,SAAR;IAAmBC,cAAnB;IAAmCC,OAAnC;IAA4CC,MAA5C;IAAoDC;EAApD,IAA+Df,KAArE;EACAlB,SAAS,CAAC,MAAM;IACd,IAAIqB,wBAAwB,IAAI,IAA5B,IAAoCF,KAAK,IAAI,IAA7C,IAAqDS,IAAI,CAACM,KAA9D,EAAqE;MACnEpB,2BAA2B,GACxBqB,IADH,CACSC,MAAD,IAAY;QAChB,IAAI,CAACA,MAAD,IAAWH,MAAf,EAAuB;UACrBF,OAAO,CACL,IAAIrB,aAAJ,CAAkB;YAChB2B,IAAI,EAAE3B,aAAa,CAAC4B,iBADJ;YAEhBC,OAAO,EAAE7B,aAAa,CAAC8B;UAFP,CAAlB,CADK,CAAP;QAMD,CAPD,MAOO,IAAIJ,MAAJ,EAAY;UACjBd,2BAA2B,CAACc,MAAD,CAA3B;UACA,MAAMK,IAAI,GAAG,IAAI9B,QAAJ,EAAb;UACA8B,IAAI,CACDC,8BADH,CACkCd,IAAI,CAACM,KADvC,EAC8C,CAAC,QAAD,CAD9C,EAC0DE,MAD1D,EAEGD,IAFH,CAEQf,QAFR,EAGGuB,KAHH,CAGSZ,OAHT;QAID;MACF,CAjBH,EAkBGY,KAlBH,CAkBUC,KAAD,IAAW;QAChB,IAAIX,MAAJ,EAAY;UACVF,OAAO,CAACa,KAAD,CAAP;QACD;MACF,CAtBH;IAuBD;EACF,CA1BQ,EA0BN,CAACb,OAAD,EAAUH,IAAI,CAACM,KAAf,EAAsBD,MAAtB,EAA8BZ,wBAA9B,EAAwDF,KAAxD,CA1BM,CAAT;EA4BAnB,SAAS,CAAC,MAAM;IACd,IAAImB,KAAK,KAAK,IAAV,IAAkBE,wBAAwB,KAAK,IAAnD,EAAyD;MACvD;MACAb,wBAAwB,CAACU,KAAD,EAAQC,KAAR,EAAeE,wBAAf,CAAxB,CACGc,IADH,CACSZ,YAAD,IAAkB;QACtB,IAAIpB,QAAQ,CAAC0C,EAAT,KAAgB,SAApB,EAA+B;UAC7B7B,gBAAgB,CAAC8B,OAAjB,CACE,0BADF,EAEEC,IAAI,CAACC,SAAL,CAAe;YACbT,OAAO,EAAE,iBADI;YAEbU,OAAO,EAAE1B,YAFI;YAGb2B,GAAG,EAAE5C,WAAW,CAACe,wBAAD;UAHH,CAAf,CAFF,EAOEsB,KAPF,CAOQQ,OAAO,CAACP,KAPhB;QAQD;;QACDpB,eAAe,CAACD,YAAD,CAAf;MACD,CAbH,EAcGoB,KAdH,CAcSQ,OAAO,CAACP,KAdjB;IAeD;EACF,CAnBQ,EAmBN,CAACvB,wBAAD,EAA2BH,KAA3B,EAAkCC,KAAlC,CAnBM,CAAT;;EAqBA,MAAMiC,eAAe,GAAG,QAAoD;IAAA,IAAnD;MAAEC,WAAW,EAAE;QAAEC;MAAF;IAAf,CAAmD;;IAC1E,IAAI;MACF,MAAMC,QAAqC,GAAGR,IAAI,CAACS,KAAL,CAAWF,IAAX,CAA9C;;MACA,IAAIC,QAAQ,CAAChB,OAAT,KAAqB,YAAzB,EAAuC;QACrCR,OAAO,CACL,IAAIrB,aAAJ,CAAkB;UAChB2B,IAAI,EAAE3B,aAAa,CAAC+C,kBADJ;UAEhBlB,OAAO,EAAEgB,QAAQ,CAACN,OAAT,CAAiBS,QAAjB;QAFO,CAAlB,CADK,CAAP;MAMD,CAPD,MAOO,IAAIH,QAAQ,CAAChB,OAAT,KAAqB,UAAzB,EAAqC;QAC1CT,cAAc;MACf,CAFM,MAEA,IAAIyB,QAAQ,CAAChB,OAAT,KAAqB,+BAAzB,EAA0D;QAC/DxB,yBAAyB;MAC1B,CAFM,MAEA;QACLc,SAAS,CAAC,EACR,GAAG0B,QAAQ,CAACN,OADJ;UAERU,QAAQ,EAAElD,iBAAiB,CAAC8C,QAAQ,CAACN,OAAT,CAAiBU,QAAlB,CAFnB;UAGRC,iBAAiB,EAAE,UAAUxB,MAAV,EAA+C;YAChE,MAAMyB,WAAW,GAAG,EAAE,GAAG,KAAKjC;YAAV,CAApB;YACA,MAAM+B,QAAQ,GAAG,EAAE,GAAG,KAAKA;YAAV,CAAjB;YACA,OAAO,IAAIG,OAAJ,CAAY,CAACC,OAAD,EAAUC,MAAV,KAAqB;cACtC,IAAI,CAACL,QAAQ,CAACM,EAAd,EAAkB;gBAChBD,MAAM,CACJ,IAAItD,aAAJ,CAAkB;kBAChB2B,IAAI,EAAE3B,aAAa,CAACwD,gBADJ;kBAEhB3B,OAAO,EAAE;gBAFO,CAAlB,CADI,CAAN;cAMD,CAPD,MAOO;gBACL1B,EAAE,CACAgD,WAAW,CAAC3B,KADZ,EAEAyB,QAAQ,CAACM,EAFT,EAGAN,QAAQ,CAACQ,GAHT,EAIAR,QAAQ,CAACS,GAJT,EAKAhC,MALA,CAAF,CAOGD,IAPH,CAOQ4B,OAPR,EAQGpB,KARH,CAQSqB,MART;cASD;YACF,CAnBM,CAAP;UAoBD;QA1BO,CAAD,CAAT;MA4BD;IACF,CA3CD,CA2CE,OAAOpB,KAAP,EAAc;MACd,IAAIyB,YAAY,GAAG,sBAAnB;;MACA,IAAIzB,KAAK,YAAY0B,KAArB,EAA4B;QAC1BD,YAAY,GAAGzB,KAAK,CAACL,OAArB;MACD;;MACDR,OAAO,CACL,IAAIrB,aAAJ,CAAkB;QAChB2B,IAAI,EAAE3B,aAAa,CAAC+C,kBADJ;QAEhBlB,OAAO,EAAE8B;MAFO,CAAlB,CADK,CAAP;IAMD;EACF,CAxDD;;EA0DA,MAAME,aAAa,GAAG,MAAM;IAC1BxC,OAAO,CACL,IAAIrB,aAAJ,CAAkB;MAChB2B,IAAI,EAAE3B,aAAa,CAAC8D,kBADJ;MAEhBjC,OAAO,EAAE7B,aAAa,CAAC+D;IAFP,CAAlB,CADK,CAAP;EAMD,CAPD;;EASA,MAAMC,aAAa,GAAG,MAAM;IAC1B,IAAIvD,KAAK,KAAK,IAAV,IAAkBE,wBAAwB,IAAI,IAAlD,EAAwD;MACtD,OAAOW,MAAM,iBAAI,oBAAC,OAAD,OAAjB;IACD;;IAED,IAAIT,YAAY,KAAK,IAArB,EAA2B;MACzB,OAAOS,MAAM,iBAAI,oBAAC,OAAD,OAAjB;IACD;;IAED,MAAM;MAAE2C,WAAF;MAAeC;IAAf,IAAgCrE,6BAA6B,CAAC;MAClEgC,OAAO,EAAE,iBADyD;MAElEU,OAAO,EAAE1B;IAFyD,CAAD,CAAnE;IAKA,oBACE,oBAAC,YAAD;MAAc,KAAK,EAAEI;IAArB,gBACE,oBAAC,OAAD;MACE,MAAM,EAAE;QAAEkD,GAAG,EAAEvE,WAAW,CAACe,wBAAD;MAAlB,CADV;MAEE,qCAAqC,EACnClB,QAAQ,CAAC0C,EAAT,KAAgB,KAAhB,GAAwB+B,YAAxB,GAAuCE,SAH3C;MAKE,kBAAkB,EAAE3E,QAAQ,CAAC0C,EAAT,KAAgB,KAAhB,GAAwBiC,SAAxB,GAAoCH,WAL1D;MAME,SAAS,EAAEvB,eANb;MAOE,OAAO,EAAEmB,aAPX;MAQE,WAAW,EAAEA,aARf;MASE,kBAAkB,EAAE,IATtB;MAUE,mCAAmC,EAAE;IAVvC,EADF,CADF;EAgBD,CA9BD;;EAgCA,oBACE,oBAAC,KAAD;IAAO,aAAa,EAAC,OAArB;IAA6B,WAAW,EAAE,KAA1C;IAAiD,OAAO,EAAEtC;EAA1D,GACGA,MAAM,GAAGyC,aAAa,EAAhB,GAAqB,IAD9B,CADF;AAKD,CArKM;AAuKP,eAAezD,mBAAf"}
1
+ {"version":3,"names":["React","useState","useEffect","useRef","Modal","SafeAreaView","Platform","WebView","Spinner","getFrameUrl","generateJavaScriptStartScript","generateStartDataPayload","parseOkHiLocation","OkHiException","OkHiAuth","start","sv","getApplicationConfiguration","openProtectedAppsSettings","OkHiNativeModule","OkHiLocationManager","props","token","setToken","applicationConfiguration","setApplicationConfiguration","startPayload","setStartPaylaod","defaultStyle","flex","style","user","onSuccess","onCloseRequest","onError","loader","launch","webViewRef","phone","then","config","code","UNAUTHORIZED_CODE","message","UNAUTHORIZED_MESSAGE","auth","anonymousSignInWithPhoneNumber","catch","error","OS","Version","setItem","JSON","stringify","payload","url","console","handleOnMessage","nativeEvent","data","response","parse","UNKNOWN_ERROR_CODE","toString","location","startVerification","createdUser","Promise","resolve","reject","id","BAD_REQUEST_CODE","lat","lon","errorMessage","Error","handleOnError","NETWORK_ERROR_CODE","NETWORK_ERROR_MESSAGE","handleModalRequestClose","current","goBack","renderContent","jsAfterLoad","jsBeforeLoad","uri","undefined"],"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 openProtectedAppsSettings,\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 } = props;\n const webViewRef = useRef<WebView | null>(null);\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 setStartPaylaod(startPayload);\n if (Platform.OS === 'android' && Platform.Version > 25) {\n OkHiNativeModule.setItem(\n 'okcollect-launch-payload',\n JSON.stringify({\n message: 'select_location',\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 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 if (response.message === 'request_enable_protected_apps') {\n openProtectedAppsSettings();\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 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: 'select_location',\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={launch}\n onRequestClose={handleModalRequestClose}\n >\n {launch ? renderContent() : null}\n </Modal>\n );\n};\n\nexport default OkHiLocationManager;\n"],"mappings":"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"}
@@ -101,6 +101,21 @@ export const getFrameUrl = applicationConfiguration => {
101
101
  const DEV_FRAME_URL = 'https://dev-manager-v5.okhi.io';
102
102
  const PROD_FRAME_URL = 'https://manager-v5.okhi.io';
103
103
  const SANDBOX_FRAME_URL = 'https://sandbox-manager-v5.okhi.io';
104
+ const LEGACY_DEV_FRAME_URL = 'https://dev-legacy-manager-v5.okhi.io';
105
+ const LEGACY_PROD_FRAME_URL = 'https://legacy-manager-v5.okhi.io';
106
+ const LEGACY_SANDBOX_FRAME_URL = 'https://sandbox-legacy-manager-v5.okhi.io';
107
+
108
+ if (Platform.OS === 'android' && Platform.Version < 24) {
109
+ if (applicationConfiguration.context.mode === OkHiMode.PROD) {
110
+ return LEGACY_PROD_FRAME_URL;
111
+ }
112
+
113
+ if (applicationConfiguration.context.mode === 'dev') {
114
+ return LEGACY_DEV_FRAME_URL;
115
+ }
116
+
117
+ return LEGACY_SANDBOX_FRAME_URL;
118
+ }
104
119
 
105
120
  if (applicationConfiguration.context.mode === OkHiMode.PROD) {
106
121
  return PROD_FRAME_URL;
@@ -127,11 +142,7 @@ export const generateJavaScriptStartScript = startPayload => {
127
142
  }
128
143
  true;
129
144
  `;
130
- const jsAfterLoad = `
131
- window.startOkHiLocationManager({
132
- receiveMessage: function(data) { window.ReactNativeWebView.postMessage(data) } },
133
- ${JSON.stringify(startPayload)})
134
- `;
145
+ const jsAfterLoad = `window.startOkHiLocationManager({ receiveMessage: function(data) { window.ReactNativeWebView.postMessage(data) } }, ${JSON.stringify(startPayload)})`;
135
146
  return {
136
147
  jsBeforeLoad,
137
148
  jsAfterLoad
@@ -1 +1 @@
1
- {"version":3,"names":["canOpenProtectedAppsSettings","isBackgroundLocationPermissionGranted","isLocationPermissionGranted","OkHiMode","manifest","Platform","OkHiNativeModule","generateStartDataPayload","props","authToken","applicationConfiguration","payload","style","theme","undefined","base","color","colors","primary","logo","appBar","name","app","user","phone","firstName","lastName","email","auth","context","container","version","developer","library","platform","hasLocationPermission","error","console","log","hasBackgroundLocationPermission","permissions","location","OS","manufacturer","model","retrieveDeviceInfo","device","config","protectedApps","streetView","backgroundColor","visible","addressTypes","home","work","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"],"sources":["Util.ts"],"sourcesContent":["import type { OkHiLocationManagerProps } from './types';\nimport {\n canOpenProtectedAppsSettings,\n isBackgroundLocationPermissionGranted,\n isLocationPermissionGranted,\n OkHiLocation,\n} 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';\nimport { OkHiNativeModule } from '../OkHiNativeModule';\n\n/**\n * @ignore\n */\nexport const generateStartDataPayload = async (\n props: OkHiLocationManagerProps,\n authToken: string,\n applicationConfiguration: AuthApplicationConfig\n): Promise<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 email: props.user.email,\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\n let hasLocationPermission: boolean | undefined;\n try {\n hasLocationPermission = await isLocationPermissionGranted();\n } catch (error) {\n console.log(error);\n }\n\n let hasBackgroundLocationPermission: boolean | undefined;\n try {\n hasBackgroundLocationPermission =\n await isBackgroundLocationPermissionGranted();\n } catch (error) {\n console.log(error);\n }\n\n if (\n typeof hasLocationPermission === 'boolean' &&\n typeof hasBackgroundLocationPermission === 'boolean'\n ) {\n payload.context.permissions = {\n location: hasBackgroundLocationPermission\n ? 'always'\n : hasLocationPermission\n ? 'whenInUse'\n : 'denied',\n };\n }\n\n if (Platform.OS === 'android') {\n const { manufacturer, model } = await OkHiNativeModule.retrieveDeviceInfo();\n payload.context.device = {\n manufacturer,\n model,\n };\n payload.context.permissions = {\n ...payload.context.permissions,\n };\n }\n payload.config = {\n protectedApps:\n Platform.OS === 'android' && (await canOpenProtectedAppsSettings()),\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 addressTypes: {\n home:\n typeof props.config?.addressTypes?.home === 'boolean'\n ? props.config?.addressTypes?.home\n : true,\n work:\n typeof props.config?.addressTypes?.work === 'boolean'\n ? props.config?.addressTypes?.work\n : true,\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"],"mappings":"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"}
1
+ {"version":3,"names":["canOpenProtectedAppsSettings","isBackgroundLocationPermissionGranted","isLocationPermissionGranted","OkHiMode","manifest","Platform","OkHiNativeModule","generateStartDataPayload","props","authToken","applicationConfiguration","payload","style","theme","undefined","base","color","colors","primary","logo","appBar","name","app","user","phone","firstName","lastName","email","auth","context","container","version","developer","library","platform","hasLocationPermission","error","console","log","hasBackgroundLocationPermission","permissions","location","OS","manufacturer","model","retrieveDeviceInfo","device","config","protectedApps","streetView","backgroundColor","visible","addressTypes","home","work","getFrameUrl","DEV_FRAME_URL","PROD_FRAME_URL","SANDBOX_FRAME_URL","LEGACY_DEV_FRAME_URL","LEGACY_PROD_FRAME_URL","LEGACY_SANDBOX_FRAME_URL","Version","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"],"sources":["Util.ts"],"sourcesContent":["import type { OkHiLocationManagerProps } from './types';\nimport {\n canOpenProtectedAppsSettings,\n isBackgroundLocationPermissionGranted,\n isLocationPermissionGranted,\n OkHiLocation,\n} 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';\nimport { OkHiNativeModule } from '../OkHiNativeModule';\n\n/**\n * @ignore\n */\nexport const generateStartDataPayload = async (\n props: OkHiLocationManagerProps,\n authToken: string,\n applicationConfiguration: AuthApplicationConfig\n): Promise<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 email: props.user.email,\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\n let hasLocationPermission: boolean | undefined;\n try {\n hasLocationPermission = await isLocationPermissionGranted();\n } catch (error) {\n console.log(error);\n }\n\n let hasBackgroundLocationPermission: boolean | undefined;\n try {\n hasBackgroundLocationPermission =\n await isBackgroundLocationPermissionGranted();\n } catch (error) {\n console.log(error);\n }\n\n if (\n typeof hasLocationPermission === 'boolean' &&\n typeof hasBackgroundLocationPermission === 'boolean'\n ) {\n payload.context.permissions = {\n location: hasBackgroundLocationPermission\n ? 'always'\n : hasLocationPermission\n ? 'whenInUse'\n : 'denied',\n };\n }\n\n if (Platform.OS === 'android') {\n const { manufacturer, model } = await OkHiNativeModule.retrieveDeviceInfo();\n payload.context.device = {\n manufacturer,\n model,\n };\n payload.context.permissions = {\n ...payload.context.permissions,\n };\n }\n payload.config = {\n protectedApps:\n Platform.OS === 'android' && (await canOpenProtectedAppsSettings()),\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 addressTypes: {\n home:\n typeof props.config?.addressTypes?.home === 'boolean'\n ? props.config?.addressTypes?.home\n : true,\n work:\n typeof props.config?.addressTypes?.work === 'boolean'\n ? props.config?.addressTypes?.work\n : true,\n },\n };\n return payload;\n};\n\n/**\n * @ignore\n */\nexport const getFrameUrl = (\n applicationConfiguration: AuthApplicationConfig\n): string => {\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\n const LEGACY_DEV_FRAME_URL = 'https://dev-legacy-manager-v5.okhi.io';\n const LEGACY_PROD_FRAME_URL = 'https://legacy-manager-v5.okhi.io';\n const LEGACY_SANDBOX_FRAME_URL = 'https://sandbox-legacy-manager-v5.okhi.io';\n\n if (Platform.OS === 'android' && Platform.Version < 24) {\n if (applicationConfiguration.context.mode === OkHiMode.PROD) {\n return LEGACY_PROD_FRAME_URL;\n }\n if (applicationConfiguration.context.mode === ('dev' as any)) {\n return LEGACY_DEV_FRAME_URL;\n }\n return LEGACY_SANDBOX_FRAME_URL;\n }\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 = `window.startOkHiLocationManager({ receiveMessage: function(data) { window.ReactNativeWebView.postMessage(data) } }, ${JSON.stringify(\n 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"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "name": "okhiWebReactNative",
3
- "version": "1.0.31"
3
+ "version": "1.1.0"
4
4
  }
@@ -9,7 +9,7 @@ export declare const generateStartDataPayload: (props: OkHiLocationManagerProps,
9
9
  /**
10
10
  * @ignore
11
11
  */
12
- export declare const getFrameUrl: (applicationConfiguration: AuthApplicationConfig) => "https://manager-v5.okhi.io" | "https://dev-manager-v5.okhi.io" | "https://sandbox-manager-v5.okhi.io";
12
+ export declare const getFrameUrl: (applicationConfiguration: AuthApplicationConfig) => string;
13
13
  /**
14
14
  * @ignore
15
15
  */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-okhi",
3
- "version": "1.0.31",
3
+ "version": "1.1.0",
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",
@@ -1,4 +1,4 @@
1
- import React, { useState, useEffect } from 'react';
1
+ import React, { useState, useEffect, useRef } from 'react';
2
2
  import { Modal, SafeAreaView, Platform } from 'react-native';
3
3
  import { WebView, WebViewMessageEvent } from 'react-native-webview';
4
4
  import { Spinner } from './Spinner';
@@ -39,6 +39,8 @@ export const OkHiLocationManager = (props: OkHiLocationManagerProps) => {
39
39
  : defaultStyle;
40
40
 
41
41
  const { user, onSuccess, onCloseRequest, onError, loader, launch } = props;
42
+ const webViewRef = useRef<WebView | null>(null);
43
+
42
44
  useEffect(() => {
43
45
  if (applicationConfiguration == null && token == null && user.phone) {
44
46
  getApplicationConfiguration()
@@ -72,7 +74,8 @@ export const OkHiLocationManager = (props: OkHiLocationManagerProps) => {
72
74
  // TODO: handle faliure
73
75
  generateStartDataPayload(props, token, applicationConfiguration)
74
76
  .then((startPayload) => {
75
- if (Platform.OS === 'android') {
77
+ setStartPaylaod(startPayload);
78
+ if (Platform.OS === 'android' && Platform.Version > 25) {
76
79
  OkHiNativeModule.setItem(
77
80
  'okcollect-launch-payload',
78
81
  JSON.stringify({
@@ -82,7 +85,6 @@ export const OkHiLocationManager = (props: OkHiLocationManagerProps) => {
82
85
  })
83
86
  ).catch(console.error);
84
87
  }
85
- setStartPaylaod(startPayload);
86
88
  })
87
89
  .catch(console.error);
88
90
  }
@@ -155,6 +157,10 @@ export const OkHiLocationManager = (props: OkHiLocationManagerProps) => {
155
157
  );
156
158
  };
157
159
 
160
+ const handleModalRequestClose = () => {
161
+ webViewRef.current?.goBack();
162
+ };
163
+
158
164
  const renderContent = () => {
159
165
  if (token === null || applicationConfiguration == null) {
160
166
  return loader || <Spinner />;
@@ -182,13 +188,19 @@ export const OkHiLocationManager = (props: OkHiLocationManagerProps) => {
182
188
  onHttpError={handleOnError}
183
189
  geolocationEnabled={true}
184
190
  allowsBackForwardNavigationGestures={true}
191
+ ref={webViewRef}
185
192
  />
186
193
  </SafeAreaView>
187
194
  );
188
195
  };
189
196
 
190
197
  return (
191
- <Modal animationType="slide" transparent={false} visible={launch}>
198
+ <Modal
199
+ animationType="slide"
200
+ transparent={false}
201
+ visible={launch}
202
+ onRequestClose={handleModalRequestClose}
203
+ >
192
204
  {launch ? renderContent() : null}
193
205
  </Modal>
194
206
  );
@@ -127,10 +127,24 @@ export const generateStartDataPayload = async (
127
127
  */
128
128
  export const getFrameUrl = (
129
129
  applicationConfiguration: AuthApplicationConfig
130
- ) => {
130
+ ): string => {
131
131
  const DEV_FRAME_URL = 'https://dev-manager-v5.okhi.io';
132
132
  const PROD_FRAME_URL = 'https://manager-v5.okhi.io';
133
133
  const SANDBOX_FRAME_URL = 'https://sandbox-manager-v5.okhi.io';
134
+
135
+ const LEGACY_DEV_FRAME_URL = 'https://dev-legacy-manager-v5.okhi.io';
136
+ const LEGACY_PROD_FRAME_URL = 'https://legacy-manager-v5.okhi.io';
137
+ const LEGACY_SANDBOX_FRAME_URL = 'https://sandbox-legacy-manager-v5.okhi.io';
138
+
139
+ if (Platform.OS === 'android' && Platform.Version < 24) {
140
+ if (applicationConfiguration.context.mode === OkHiMode.PROD) {
141
+ return LEGACY_PROD_FRAME_URL;
142
+ }
143
+ if (applicationConfiguration.context.mode === ('dev' as any)) {
144
+ return LEGACY_DEV_FRAME_URL;
145
+ }
146
+ return LEGACY_SANDBOX_FRAME_URL;
147
+ }
134
148
  if (applicationConfiguration.context.mode === OkHiMode.PROD) {
135
149
  return PROD_FRAME_URL;
136
150
  }
@@ -157,11 +171,9 @@ export const generateJavaScriptStartScript = (startPayload: {
157
171
  }
158
172
  true;
159
173
  `;
160
- const jsAfterLoad = `
161
- window.startOkHiLocationManager({
162
- receiveMessage: function(data) { window.ReactNativeWebView.postMessage(data) } },
163
- ${JSON.stringify(startPayload)})
164
- `;
174
+ const jsAfterLoad = `window.startOkHiLocationManager({ receiveMessage: function(data) { window.ReactNativeWebView.postMessage(data) } }, ${JSON.stringify(
175
+ startPayload
176
+ )})`;
165
177
  return { jsBeforeLoad, jsAfterLoad };
166
178
  };
167
179
 
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "name": "okhiWebReactNative",
3
- "version": "1.0.31"
3
+ "version": "1.1.0"
4
4
  }