react-native-okhi 1.2.4 → 1.2.5-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/android/build.gradle +1 -1
- package/android/src/main/java/com/reactnativeokhi/OkhiModule.java +2 -0
- package/ios/Okhi.m +4 -0
- package/ios/Okhi.swift +29 -0
- package/lib/commonjs/OkCollect/OkHiLocationManager.js +100 -7
- package/lib/commonjs/OkCollect/OkHiLocationManager.js.map +1 -1
- package/lib/commonjs/OkCollect/Util.js +29 -25
- package/lib/commonjs/OkCollect/Util.js.map +1 -1
- package/lib/commonjs/OkCollect/types.js.map +1 -1
- package/lib/commonjs/OkCore/index.js +1 -0
- package/lib/commonjs/OkCore/index.js.map +1 -1
- package/lib/commonjs/OkCore/types.js +4 -0
- package/lib/commonjs/OkCore/types.js.map +1 -1
- package/lib/commonjs/OkHiNativeModule/index.js.map +1 -1
- package/lib/module/OkCollect/OkHiLocationManager.js +101 -8
- package/lib/module/OkCollect/OkHiLocationManager.js.map +1 -1
- package/lib/module/OkCollect/Util.js +29 -25
- package/lib/module/OkCollect/Util.js.map +1 -1
- package/lib/module/OkCollect/types.js.map +1 -1
- package/lib/module/OkCore/index.js +1 -0
- package/lib/module/OkCore/index.js.map +1 -1
- package/lib/module/OkCore/types.js +1 -1
- package/lib/module/OkCore/types.js.map +1 -1
- package/lib/module/OkHiNativeModule/index.js.map +1 -1
- package/lib/typescript/OkCollect/types.d.ts +3 -5
- package/lib/typescript/OkCore/types.d.ts +2 -1
- package/lib/typescript/OkHiNativeModule/index.d.ts +3 -0
- package/package.json +1 -1
- package/react-native-okhi.podspec +1 -1
- package/src/OkCollect/OkHiLocationManager.tsx +127 -5
- package/src/OkCollect/Util.ts +37 -29
- package/src/OkCollect/types.ts +4 -2
- package/src/OkCore/index.ts +1 -0
- package/src/OkCore/types.ts +3 -1
- package/src/OkHiNativeModule/index.ts +7 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNative","require","LINKING_ERROR","Platform","select","ios","default","OkHiNativeModule","NativeModules","Okhi","Proxy","get","Error","exports","OkHiNativeEvents","NativeEventEmitter","addListener"],"sources":["index.ts"],"sourcesContent":["import { NativeModules, NativeEventEmitter, Platform } from 'react-native';\nimport type { OkVerifyStartConfiguration } from '../OkVerify/types';\n\nconst LINKING_ERROR =\n `The package 'react-native-okhi' doesn't seem to be linked. Make sure: \\n\\n` +\n Platform.select({ ios: \"- You have run 'pod install'\\n\", default: '' }) +\n '- You rebuilt the app after installing the package\\n' +\n '- You are not using Expo managed workflow\\n';\n\ntype OkHiNativeModuleType = {\n isLocationServicesEnabled(): Promise<boolean>;\n isLocationPermissionGranted(): Promise<boolean>;\n isBackgroundLocationPermissionGranted(): Promise<boolean>;\n requestLocationPermission(): Promise<boolean>;\n requestBackgroundLocationPermission(): Promise<boolean>;\n requestEnableLocationServices(): Promise<boolean>;\n isGooglePlayServicesAvailable(): Promise<boolean>;\n requestEnableGooglePlayServices(): Promise<boolean>;\n getSystemVersion(): Promise<number | string>;\n getAuthToken(branchId: string, clientKey: string): Promise<string>;\n initialize(configuration: string): Promise<void>;\n startAddressVerification(\n phoneNumber: string,\n locationId: string,\n lat: Number,\n lon: Number,\n configuration?: OkVerifyStartConfiguration,\n fcmPushNotificationToken?: string\n ): Promise<string>;\n stopAddressVerification(\n phoneNumber: string,\n locationId: string\n ): Promise<string>;\n startForegroundService(): Promise<boolean>;\n stopForegroundService(): Promise<boolean>;\n isForegroundServiceRunning(): Promise<boolean>;\n initializeIOS(\n branchId: string,\n clientKey: string,\n environment: string\n ): Promise<boolean>;\n openAppSettings(): Promise<void>;\n retriveLocationPermissionStatus(): Promise<string>;\n requestTrackingAuthorization(): Promise<string | null>;\n canOpenProtectedAppsSettings(): Promise<boolean>;\n openProtectedAppsSettings(): Promise<boolean>;\n retrieveDeviceInfo(): Promise<{
|
|
1
|
+
{"version":3,"names":["_reactNative","require","LINKING_ERROR","Platform","select","ios","default","OkHiNativeModule","NativeModules","Okhi","Proxy","get","Error","exports","OkHiNativeEvents","NativeEventEmitter","addListener"],"sources":["index.ts"],"sourcesContent":["import { NativeModules, NativeEventEmitter, Platform } from 'react-native';\nimport type { OkVerifyStartConfiguration } from '../OkVerify/types';\n\nconst LINKING_ERROR =\n `The package 'react-native-okhi' doesn't seem to be linked. Make sure: \\n\\n` +\n Platform.select({ ios: \"- You have run 'pod install'\\n\", default: '' }) +\n '- You rebuilt the app after installing the package\\n' +\n '- You are not using Expo managed workflow\\n';\n\ntype OkHiNativeModuleType = {\n isLocationServicesEnabled(): Promise<boolean>;\n isLocationPermissionGranted(): Promise<boolean>;\n isBackgroundLocationPermissionGranted(): Promise<boolean>;\n requestLocationPermission(): Promise<boolean>;\n requestBackgroundLocationPermission(): Promise<boolean>;\n requestEnableLocationServices(): Promise<boolean>;\n isGooglePlayServicesAvailable(): Promise<boolean>;\n requestEnableGooglePlayServices(): Promise<boolean>;\n getSystemVersion(): Promise<number | string>;\n getAuthToken(branchId: string, clientKey: string): Promise<string>;\n initialize(configuration: string): Promise<void>;\n startAddressVerification(\n phoneNumber: string,\n locationId: string,\n lat: Number,\n lon: Number,\n configuration?: OkVerifyStartConfiguration,\n fcmPushNotificationToken?: string\n ): Promise<string>;\n stopAddressVerification(\n phoneNumber: string,\n locationId: string\n ): Promise<string>;\n startForegroundService(): Promise<boolean>;\n stopForegroundService(): Promise<boolean>;\n isForegroundServiceRunning(): Promise<boolean>;\n initializeIOS(\n branchId: string,\n clientKey: string,\n environment: string\n ): Promise<boolean>;\n openAppSettings(): Promise<void>;\n retriveLocationPermissionStatus(): Promise<string>;\n requestTrackingAuthorization(): Promise<string | null>;\n canOpenProtectedAppsSettings(): Promise<boolean>;\n openProtectedAppsSettings(): Promise<boolean>;\n retrieveDeviceInfo(): Promise<{\n manufacturer: string;\n model: string;\n osVersion: string;\n platform: 'android' | 'ios';\n }>;\n setItem(key: string, value: string): Promise<boolean>;\n onNewToken(fcmPushNotificationToken: string): Promise<boolean>;\n onMessageReceived(): Promise<boolean>;\n isNotificationPermissionGranted(): Promise<boolean>;\n requestNotificationPermission(): Promise<boolean>;\n fetchCurrentLocation(): Promise<null | {\n lat: number;\n lng: number;\n accuracy: number;\n }>;\n fetchIOSLocationPermissionStatus(): Promise<\n | 'notDetermined'\n | 'restricted'\n | 'denied'\n | 'authorizedAlways'\n | 'authorizedWhenInUse'\n | 'authorized'\n | 'unknown'\n >;\n onStart(): Promise<boolean>;\n};\n\nexport const OkHiNativeModule: OkHiNativeModuleType = NativeModules.Okhi\n ? NativeModules.Okhi\n : new Proxy(\n {},\n {\n get() {\n throw new Error(LINKING_ERROR);\n },\n }\n );\n\nexport const OkHiNativeEvents = new NativeEventEmitter(NativeModules.Okhi);\n\nOkHiNativeEvents.addListener('onLocationPermissionStatusUpdate', () => null);\n"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAGA,MAAMC,aAAa,GAChB,4EAA2E,GAC5EC,qBAAQ,CAACC,MAAM,CAAC;EAAEC,GAAG,EAAE,gCAAgC;EAAEC,OAAO,EAAE;AAAG,CAAC,CAAC,GACvE,sDAAsD,GACtD,6CAA6C;AAmExC,MAAMC,gBAAsC,GAAGC,0BAAa,CAACC,IAAI,GACpED,0BAAa,CAACC,IAAI,GAClB,IAAIC,KAAK,CACP,CAAC,CAAC,EACF;EACEC,GAAGA,CAAA,EAAG;IACJ,MAAM,IAAIC,KAAK,CAACV,aAAa,CAAC;EAChC;AACF,CACF,CAAC;AAACW,OAAA,CAAAN,gBAAA,GAAAA,gBAAA;AAEC,MAAMO,gBAAgB,GAAG,IAAIC,+BAAkB,CAACP,0BAAa,CAACC,IAAI,CAAC;AAACI,OAAA,CAAAC,gBAAA,GAAAA,gBAAA;AAE3EA,gBAAgB,CAACE,WAAW,CAAC,kCAAkC,EAAE,MAAM,IAAI,CAAC"}
|
|
@@ -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, openProtectedAppsSettings } from '../OkCore';
|
|
9
|
+
import { getApplicationConfiguration, isBackgroundLocationPermissionGranted, isLocationPermissionGranted, isLocationServicesEnabled, openAppSettings, openProtectedAppsSettings, requestBackgroundLocationPermission, requestLocationPermission } from '../OkCore';
|
|
10
10
|
import { OkHiNativeModule } from '../OkHiNativeModule';
|
|
11
11
|
|
|
12
12
|
/**
|
|
@@ -29,10 +29,12 @@ export const OkHiLocationManager = props => {
|
|
|
29
29
|
onCloseRequest,
|
|
30
30
|
onError,
|
|
31
31
|
loader,
|
|
32
|
-
launch
|
|
32
|
+
launch,
|
|
33
|
+
config
|
|
33
34
|
} = props;
|
|
34
35
|
const webViewRef = useRef(null);
|
|
35
36
|
const startMessage = props.mode === 'create' ? 'start_app' : 'select_location';
|
|
37
|
+
const [ready, setReady] = useState(false);
|
|
36
38
|
useEffect(() => {
|
|
37
39
|
if (applicationConfiguration == null && token == null && user.phone) {
|
|
38
40
|
getApplicationConfiguration().then(config => {
|
|
@@ -68,24 +70,111 @@ export const OkHiLocationManager = props => {
|
|
|
68
70
|
}).catch(console.error);
|
|
69
71
|
}
|
|
70
72
|
}, [applicationConfiguration, props, token]);
|
|
71
|
-
|
|
73
|
+
useEffect(() => {
|
|
74
|
+
if (launch) {
|
|
75
|
+
if (typeof (config === null || config === void 0 ? void 0 : config.permissionsOnboarding) === 'boolean' && !config.permissionsOnboarding) {
|
|
76
|
+
isBackgroundLocationPermissionGranted().then(result => {
|
|
77
|
+
if (!result) {
|
|
78
|
+
onError(new OkHiException({
|
|
79
|
+
code: OkHiException.PERMISSION_DENIED_CODE,
|
|
80
|
+
message: 'Always location permission must be granted to launch OkCollect'
|
|
81
|
+
}));
|
|
82
|
+
} else {
|
|
83
|
+
setReady(true);
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
} else {
|
|
87
|
+
setReady(true);
|
|
88
|
+
}
|
|
89
|
+
} else {
|
|
90
|
+
setReady(false);
|
|
91
|
+
}
|
|
92
|
+
}, [launch, config === null || config === void 0 ? void 0 : config.permissionsOnboarding]);
|
|
93
|
+
const runWebViewCallback = value => {
|
|
94
|
+
if (webViewRef.current) {
|
|
95
|
+
const jsString = `(function (){ if (typeof runOkHiLocationManagerCallback === "function") { runOkHiLocationManagerCallback("${value}") } })()`;
|
|
96
|
+
webViewRef.current.injectJavaScript(jsString);
|
|
97
|
+
}
|
|
98
|
+
};
|
|
99
|
+
const handleAndroidRequestLocationPermission = async level => {
|
|
100
|
+
if (level === 'whenInUse') {
|
|
101
|
+
const result = await requestLocationPermission();
|
|
102
|
+
runWebViewCallback(result ? 'whenInUse' : 'denied');
|
|
103
|
+
} else if (level === 'always') {
|
|
104
|
+
const result = await requestBackgroundLocationPermission();
|
|
105
|
+
if (result) {
|
|
106
|
+
runWebViewCallback('always');
|
|
107
|
+
} else {
|
|
108
|
+
const isWhenInUseGranted = await isLocationPermissionGranted();
|
|
109
|
+
runWebViewCallback(isWhenInUseGranted ? 'whenInUse' : 'denied');
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
};
|
|
113
|
+
const handleIOSRequestLocationPermission = async level => {
|
|
114
|
+
const unknownError = new OkHiException({
|
|
115
|
+
code: OkHiException.UNKNOWN_ERROR_CODE,
|
|
116
|
+
message: 'Something went wrong while requesting permissions. Please try again later.'
|
|
117
|
+
});
|
|
118
|
+
try {
|
|
119
|
+
const isServiceAvailable = await isLocationServicesEnabled();
|
|
120
|
+
if (!isServiceAvailable) {
|
|
121
|
+
openAppSettings();
|
|
122
|
+
} else if (level === 'whenInUse') {
|
|
123
|
+
const result = await requestLocationPermission();
|
|
124
|
+
runWebViewCallback(result ? level : 'denied');
|
|
125
|
+
} else if (level === 'always') {
|
|
126
|
+
const granted = await isBackgroundLocationPermissionGranted();
|
|
127
|
+
if (granted) {
|
|
128
|
+
runWebViewCallback(level);
|
|
129
|
+
} else {
|
|
130
|
+
openAppSettings();
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
} catch (error) {
|
|
134
|
+
onError(unknownError);
|
|
135
|
+
}
|
|
136
|
+
};
|
|
137
|
+
const handleRequestLocationPermission = async _ref => {
|
|
138
|
+
let {
|
|
139
|
+
level
|
|
140
|
+
} = _ref;
|
|
141
|
+
if (Platform.OS === 'android') {
|
|
142
|
+
handleAndroidRequestLocationPermission(level);
|
|
143
|
+
} else if (Platform.OS === 'ios') {
|
|
144
|
+
handleIOSRequestLocationPermission(level);
|
|
145
|
+
}
|
|
146
|
+
};
|
|
147
|
+
const handleOpenAppSettings = async () => {
|
|
148
|
+
try {
|
|
149
|
+
const granted = await isBackgroundLocationPermissionGranted();
|
|
150
|
+
if (granted) {
|
|
151
|
+
runWebViewCallback('always');
|
|
152
|
+
} else {
|
|
153
|
+
await openAppSettings();
|
|
154
|
+
}
|
|
155
|
+
} catch (error) {
|
|
156
|
+
const err = error;
|
|
157
|
+
onError(err);
|
|
158
|
+
}
|
|
159
|
+
};
|
|
160
|
+
const handleOnMessage = _ref2 => {
|
|
72
161
|
let {
|
|
73
162
|
nativeEvent: {
|
|
74
163
|
data
|
|
75
164
|
}
|
|
76
|
-
} =
|
|
165
|
+
} = _ref2;
|
|
77
166
|
try {
|
|
78
167
|
const response = JSON.parse(data);
|
|
79
168
|
if (response.message === 'fatal_exit') {
|
|
80
169
|
onError(new OkHiException({
|
|
81
170
|
code: OkHiException.UNKNOWN_ERROR_CODE,
|
|
82
|
-
message:
|
|
171
|
+
message: 'Something went wrong, please try again later.'
|
|
83
172
|
}));
|
|
84
173
|
} else if (response.message === 'exit_app') {
|
|
85
174
|
onCloseRequest();
|
|
86
175
|
} else if (response.message === 'request_enable_protected_apps') {
|
|
87
176
|
openProtectedAppsSettings();
|
|
88
|
-
} else {
|
|
177
|
+
} else if (response.message === 'location_created' || response.message === 'location_selected' || response.message === 'location_updated') {
|
|
89
178
|
onSuccess({
|
|
90
179
|
user: {
|
|
91
180
|
...response.payload.user,
|
|
@@ -111,6 +200,10 @@ export const OkHiLocationManager = props => {
|
|
|
111
200
|
});
|
|
112
201
|
}
|
|
113
202
|
});
|
|
203
|
+
} else if (response.message === 'request_location_permission') {
|
|
204
|
+
handleRequestLocationPermission(response.payload);
|
|
205
|
+
} else if (response.message === 'open_app_settings') {
|
|
206
|
+
handleOpenAppSettings();
|
|
114
207
|
}
|
|
115
208
|
} catch (error) {
|
|
116
209
|
let errorMessage = 'Something went wrong';
|
|
@@ -166,9 +259,9 @@ export const OkHiLocationManager = props => {
|
|
|
166
259
|
return /*#__PURE__*/React.createElement(Modal, {
|
|
167
260
|
animationType: "slide",
|
|
168
261
|
transparent: false,
|
|
169
|
-
visible:
|
|
262
|
+
visible: ready,
|
|
170
263
|
onRequestClose: handleModalRequestClose
|
|
171
|
-
},
|
|
264
|
+
}, ready ? renderContent() : null);
|
|
172
265
|
};
|
|
173
266
|
export default OkHiLocationManager;
|
|
174
267
|
//# sourceMappingURL=OkHiLocationManager.js.map
|
|
@@ -1 +1 @@
|
|
|
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","startMessage","mode","phone","then","config","code","UNAUTHORIZED_CODE","message","UNAUTHORIZED_MESSAGE","auth","anonymousSignInWithPhoneNumber","catch","error","OS","Version","setItem","JSON","stringify","payload","url","console","handleOnMessage","_ref","nativeEvent","data","response","parse","UNKNOWN_ERROR_CODE","toString","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","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 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 const startMessage =\n props.mode === 'create' ? 'start_app' : 'select_location';\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: 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 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 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 }\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={launch}\n onRequestClose={handleModalRequestClose}\n >\n {launch ? renderContent() : null}\n </Modal>\n );\n};\n\nexport default OkHiLocationManager;\n"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,QAAQ,EAAEC,SAAS,EAAEC,MAAM,QAAQ,OAAO;AAC1D,SAASC,KAAK,EAAEC,YAAY,EAAEC,QAAQ,QAAQ,cAAc;AAC5D,SAASC,OAAO,QAA6B,sBAAsB;AACnE,SAASC,OAAO,QAAQ,WAAW;AAMnC,SACEC,WAAW,EACXC,6BAA6B,EAC7BC,wBAAwB,EACxBC,iBAAiB,QACZ,QAAQ;AACf,SAASC,aAAa,QAAQ,yBAAyB;AACvD,SAASC,QAAQ,QAAQ,oBAAoB;AAE7C,SAASC,KAAK,IAAIC,EAAE,QAAQ,aAAa;AAEzC,SACEC,2BAA2B,EAC3BC,yBAAyB,QACpB,WAAW;AAClB,SAASC,gBAAgB,QAAQ,qBAAqB;;AAEtD;AACA;AACA;AACA,OAAO,MAAMC,mBAAmB,GAAIC,KAA+B,IAAK;EACtE,MAAM,CAACC,KAAK,EAAEC,QAAQ,CAAC,GAAGtB,QAAQ,CAAgB,IAAI,CAAC;EACvD,MAAM,CAACuB,wBAAwB,EAAEC,2BAA2B,CAAC,GAC3DxB,QAAQ,CAA+B,IAAI,CAAC;EAC9C,MAAM,CAACyB,YAAY,EAAEC,eAAe,CAAC,GACnC1B,QAAQ,CAA6C,IAAI,CAAC;EAC5D,MAAM2B,YAAY,GAAG;IAAEC,IAAI,EAAE;EAAE,CAAC;EAChC,MAAMC,KAAK,GAAGT,KAAK,CAACS,KAAK,GACrB;IAAE,GAAGT,KAAK,CAACS,KAAK;IAAE,GAAGF;EAAa,CAAC,GACnCA,YAAY;EAEhB,MAAM;IAAEG,IAAI;IAAEC,SAAS;IAAEC,cAAc;IAAEC,OAAO;IAAEC,MAAM;IAAEC;EAAO,CAAC,GAAGf,KAAK;EAC1E,MAAMgB,UAAU,GAAGlC,MAAM,CAAiB,IAAI,CAAC;EAC/C,MAAMmC,YAAY,GAChBjB,KAAK,CAACkB,IAAI,KAAK,QAAQ,GAAG,WAAW,GAAG,iBAAiB;EAE3DrC,SAAS,CAAC,MAAM;IACd,IAAIsB,wBAAwB,IAAI,IAAI,IAAIF,KAAK,IAAI,IAAI,IAAIS,IAAI,CAACS,KAAK,EAAE;MACnEvB,2BAA2B,CAAC,CAAC,CAC1BwB,IAAI,CAAEC,MAAM,IAAK;QAChB,IAAI,CAACA,MAAM,IAAIN,MAAM,EAAE;UACrBF,OAAO,CACL,IAAIrB,aAAa,CAAC;YAChB8B,IAAI,EAAE9B,aAAa,CAAC+B,iBAAiB;YACrCC,OAAO,EAAEhC,aAAa,CAACiC;UACzB,CAAC,CACH,CAAC;QACH,CAAC,MAAM,IAAIJ,MAAM,EAAE;UACjBjB,2BAA2B,CAACiB,MAAM,CAAC;UACnC,MAAMK,IAAI,GAAG,IAAIjC,QAAQ,CAAC,CAAC;UAC3BiC,IAAI,CACDC,8BAA8B,CAACjB,IAAI,CAACS,KAAK,EAAE,CAAC,QAAQ,CAAC,EAAEE,MAAM,CAAC,CAC9DD,IAAI,CAAClB,QAAQ,CAAC,CACd0B,KAAK,CAACf,OAAO,CAAC;QACnB;MACF,CAAC,CAAC,CACDe,KAAK,CAAEC,KAAK,IAAK;QAChB,IAAId,MAAM,EAAE;UACVF,OAAO,CAACgB,KAAK,CAAC;QAChB;MACF,CAAC,CAAC;IACN;EACF,CAAC,EAAE,CAAChB,OAAO,EAAEH,IAAI,CAACS,KAAK,EAAEJ,MAAM,EAAEZ,wBAAwB,EAAEF,KAAK,CAAC,CAAC;EAElEpB,SAAS,CAAC,MAAM;IACd,IAAIoB,KAAK,KAAK,IAAI,IAAIE,wBAAwB,KAAK,IAAI,EAAE;MACvD;MACAb,wBAAwB,CAACU,KAAK,EAAEC,KAAK,EAAEE,wBAAwB,CAAC,CAC7DiB,IAAI,CAAEf,YAAY,IAAK;QACtBC,eAAe,CAACD,YAAY,CAAC;QAC7B,IAAIpB,QAAQ,CAAC6C,EAAE,KAAK,SAAS,IAAI7C,QAAQ,CAAC8C,OAAO,GAAG,EAAE,EAAE;UACtDjC,gBAAgB,CAACkC,OAAO,CACtB,0BAA0B,EAC1BC,IAAI,CAACC,SAAS,CAAC;YACbV,OAAO,EAAEP,YAAY;YACrBkB,OAAO,EAAE9B,YAAY;YACrB+B,GAAG,EAAEhD,WAAW,CAACe,wBAAwB;UAC3C,CAAC,CACH,CAAC,CAACyB,KAAK,CAACS,OAAO,CAACR,KAAK,CAAC;QACxB;MACF,CAAC,CAAC,CACDD,KAAK,CAACS,OAAO,CAACR,KAAK,CAAC;IACzB;EACF,CAAC,EAAE,CAAC1B,wBAAwB,EAAEH,KAAK,EAAEC,KAAK,CAAC,CAAC;EAE5C,MAAMqC,eAAe,GAAGC,IAAA,IAAoD;IAAA,IAAnD;MAAEC,WAAW,EAAE;QAAEC;MAAK;IAAuB,CAAC,GAAAF,IAAA;IACrE,IAAI;MACF,MAAMG,QAAqC,GAAGT,IAAI,CAACU,KAAK,CAACF,IAAI,CAAC;MAC9D,IAAIC,QAAQ,CAAClB,OAAO,KAAK,YAAY,EAAE;QACrCX,OAAO,CACL,IAAIrB,aAAa,CAAC;UAChB8B,IAAI,EAAE9B,aAAa,CAACoD,kBAAkB;UACtCpB,OAAO,EAAEkB,QAAQ,CAACP,OAAO,CAACU,QAAQ,CAAC;QACrC,CAAC,CACH,CAAC;MACH,CAAC,MAAM,IAAIH,QAAQ,CAAClB,OAAO,KAAK,UAAU,EAAE;QAC1CZ,cAAc,CAAC,CAAC;MAClB,CAAC,MAAM,IAAI8B,QAAQ,CAAClB,OAAO,KAAK,+BAA+B,EAAE;QAC/D3B,yBAAyB,CAAC,CAAC;MAC7B,CAAC,MAAM;QACLc,SAAS,CAAC;UACRD,IAAI,EAAE;YACJ,GAAGgC,QAAQ,CAACP,OAAO,CAACzB,IAAI;YACxBoC,wBAAwB,EAAEpC,IAAI,CAACoC;UACjC,CAAC;UACDC,QAAQ,EAAExD,iBAAiB,CAACmD,QAAQ,CAACP,OAAO,CAACY,QAAQ,CAAC;UACtDC,iBAAiB,EAAE,SAAAA,CAAU3B,MAAmC,EAAE;YAChE,MAAM4B,WAAW,GAAG;cAAE,GAAG,IAAI,CAACvC;YAAK,CAAC;YACpC,MAAMqC,QAAQ,GAAG;cAAE,GAAG,IAAI,CAACA;YAAS,CAAC;YACrC,OAAO,IAAIG,OAAO,CAAC,CAACC,OAAO,EAAEC,MAAM,KAAK;cACtC,IAAI,CAACL,QAAQ,CAACM,EAAE,EAAE;gBAChBD,MAAM,CACJ,IAAI5D,aAAa,CAAC;kBAChB8B,IAAI,EAAE9B,aAAa,CAAC8D,gBAAgB;kBACpC9B,OAAO,EAAE;gBACX,CAAC,CACH,CAAC;cACH,CAAC,MAAM;gBACL7B,EAAE,CACAsD,WAAW,CAAC9B,KAAK,EACjB4B,QAAQ,CAACM,EAAE,EACXN,QAAQ,CAACQ,GAAG,EACZR,QAAQ,CAACS,GAAG,EACZnC,MAAM,EACN4B,WAAW,CAACH,wBACd,CAAC,CACE1B,IAAI,CAAC+B,OAAO,CAAC,CACbvB,KAAK,CAACwB,MAAM,CAAC;cAClB;YACF,CAAC,CAAC;UACJ;QACF,CAAC,CAAC;MACJ;IACF,CAAC,CAAC,OAAOvB,KAAK,EAAE;MACd,IAAI4B,YAAY,GAAG,sBAAsB;MACzC,IAAI5B,KAAK,YAAY6B,KAAK,EAAE;QAC1BD,YAAY,GAAG5B,KAAK,CAACL,OAAO;MAC9B;MACAX,OAAO,CACL,IAAIrB,aAAa,CAAC;QAChB8B,IAAI,EAAE9B,aAAa,CAACoD,kBAAkB;QACtCpB,OAAO,EAAEiC;MACX,CAAC,CACH,CAAC;IACH;EACF,CAAC;EAED,MAAME,aAAa,GAAGA,CAAA,KAAM;IAC1B9C,OAAO,CACL,IAAIrB,aAAa,CAAC;MAChB8B,IAAI,EAAE9B,aAAa,CAACoE,kBAAkB;MACtCpC,OAAO,EAAEhC,aAAa,CAACqE;IACzB,CAAC,CACH,CAAC;EACH,CAAC;EAED,MAAMC,uBAAuB,GAAGA,CAAA,KAAM;IAAA,IAAAC,mBAAA;IACpC,CAAAA,mBAAA,GAAA/C,UAAU,CAACgD,OAAO,cAAAD,mBAAA,uBAAlBA,mBAAA,CAAoBE,MAAM,CAAC,CAAC;EAC9B,CAAC;EAED,MAAMC,aAAa,GAAGA,CAAA,KAAM;IAC1B,IAAIjE,KAAK,KAAK,IAAI,IAAIE,wBAAwB,IAAI,IAAI,EAAE;MACtD,OAAOW,MAAM,iBAAInC,KAAA,CAAAwF,aAAA,CAAChF,OAAO,MAAE,CAAC;IAC9B;IAEA,IAAIkB,YAAY,KAAK,IAAI,EAAE;MACzB,OAAOS,MAAM,iBAAInC,KAAA,CAAAwF,aAAA,CAAChF,OAAO,MAAE,CAAC;IAC9B;IAEA,MAAM;MAAEiF,WAAW;MAAEC;IAAa,CAAC,GAAGhF,6BAA6B,CAAC;MAClEmC,OAAO,EAAEP,YAAY;MACrBkB,OAAO,EAAE9B;IACX,CAAC,CAAC;IAEF,oBACE1B,KAAA,CAAAwF,aAAA,CAACnF,YAAY;MAACyB,KAAK,EAAEA;IAAM,gBACzB9B,KAAA,CAAAwF,aAAA,CAACjF,OAAO;MACNoF,MAAM,EAAE;QAAEC,GAAG,EAAEnF,WAAW,CAACe,wBAAwB;MAAE,CAAE;MACvDqE,qCAAqC,EACnCvF,QAAQ,CAAC6C,EAAE,KAAK,KAAK,GAAGuC,YAAY,GAAGI,SACxC;MACDC,kBAAkB,EAAEzF,QAAQ,CAAC6C,EAAE,KAAK,KAAK,GAAG2C,SAAS,GAAGL,WAAY;MACpEO,SAAS,EAAErC,eAAgB;MAC3BzB,OAAO,EAAE8C,aAAc;MACvBiB,WAAW,EAAEjB,aAAc;MAC3BkB,kBAAkB,EAAE,IAAK;MACzBC,mCAAmC,EAAE,IAAK;MAC1CC,GAAG,EAAE/D;IAAW,CACjB,CACW,CAAC;EAEnB,CAAC;EAED,oBACErC,KAAA,CAAAwF,aAAA,CAACpF,KAAK;IACJiG,aAAa,EAAC,OAAO;IACrBC,WAAW,EAAE,KAAM;IACnBC,OAAO,EAAEnE,MAAO;IAChBoE,cAAc,EAAErB;EAAwB,GAEvC/C,MAAM,GAAGmD,aAAa,CAAC,CAAC,GAAG,IACvB,CAAC;AAEZ,CAAC;AAED,eAAenE,mBAAmB"}
|
|
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","requestBackgroundLocationPermission","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","OS","Version","setItem","JSON","stringify","payload","url","console","permissionsOnboarding","result","PERMISSION_DENIED_CODE","runWebViewCallback","value","current","jsString","injectJavaScript","handleAndroidRequestLocationPermission","level","isWhenInUseGranted","handleIOSRequestLocationPermission","unknownError","UNKNOWN_ERROR_CODE","isServiceAvailable","granted","handleRequestLocationPermission","_ref","handleOpenAppSettings","err","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 requestBackgroundLocationPermission,\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 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 } else {\n setReady(false);\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 if (level === 'whenInUse') {\n const result = await requestLocationPermission();\n runWebViewCallback(result ? 'whenInUse' : 'denied');\n } else if (level === 'always') {\n const result = await requestBackgroundLocationPermission();\n if (result) {\n runWebViewCallback('always');\n } else {\n const isWhenInUseGranted = await isLocationPermissionGranted();\n runWebViewCallback(isWhenInUseGranted ? 'whenInUse' : 'denied');\n }\n }\n };\n\n const handleIOSRequestLocationPermission = async (\n level: 'whenInUse' | 'always'\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 openAppSettings();\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 handleOpenAppSettings = async () => {\n try {\n const granted = await isBackgroundLocationPermissionGranted();\n if (granted) {\n runWebViewCallback('always');\n } else {\n await openAppSettings();\n }\n } catch (error) {\n const err = error as OkHiException;\n onError(err);\n }\n };\n\n const handleOnMessage = ({ nativeEvent: { data } }: WebViewMessageEvent) => {\n try {\n const response: OkHiLocationManagerResponse = JSON.parse(data);\n\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 } else if (response.message === 'open_app_settings') {\n handleOpenAppSettings();\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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"}
|
|
@@ -13,8 +13,14 @@ const fetchCurrentLocation = async () => {
|
|
|
13
13
|
* @ignore
|
|
14
14
|
*/
|
|
15
15
|
export const generateStartDataPayload = async (props, authToken, applicationConfiguration) => {
|
|
16
|
-
var _props$theme, _props$theme2, _applicationConfigura, _applicationConfigura2, _applicationConfigura3, _props$config, _props$theme3, _props$config2, _props$config3, _props$config4, _props$config5, _props$config6;
|
|
16
|
+
var _props$theme, _props$theme2, _applicationConfigura, _applicationConfigura2, _applicationConfigura3, _props$config, _props$theme3, _props$config2, _props$config3, _props$config4, _props$config5, _props$config6, _props$config7;
|
|
17
17
|
const payload = {};
|
|
18
|
+
const {
|
|
19
|
+
manufacturer,
|
|
20
|
+
model,
|
|
21
|
+
osVersion,
|
|
22
|
+
platform
|
|
23
|
+
} = await OkHiNativeModule.retrieveDeviceInfo();
|
|
18
24
|
payload.style = !props.theme ? undefined : {
|
|
19
25
|
base: {
|
|
20
26
|
color: (_props$theme = props.theme) === null || _props$theme === void 0 || (_props$theme = _props$theme.colors) === null || _props$theme === void 0 ? void 0 : _props$theme.primary,
|
|
@@ -45,6 +51,12 @@ export const generateStartDataPayload = async (props, authToken, applicationConf
|
|
|
45
51
|
},
|
|
46
52
|
platform: {
|
|
47
53
|
name: 'react-native'
|
|
54
|
+
},
|
|
55
|
+
device: {
|
|
56
|
+
manufacturer,
|
|
57
|
+
model,
|
|
58
|
+
platform,
|
|
59
|
+
osVersion
|
|
48
60
|
}
|
|
49
61
|
};
|
|
50
62
|
payload.config = {
|
|
@@ -57,25 +69,25 @@ export const generateStartDataPayload = async (props, authToken, applicationConf
|
|
|
57
69
|
home: typeof ((_props$config3 = props.config) === null || _props$config3 === void 0 || (_props$config3 = _props$config3.addressTypes) === null || _props$config3 === void 0 ? void 0 : _props$config3.home) === 'boolean' ? (_props$config4 = props.config) === null || _props$config4 === void 0 || (_props$config4 = _props$config4.addressTypes) === null || _props$config4 === void 0 ? void 0 : _props$config4.home : true,
|
|
58
70
|
work: typeof ((_props$config5 = props.config) === null || _props$config5 === void 0 || (_props$config5 = _props$config5.addressTypes) === null || _props$config5 === void 0 ? void 0 : _props$config5.work) === 'boolean' ? (_props$config6 = props.config) === null || _props$config6 === void 0 || (_props$config6 = _props$config6.addressTypes) === null || _props$config6 === void 0 ? void 0 : _props$config6.work : true
|
|
59
71
|
},
|
|
60
|
-
protectedApps: Platform.OS === 'android' && (await canOpenProtectedAppsSettings())
|
|
72
|
+
protectedApps: Platform.OS === 'android' && (await canOpenProtectedAppsSettings()),
|
|
73
|
+
permissionsOnboarding: typeof ((_props$config7 = props.config) === null || _props$config7 === void 0 ? void 0 : _props$config7.permissionsOnboarding) === 'boolean' ? props.config.permissionsOnboarding : true
|
|
61
74
|
};
|
|
62
75
|
if (Platform.OS === 'ios') {
|
|
63
76
|
const status = await OkHiNativeModule.fetchIOSLocationPermissionStatus();
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
}
|
|
77
|
+
const locationPermission = status === 'notDetermined' ? 'notDetermined' : status === 'authorizedWhenInUse' ? 'whenInUse' : status === 'authorizedAlways' ? 'always' : 'denied';
|
|
78
|
+
payload.context.permissions = {
|
|
79
|
+
location: locationPermission
|
|
80
|
+
};
|
|
81
|
+
if (status === 'authorized' || status === 'authorizedWhenInUse' || status === 'authorizedAlways') {
|
|
82
|
+
const location = await fetchCurrentLocation();
|
|
83
|
+
if (location) {
|
|
84
|
+
payload.context.coordinates = {
|
|
85
|
+
currentLocation: {
|
|
86
|
+
lat: location.lat,
|
|
87
|
+
lng: location.lng,
|
|
88
|
+
accuracy: location.accuracy
|
|
89
|
+
}
|
|
90
|
+
};
|
|
79
91
|
}
|
|
80
92
|
}
|
|
81
93
|
} else if (Platform.OS === 'android') {
|
|
@@ -96,14 +108,6 @@ export const generateStartDataPayload = async (props, authToken, applicationConf
|
|
|
96
108
|
location: hasBackgroundLocationPermission ? 'always' : hasLocationPermission ? 'whenInUse' : 'denied'
|
|
97
109
|
};
|
|
98
110
|
}
|
|
99
|
-
const {
|
|
100
|
-
manufacturer,
|
|
101
|
-
model
|
|
102
|
-
} = await OkHiNativeModule.retrieveDeviceInfo();
|
|
103
|
-
payload.context.device = {
|
|
104
|
-
manufacturer,
|
|
105
|
-
model
|
|
106
|
-
};
|
|
107
111
|
} else {
|
|
108
112
|
throw new OkHiException({
|
|
109
113
|
code: OkHiException.UNSUPPORTED_PLATFORM_CODE,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["canOpenProtectedAppsSettings","isBackgroundLocationPermissionGranted","isLocationPermissionGranted","OkHiException","OkHiMode","manifest","Platform","OkHiNativeModule","fetchCurrentLocation","result","generateStartDataPayload","props","authToken","applicationConfiguration","_props$theme","_props$theme2","_applicationConfigura","_applicationConfigura2","_applicationConfigura3","_props$config","_props$theme3","_props$config2","_props$config3","_props$config4","_props$config5","_props$config6","payload","style","theme","undefined","base","color","colors","primary","logo","appBar","name","app","user","phone","firstName","lastName","email","auth","context","container","version","developer","library","platform","config","streetView","backgroundColor","visible","addressTypes","home","work","protectedApps","OS","status","fetchIOSLocationPermissionStatus","permissions","location","coordinates","currentLocation","lat","lng","accuracy","hasLocationPermission","error","console","log","hasBackgroundLocationPermission","manufacturer","model","retrieveDeviceInfo","device","code","UNSUPPORTED_PLATFORM_CODE","message","UNAUTHORIZED_MESSAGE","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","_location$geo_point","_location$geo_point2","_location$street_view","_location$street_view2","id","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","countryCode","country_code"],"sources":["Util.ts"],"sourcesContent":["import type { OkHiLocationManagerProps } from './types';\nimport {\n canOpenProtectedAppsSettings,\n isBackgroundLocationPermissionGranted,\n isLocationPermissionGranted,\n OkHiException,\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\nconst fetchCurrentLocation = async (): Promise<null | {\n lat: number;\n lng: number;\n accuracy: number;\n}> => {\n const result = await OkHiNativeModule.fetchCurrentLocation();\n return result;\n};\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 payload.config = {\n streetView:\n typeof props.config?.streetView === 'boolean'\n ? props.config.streetView\n : true,\n appBar: {\n color: props.theme?.appBar?.backgroundColor,\n visible: props.config?.appBar?.visible,\n },\n 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 protectedApps:\n Platform.OS === 'android' && (await canOpenProtectedAppsSettings()),\n };\n\n if (Platform.OS === 'ios') {\n const status = await OkHiNativeModule.fetchIOSLocationPermissionStatus();\n if (status !== 'notDetermined') {\n payload.context.permissions = {\n location:\n status === 'authorizedWhenInUse'\n ? 'whenInUse'\n : status === 'authorizedAlways' || status === 'authorized'\n ? 'always'\n : 'denided',\n };\n if (\n status === 'authorized' ||\n status === 'authorizedWhenInUse' ||\n status === 'authorizedAlways'\n ) {\n const location = await fetchCurrentLocation();\n if (location) {\n payload.context.coordinates = {\n currentLocation: {\n lat: location.lat,\n lng: location.lng,\n accuracy: location.accuracy,\n },\n };\n }\n }\n }\n } else if (Platform.OS === 'android') {\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 const { manufacturer, model } = await OkHiNativeModule.retrieveDeviceInfo();\n payload.context.device = {\n manufacturer,\n model,\n };\n } else {\n throw new OkHiException({\n code: OkHiException.UNSUPPORTED_PLATFORM_CODE,\n message: OkHiException.UNAUTHORIZED_MESSAGE,\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 countryCode: location?.country_code,\n };\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["canOpenProtectedAppsSettings","isBackgroundLocationPermissionGranted","isLocationPermissionGranted","OkHiException","OkHiMode","manifest","Platform","OkHiNativeModule","fetchCurrentLocation","result","generateStartDataPayload","props","authToken","applicationConfiguration","_props$theme","_props$theme2","_applicationConfigura","_applicationConfigura2","_applicationConfigura3","_props$config","_props$theme3","_props$config2","_props$config3","_props$config4","_props$config5","_props$config6","_props$config7","payload","manufacturer","model","osVersion","platform","retrieveDeviceInfo","style","theme","undefined","base","color","colors","primary","logo","appBar","name","app","user","phone","firstName","lastName","email","auth","context","container","version","developer","library","device","config","streetView","backgroundColor","visible","addressTypes","home","work","protectedApps","OS","permissionsOnboarding","status","fetchIOSLocationPermissionStatus","locationPermission","permissions","location","coordinates","currentLocation","lat","lng","accuracy","hasLocationPermission","error","console","log","hasBackgroundLocationPermission","code","UNSUPPORTED_PLATFORM_CODE","message","UNAUTHORIZED_MESSAGE","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","_location$geo_point","_location$geo_point2","_location$street_view","_location$street_view2","id","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","countryCode","country_code"],"sources":["Util.ts"],"sourcesContent":["import type { OkHiLocationManagerProps } from './types';\nimport {\n canOpenProtectedAppsSettings,\n isBackgroundLocationPermissionGranted,\n isLocationPermissionGranted,\n OkHiException,\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\nconst fetchCurrentLocation = async (): Promise<null | {\n lat: number;\n lng: number;\n accuracy: number;\n}> => {\n const result = await OkHiNativeModule.fetchCurrentLocation();\n return result;\n};\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 const { manufacturer, model, osVersion, platform } =\n await OkHiNativeModule.retrieveDeviceInfo();\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 device: {\n manufacturer,\n model,\n platform,\n osVersion,\n },\n };\n payload.config = {\n streetView:\n typeof props.config?.streetView === 'boolean'\n ? props.config.streetView\n : true,\n appBar: {\n color: props.theme?.appBar?.backgroundColor,\n visible: props.config?.appBar?.visible,\n },\n 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 protectedApps:\n Platform.OS === 'android' && (await canOpenProtectedAppsSettings()),\n permissionsOnboarding:\n typeof props.config?.permissionsOnboarding === 'boolean'\n ? props.config.permissionsOnboarding\n : true,\n };\n\n if (Platform.OS === 'ios') {\n const status = await OkHiNativeModule.fetchIOSLocationPermissionStatus();\n const locationPermission =\n status === 'notDetermined'\n ? 'notDetermined'\n : status === 'authorizedWhenInUse'\n ? 'whenInUse'\n : status === 'authorizedAlways'\n ? 'always'\n : 'denied';\n payload.context.permissions = {\n location: locationPermission,\n };\n if (\n status === 'authorized' ||\n status === 'authorizedWhenInUse' ||\n status === 'authorizedAlways'\n ) {\n const location = await fetchCurrentLocation();\n if (location) {\n payload.context.coordinates = {\n currentLocation: {\n lat: location.lat,\n lng: location.lng,\n accuracy: location.accuracy,\n },\n };\n }\n }\n } else if (Platform.OS === 'android') {\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 } else {\n throw new OkHiException({\n code: OkHiException.UNSUPPORTED_PLATFORM_CODE,\n message: OkHiException.UNAUTHORIZED_MESSAGE,\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 countryCode: location?.country_code,\n };\n};\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import type { ViewStyle } from 'react-native';\nimport type { OkHiException } from '../OkCore/OkHiException';\nimport type { OkHiUser, OkHiLocation } from '../OkCore/types';\nimport type { OkVerifyStartConfiguration } from '../OkVerify/types';\n\n/**\n * The OkCollect Success Response object contains information about the newly created user and location once an address has been successfully created.\n * It can be used to extract information about the address and/or start address verification process.\n */\nexport interface OkCollectSuccessResponse {\n /**\n * The [OkHiUser](https://okhi.github.io/react-native-core/interfaces/okhiuser.html) object containing information about the newly created user.\n */\n user: OkHiUser;\n /**\n * The [OkHiLocation](https://okhi.github.io/react-native-core/interfaces/okhilocation.html) object containing information about the newly created user.\n */\n location: OkHiLocation;\n\n /**\n * Starts address verification\n */\n startVerification: (config?: OkVerifyStartConfiguration) => Promise<string>;\n}\n\n/**\n * The OkHiLocationManager exposes props that you can use to customise it's functionality and appearance.\n */\nexport interface OkHiLocationManagerProps {\n /**\n * **Required:** A boolean flag that determines whether or not to show the Location Manager.\n */\n launch: boolean;\n /**\n * **Required:** A defined [OkHiUser](https://okhi.github.io/react-native-core/interfaces/okhiuser.html) object, with a mandatory \"phone\" key property.\n */\n user: OkHiUser;\n /**\n * **Optional:** A custom JSX.Element that'll be used as a loading indicator.\n */\n loader?: JSX.Element;\n /**\n * **Optional:** Used to customise the appearance of the Container that wraps the location manager.\n */\n style?: ViewStyle;\n /**\n * **Required:** A callback that'll be invoked with an {@link OkCollectSuccessResponse} once an accurate OkHi address has been successfully created.\n */\n onSuccess: (response: OkCollectSuccessResponse) => any;\n /**\n * **Required:** A callback that'll be invoked whenever an error occurs during the address creation process.\n */\n onError: (error: OkHiException) => any;\n /**\n * **Required:** A callback that'll be invoked whenever a user taps on the close button.\n */\n onCloseRequest: () => any;\n /**\n * **Optional:** An object that'll be used to customise the appearance of the Location Manager to better match your branding requirements.\n */\n theme?: {\n appBar?: {\n backgroundColor?: string;\n logo?: string;\n };\n colors?: {\n primary?: string;\n };\n };\n /**\n * **Optional:** An object that'll be used to customise the functionality of the Location Manager. This object dictates whether you want some features on or off.\n */\n config?: {\n streetView?: boolean;\n appBar?: {\n visible?: boolean;\n };\n addressTypes?: {\n home?: boolean;\n work?: boolean;\n };\n };\n\n /**\n * **Optional:** Enable a user to either select an existing address, or force to create a new one\n */\n mode?: 'create' | 'select';\n}\n\n/**\n * @ignore\n */\nexport interface OkHiLocationManagerStartDataPayload {\n style?: {\n base?: {\n color?: string;\n logo?: string;\n name?: string;\n };\n };\n auth: {\n authToken: string;\n };\n context: {\n container?: {\n name?: string;\n version?: string;\n };\n developer: {\n name: string;\n };\n library: {\n name: string;\n version: string;\n };\n platform: {\n name: 'react-native';\n };\n };\n config?: {\n streetView?: boolean;\n appBar?: {\n color?: string;\n visible?: boolean;\n };\n };\n user: OkHiUser;\n}\n\n/**\n * @ignore\n */\nexport type OkHiLocationManagerStartMessage = 'select_location' | 'start_app';\n\n/**\n * @ignore\n */\nexport interface OkHiLocationManagerResponse {\n message:\n | 'location_selected'\n | 'location_created'\n | 'location_updated'\n | 'exit_app'\n | 'request_enable_protected_apps'\n | 'fatal_exit';\n payload:
|
|
1
|
+
{"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import type { ViewStyle } from 'react-native';\nimport type { OkHiException } from '../OkCore/OkHiException';\nimport type { OkHiUser, OkHiLocation } from '../OkCore/types';\nimport type { OkVerifyStartConfiguration } from '../OkVerify/types';\n\n/**\n * The OkCollect Success Response object contains information about the newly created user and location once an address has been successfully created.\n * It can be used to extract information about the address and/or start address verification process.\n */\nexport interface OkCollectSuccessResponse {\n /**\n * The [OkHiUser](https://okhi.github.io/react-native-core/interfaces/okhiuser.html) object containing information about the newly created user.\n */\n user: OkHiUser;\n /**\n * The [OkHiLocation](https://okhi.github.io/react-native-core/interfaces/okhilocation.html) object containing information about the newly created user.\n */\n location: OkHiLocation;\n\n /**\n * Starts address verification\n */\n startVerification: (config?: OkVerifyStartConfiguration) => Promise<string>;\n}\n\n/**\n * The OkHiLocationManager exposes props that you can use to customise it's functionality and appearance.\n */\nexport interface OkHiLocationManagerProps {\n /**\n * **Required:** A boolean flag that determines whether or not to show the Location Manager.\n */\n launch: boolean;\n /**\n * **Required:** A defined [OkHiUser](https://okhi.github.io/react-native-core/interfaces/okhiuser.html) object, with a mandatory \"phone\" key property.\n */\n user: OkHiUser;\n /**\n * **Optional:** A custom JSX.Element that'll be used as a loading indicator.\n */\n loader?: JSX.Element;\n /**\n * **Optional:** Used to customise the appearance of the Container that wraps the location manager.\n */\n style?: ViewStyle;\n /**\n * **Required:** A callback that'll be invoked with an {@link OkCollectSuccessResponse} once an accurate OkHi address has been successfully created.\n */\n onSuccess: (response: OkCollectSuccessResponse) => any;\n /**\n * **Required:** A callback that'll be invoked whenever an error occurs during the address creation process.\n */\n onError: (error: OkHiException) => any;\n /**\n * **Required:** A callback that'll be invoked whenever a user taps on the close button.\n */\n onCloseRequest: () => any;\n /**\n * **Optional:** An object that'll be used to customise the appearance of the Location Manager to better match your branding requirements.\n */\n theme?: {\n appBar?: {\n backgroundColor?: string;\n logo?: string;\n };\n colors?: {\n primary?: string;\n };\n };\n /**\n * **Optional:** An object that'll be used to customise the functionality of the Location Manager. This object dictates whether you want some features on or off.\n */\n config?: {\n streetView?: boolean;\n appBar?: {\n visible?: boolean;\n };\n addressTypes?: {\n home?: boolean;\n work?: boolean;\n };\n permissionsOnboarding?: boolean;\n };\n\n /**\n * **Optional:** Enable a user to either select an existing address, or force to create a new one\n */\n mode?: 'create' | 'select';\n}\n\n/**\n * @ignore\n */\nexport interface OkHiLocationManagerStartDataPayload {\n style?: {\n base?: {\n color?: string;\n logo?: string;\n name?: string;\n };\n };\n auth: {\n authToken: string;\n };\n context: {\n container?: {\n name?: string;\n version?: string;\n };\n developer: {\n name: string;\n };\n library: {\n name: string;\n version: string;\n };\n platform: {\n name: 'react-native';\n };\n };\n config?: {\n streetView?: boolean;\n appBar?: {\n color?: string;\n visible?: boolean;\n };\n };\n user: OkHiUser;\n}\n\n/**\n * @ignore\n */\nexport type OkHiLocationManagerStartMessage = 'select_location' | 'start_app';\n\n/**\n * @ignore\n */\nexport interface OkHiLocationManagerResponse {\n message:\n | 'location_selected'\n | 'location_created'\n | 'location_updated'\n | 'exit_app'\n | 'request_enable_protected_apps'\n | 'fatal_exit'\n | 'request_location_permission';\n payload: any;\n}\n"],"mappings":""}
|
|
@@ -20,6 +20,7 @@ export function initialize(configuration) {
|
|
|
20
20
|
await OkHiNativeModule.initialize(JSON.stringify(configuration));
|
|
21
21
|
} else {
|
|
22
22
|
await OkHiNativeModule.initializeIOS(configuration.credentials.branchId, configuration.credentials.clientKey, configuration.context.mode);
|
|
23
|
+
await OkHiNativeModule.onStart();
|
|
23
24
|
}
|
|
24
25
|
}
|
|
25
26
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Platform","AppState","OkHiNativeModule","errorHandler","okhiApplicationConfiguration","initialize","configuration","currentState","OS","JSON","stringify","initializeIOS","credentials","branchId","clientKey","context","mode","getApplicationConfiguration","_okhiApplicationConfi","_okhiApplicationConfi2","auth","token","getAuthToken","error"],"sources":["index.ts"],"sourcesContent":["import { Platform, AppState } from 'react-native';\nimport { OkHiNativeModule } from '../OkHiNativeModule';\nimport type { OkHiApplicationConfiguration } from './types';\nimport { errorHandler } from './_helpers';\nimport type { AuthApplicationConfig } from './_types';\n\nexport * from './types';\nexport * from './OkHiException';\nexport * from './OkHiMode';\nexport * from './Helpers';\n\nlet okhiApplicationConfiguration: OkHiApplicationConfiguration | undefined;\n\n/**\n * Initializes the OkHi library with provided API keys\n * @param {Object} configuration A configuration object with your OkHi credentials as well as library settings\n * @returns {Promise<void>} A promise that resolves when initialization is successful\n */\nexport function initialize(\n configuration: OkHiApplicationConfiguration\n): Promise<void> {\n return errorHandler(async () => {\n okhiApplicationConfiguration = configuration;\n if (AppState.currentState !== 'background') {\n if (Platform.OS === 'android') {\n await OkHiNativeModule.initialize(JSON.stringify(configuration));\n } else {\n await OkHiNativeModule.initializeIOS(\n configuration.credentials.branchId,\n configuration.credentials.clientKey,\n configuration.context.mode\n );\n }\n }\n });\n}\n\n/**\n * Obtains your current running configuration\n * @returns {Promise<void>} A promise that resolves with your application configuration\n */\nexport async function getApplicationConfiguration(): Promise<AuthApplicationConfig | null> {\n try {\n if (typeof okhiApplicationConfiguration === 'object') {\n return {\n ...okhiApplicationConfiguration,\n auth: {\n token: await OkHiNativeModule.getAuthToken(\n okhiApplicationConfiguration?.credentials.branchId || '',\n okhiApplicationConfiguration?.credentials.clientKey || ''\n ),\n },\n };\n }\n return null;\n } catch (error) {\n throw error;\n }\n}\n"],"mappings":"AAAA,SAASA,QAAQ,EAAEC,QAAQ,QAAQ,cAAc;AACjD,SAASC,gBAAgB,QAAQ,qBAAqB;AAEtD,SAASC,YAAY,QAAQ,YAAY;AAGzC,cAAc,SAAS;AACvB,cAAc,iBAAiB;AAC/B,cAAc,YAAY;AAC1B,cAAc,WAAW;AAEzB,IAAIC,4BAAsE;;AAE1E;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,UAAUA,CACxBC,aAA2C,EAC5B;EACf,OAAOH,YAAY,CAAC,YAAY;IAC9BC,4BAA4B,GAAGE,aAAa;IAC5C,IAAIL,QAAQ,CAACM,YAAY,KAAK,YAAY,EAAE;MAC1C,IAAIP,QAAQ,CAACQ,EAAE,KAAK,SAAS,EAAE;QAC7B,MAAMN,gBAAgB,CAACG,UAAU,CAACI,IAAI,CAACC,SAAS,CAACJ,aAAa,CAAC,CAAC;MAClE,CAAC,MAAM;QACL,MAAMJ,gBAAgB,CAACS,aAAa,CAClCL,aAAa,CAACM,WAAW,CAACC,QAAQ,EAClCP,aAAa,CAACM,WAAW,CAACE,SAAS,EACnCR,aAAa,CAACS,OAAO,CAACC,IACxB,CAAC;
|
|
1
|
+
{"version":3,"names":["Platform","AppState","OkHiNativeModule","errorHandler","okhiApplicationConfiguration","initialize","configuration","currentState","OS","JSON","stringify","initializeIOS","credentials","branchId","clientKey","context","mode","onStart","getApplicationConfiguration","_okhiApplicationConfi","_okhiApplicationConfi2","auth","token","getAuthToken","error"],"sources":["index.ts"],"sourcesContent":["import { Platform, AppState } from 'react-native';\nimport { OkHiNativeModule } from '../OkHiNativeModule';\nimport type { OkHiApplicationConfiguration } from './types';\nimport { errorHandler } from './_helpers';\nimport type { AuthApplicationConfig } from './_types';\n\nexport * from './types';\nexport * from './OkHiException';\nexport * from './OkHiMode';\nexport * from './Helpers';\n\nlet okhiApplicationConfiguration: OkHiApplicationConfiguration | undefined;\n\n/**\n * Initializes the OkHi library with provided API keys\n * @param {Object} configuration A configuration object with your OkHi credentials as well as library settings\n * @returns {Promise<void>} A promise that resolves when initialization is successful\n */\nexport function initialize(\n configuration: OkHiApplicationConfiguration\n): Promise<void> {\n return errorHandler(async () => {\n okhiApplicationConfiguration = configuration;\n if (AppState.currentState !== 'background') {\n if (Platform.OS === 'android') {\n await OkHiNativeModule.initialize(JSON.stringify(configuration));\n } else {\n await OkHiNativeModule.initializeIOS(\n configuration.credentials.branchId,\n configuration.credentials.clientKey,\n configuration.context.mode\n );\n await OkHiNativeModule.onStart();\n }\n }\n });\n}\n\n/**\n * Obtains your current running configuration\n * @returns {Promise<void>} A promise that resolves with your application configuration\n */\nexport async function getApplicationConfiguration(): Promise<AuthApplicationConfig | null> {\n try {\n if (typeof okhiApplicationConfiguration === 'object') {\n return {\n ...okhiApplicationConfiguration,\n auth: {\n token: await OkHiNativeModule.getAuthToken(\n okhiApplicationConfiguration?.credentials.branchId || '',\n okhiApplicationConfiguration?.credentials.clientKey || ''\n ),\n },\n };\n }\n return null;\n } catch (error) {\n throw error;\n }\n}\n"],"mappings":"AAAA,SAASA,QAAQ,EAAEC,QAAQ,QAAQ,cAAc;AACjD,SAASC,gBAAgB,QAAQ,qBAAqB;AAEtD,SAASC,YAAY,QAAQ,YAAY;AAGzC,cAAc,SAAS;AACvB,cAAc,iBAAiB;AAC/B,cAAc,YAAY;AAC1B,cAAc,WAAW;AAEzB,IAAIC,4BAAsE;;AAE1E;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,UAAUA,CACxBC,aAA2C,EAC5B;EACf,OAAOH,YAAY,CAAC,YAAY;IAC9BC,4BAA4B,GAAGE,aAAa;IAC5C,IAAIL,QAAQ,CAACM,YAAY,KAAK,YAAY,EAAE;MAC1C,IAAIP,QAAQ,CAACQ,EAAE,KAAK,SAAS,EAAE;QAC7B,MAAMN,gBAAgB,CAACG,UAAU,CAACI,IAAI,CAACC,SAAS,CAACJ,aAAa,CAAC,CAAC;MAClE,CAAC,MAAM;QACL,MAAMJ,gBAAgB,CAACS,aAAa,CAClCL,aAAa,CAACM,WAAW,CAACC,QAAQ,EAClCP,aAAa,CAACM,WAAW,CAACE,SAAS,EACnCR,aAAa,CAACS,OAAO,CAACC,IACxB,CAAC;QACD,MAAMd,gBAAgB,CAACe,OAAO,CAAC,CAAC;MAClC;IACF;EACF,CAAC,CAAC;AACJ;;AAEA;AACA;AACA;AACA;AACA,OAAO,eAAeC,2BAA2BA,CAAA,EAA0C;EACzF,IAAI;IACF,IAAI,OAAOd,4BAA4B,KAAK,QAAQ,EAAE;MAAA,IAAAe,qBAAA,EAAAC,sBAAA;MACpD,OAAO;QACL,GAAGhB,4BAA4B;QAC/BiB,IAAI,EAAE;UACJC,KAAK,EAAE,MAAMpB,gBAAgB,CAACqB,YAAY,CACxC,EAAAJ,qBAAA,GAAAf,4BAA4B,cAAAe,qBAAA,uBAA5BA,qBAAA,CAA8BP,WAAW,CAACC,QAAQ,KAAI,EAAE,EACxD,EAAAO,sBAAA,GAAAhB,4BAA4B,cAAAgB,sBAAA,uBAA5BA,sBAAA,CAA8BR,WAAW,CAACE,SAAS,KAAI,EACzD;QACF;MACF,CAAC;IACH;IACA,OAAO,IAAI;EACb,CAAC,CAAC,OAAOU,KAAK,EAAE;IACd,MAAMA,KAAK;EACb;AACF"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
export {};
|
|
2
2
|
//# sourceMappingURL=types.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["/**\n * Defines the structure of the user object requried by OkHi services and libraries.\n */\nexport interface OkHiUser {\n /**\n * The user's phone number. Must be MSISDN standard format. e.g +254712345678.\n */\n phone: string;\n /**\n * The user's first name.\n */\n firstName?: string;\n /**\n * The user's last name.\n */\n lastName?: string;\n /**\n * The user's email address.\n */\n email?: string;\n /**\n * The OkHi's userId. Usually obtained after a user successfully creates an OkHi address.\n */\n id?: string;\n\n /**\n * The user's device firebase push notification token.\n */\n fcmPushNotificationToken?: string;\n}\n\n/**\n * Defines the current mode you'll be using OkHi's services as well as your application's meta information.\n */\nexport interface OkHiAppContext {\n /**\n * The current mode you'll be using OkHi services.\n */\n mode: 'sandbox' | 'prod' | string;\n /**\n * Your application's meta information.\n */\n app?: {\n /**\n * Your application's name.\n */\n name: string;\n /**\n * Your application's current version.\n */\n version: string;\n /**\n * Your application's current build number.\n */\n build: number;\n };\n /**\n * Meta information about the current developer.\n */\n developer?: string;\n}\n\n/**\n * Defines the structure of the OkHi location object once an address has been successfully created by the user.\n */\nexport interface OkHiLocation {\n /**\n * The latitude of the location.\n */\n lat: number;\n /**\n * The longitude of the location.\n */\n lon: number;\n /**\n * The OkHi's locationId. Usually obtained once an address has been successfully created by the user.\n */\n id?: string;\n /**\n * The id of a common residential or geological space such as apartment building or office block.\n */\n placeId?: string;\n /**\n * Geocode system for identifying an area anywhere on the Earth.\n * See https://plus.codes/\n */\n plusCode?: string;\n /**\n * The location's property name.\n */\n propertyName?: string;\n /**\n * The location's street name.\n */\n streetName?: string;\n /**\n * A string that can be used to render information about the location.\n */\n title?: string;\n /**\n * A string that can be used to render meta information about the location.\n */\n subtitle?: string;\n /**\n * User generated directions to the location.\n */\n directions?: string;\n /**\n * User generated meta information about the location, how to access it and any other relevant notes.\n */\n otherInformation?: string;\n /**\n * A link to the user's address visible on browser or desktop.\n */\n url?: string;\n /**\n * A Google's StreetView Panorama Id, if the address was created using Google StreetView.\n * See: https://developers.google.com/maps/documentation/javascript/streetview\n */\n streetViewPanoId?: string;\n /**\n * A Google's StreetView Panorama Url, if the address was created using Google StreetView.\n * See: https://developers.google.com/maps/documentation/javascript/streetview\n */\n streetViewPanoUrl?: string;\n /**\n * The OkHi's userId. Usually obtained after a user successfully creates an OkHi address.\n */\n userId?: string;\n /**\n * The location's property number.\n */\n propertyNumber?: string;\n /**\n * A link to the location's gate photo.\n */\n photo?: string;\n\n /**\n * A user's country\n */\n country?: string;\n\n /**\n * A user's city\n */\n city?: string;\n\n /**\n * A user's state\n */\n state?: string;\n\n /**\n * A formatted location information\n */\n displayTitle?: string;\n\n /**\n * A user's country code\n */\n countryCode?: string;\n}\n\n/**\n * @ignore\n */\nexport interface OkHiError {\n code: string;\n message: string;\n}\n\nexport type OkHiApplicationConfiguration = {\n credentials: {\n branchId: string;\n clientKey: string;\n };\n context: {\n mode: 'sandbox' | 'prod';\n developer?: 'okhi' | 'external';\n };\n app?: {\n name?: string;\n version?: string;\n build?: string;\n };\n notification?: {\n title: string;\n text: string;\n channelId: string;\n channelName: string;\n channelDescription: string;\n };\n};\n\nexport type LocationPermissionStatus =\n | 'notDetermined'\n | 'restricted'\n | 'denied'\n | 'authorizedAlways'\n | 'authorizedWhenInUse'\n | 'authorized'\n | 'unknown';\n\nexport type LocationPermissionStatusCallback =\n | LocationPermissionStatus\n | 'rationaleDissmissed';\nexport type LocationRequestPermissionType = 'whenInUse' | 'always';\n\nexport type LocationPermissionCallback = (\n status: LocationPermissionStatusCallback | null,\n error:
|
|
1
|
+
{"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import type { OkHiException } from './OkHiException';\n\n/**\n * Defines the structure of the user object requried by OkHi services and libraries.\n */\nexport interface OkHiUser {\n /**\n * The user's phone number. Must be MSISDN standard format. e.g +254712345678.\n */\n phone: string;\n /**\n * The user's first name.\n */\n firstName?: string;\n /**\n * The user's last name.\n */\n lastName?: string;\n /**\n * The user's email address.\n */\n email?: string;\n /**\n * The OkHi's userId. Usually obtained after a user successfully creates an OkHi address.\n */\n id?: string;\n\n /**\n * The user's device firebase push notification token.\n */\n fcmPushNotificationToken?: string;\n}\n\n/**\n * Defines the current mode you'll be using OkHi's services as well as your application's meta information.\n */\nexport interface OkHiAppContext {\n /**\n * The current mode you'll be using OkHi services.\n */\n mode: 'sandbox' | 'prod' | string;\n /**\n * Your application's meta information.\n */\n app?: {\n /**\n * Your application's name.\n */\n name: string;\n /**\n * Your application's current version.\n */\n version: string;\n /**\n * Your application's current build number.\n */\n build: number;\n };\n /**\n * Meta information about the current developer.\n */\n developer?: string;\n}\n\n/**\n * Defines the structure of the OkHi location object once an address has been successfully created by the user.\n */\nexport interface OkHiLocation {\n /**\n * The latitude of the location.\n */\n lat: number;\n /**\n * The longitude of the location.\n */\n lon: number;\n /**\n * The OkHi's locationId. Usually obtained once an address has been successfully created by the user.\n */\n id?: string;\n /**\n * The id of a common residential or geological space such as apartment building or office block.\n */\n placeId?: string;\n /**\n * Geocode system for identifying an area anywhere on the Earth.\n * See https://plus.codes/\n */\n plusCode?: string;\n /**\n * The location's property name.\n */\n propertyName?: string;\n /**\n * The location's street name.\n */\n streetName?: string;\n /**\n * A string that can be used to render information about the location.\n */\n title?: string;\n /**\n * A string that can be used to render meta information about the location.\n */\n subtitle?: string;\n /**\n * User generated directions to the location.\n */\n directions?: string;\n /**\n * User generated meta information about the location, how to access it and any other relevant notes.\n */\n otherInformation?: string;\n /**\n * A link to the user's address visible on browser or desktop.\n */\n url?: string;\n /**\n * A Google's StreetView Panorama Id, if the address was created using Google StreetView.\n * See: https://developers.google.com/maps/documentation/javascript/streetview\n */\n streetViewPanoId?: string;\n /**\n * A Google's StreetView Panorama Url, if the address was created using Google StreetView.\n * See: https://developers.google.com/maps/documentation/javascript/streetview\n */\n streetViewPanoUrl?: string;\n /**\n * The OkHi's userId. Usually obtained after a user successfully creates an OkHi address.\n */\n userId?: string;\n /**\n * The location's property number.\n */\n propertyNumber?: string;\n /**\n * A link to the location's gate photo.\n */\n photo?: string;\n\n /**\n * A user's country\n */\n country?: string;\n\n /**\n * A user's city\n */\n city?: string;\n\n /**\n * A user's state\n */\n state?: string;\n\n /**\n * A formatted location information\n */\n displayTitle?: string;\n\n /**\n * A user's country code\n */\n countryCode?: string;\n}\n\n/**\n * @ignore\n */\nexport interface OkHiError {\n code: string;\n message: string;\n}\n\nexport type OkHiApplicationConfiguration = {\n credentials: {\n branchId: string;\n clientKey: string;\n };\n context: {\n mode: 'sandbox' | 'prod';\n developer?: 'okhi' | 'external';\n };\n app?: {\n name?: string;\n version?: string;\n build?: string;\n };\n notification?: {\n title: string;\n text: string;\n channelId: string;\n channelName: string;\n channelDescription: string;\n };\n};\n\nexport type LocationPermissionStatus =\n | 'notDetermined'\n | 'restricted'\n | 'denied'\n | 'authorizedAlways'\n | 'authorizedWhenInUse'\n | 'authorized'\n | 'unknown';\n\nexport type LocationPermissionStatusCallback =\n | LocationPermissionStatus\n | 'rationaleDissmissed';\nexport type LocationRequestPermissionType = 'whenInUse' | 'always';\n\nexport type LocationPermissionCallback = (\n status: LocationPermissionStatusCallback | null,\n error: OkHiException | null\n) => any;\n"],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["NativeModules","NativeEventEmitter","Platform","LINKING_ERROR","select","ios","default","OkHiNativeModule","Okhi","Proxy","get","Error","OkHiNativeEvents","addListener"],"sources":["index.ts"],"sourcesContent":["import { NativeModules, NativeEventEmitter, Platform } from 'react-native';\nimport type { OkVerifyStartConfiguration } from '../OkVerify/types';\n\nconst LINKING_ERROR =\n `The package 'react-native-okhi' doesn't seem to be linked. Make sure: \\n\\n` +\n Platform.select({ ios: \"- You have run 'pod install'\\n\", default: '' }) +\n '- You rebuilt the app after installing the package\\n' +\n '- You are not using Expo managed workflow\\n';\n\ntype OkHiNativeModuleType = {\n isLocationServicesEnabled(): Promise<boolean>;\n isLocationPermissionGranted(): Promise<boolean>;\n isBackgroundLocationPermissionGranted(): Promise<boolean>;\n requestLocationPermission(): Promise<boolean>;\n requestBackgroundLocationPermission(): Promise<boolean>;\n requestEnableLocationServices(): Promise<boolean>;\n isGooglePlayServicesAvailable(): Promise<boolean>;\n requestEnableGooglePlayServices(): Promise<boolean>;\n getSystemVersion(): Promise<number | string>;\n getAuthToken(branchId: string, clientKey: string): Promise<string>;\n initialize(configuration: string): Promise<void>;\n startAddressVerification(\n phoneNumber: string,\n locationId: string,\n lat: Number,\n lon: Number,\n configuration?: OkVerifyStartConfiguration,\n fcmPushNotificationToken?: string\n ): Promise<string>;\n stopAddressVerification(\n phoneNumber: string,\n locationId: string\n ): Promise<string>;\n startForegroundService(): Promise<boolean>;\n stopForegroundService(): Promise<boolean>;\n isForegroundServiceRunning(): Promise<boolean>;\n initializeIOS(\n branchId: string,\n clientKey: string,\n environment: string\n ): Promise<boolean>;\n openAppSettings(): Promise<void>;\n retriveLocationPermissionStatus(): Promise<string>;\n requestTrackingAuthorization(): Promise<string | null>;\n canOpenProtectedAppsSettings(): Promise<boolean>;\n openProtectedAppsSettings(): Promise<boolean>;\n retrieveDeviceInfo(): Promise<{
|
|
1
|
+
{"version":3,"names":["NativeModules","NativeEventEmitter","Platform","LINKING_ERROR","select","ios","default","OkHiNativeModule","Okhi","Proxy","get","Error","OkHiNativeEvents","addListener"],"sources":["index.ts"],"sourcesContent":["import { NativeModules, NativeEventEmitter, Platform } from 'react-native';\nimport type { OkVerifyStartConfiguration } from '../OkVerify/types';\n\nconst LINKING_ERROR =\n `The package 'react-native-okhi' doesn't seem to be linked. Make sure: \\n\\n` +\n Platform.select({ ios: \"- You have run 'pod install'\\n\", default: '' }) +\n '- You rebuilt the app after installing the package\\n' +\n '- You are not using Expo managed workflow\\n';\n\ntype OkHiNativeModuleType = {\n isLocationServicesEnabled(): Promise<boolean>;\n isLocationPermissionGranted(): Promise<boolean>;\n isBackgroundLocationPermissionGranted(): Promise<boolean>;\n requestLocationPermission(): Promise<boolean>;\n requestBackgroundLocationPermission(): Promise<boolean>;\n requestEnableLocationServices(): Promise<boolean>;\n isGooglePlayServicesAvailable(): Promise<boolean>;\n requestEnableGooglePlayServices(): Promise<boolean>;\n getSystemVersion(): Promise<number | string>;\n getAuthToken(branchId: string, clientKey: string): Promise<string>;\n initialize(configuration: string): Promise<void>;\n startAddressVerification(\n phoneNumber: string,\n locationId: string,\n lat: Number,\n lon: Number,\n configuration?: OkVerifyStartConfiguration,\n fcmPushNotificationToken?: string\n ): Promise<string>;\n stopAddressVerification(\n phoneNumber: string,\n locationId: string\n ): Promise<string>;\n startForegroundService(): Promise<boolean>;\n stopForegroundService(): Promise<boolean>;\n isForegroundServiceRunning(): Promise<boolean>;\n initializeIOS(\n branchId: string,\n clientKey: string,\n environment: string\n ): Promise<boolean>;\n openAppSettings(): Promise<void>;\n retriveLocationPermissionStatus(): Promise<string>;\n requestTrackingAuthorization(): Promise<string | null>;\n canOpenProtectedAppsSettings(): Promise<boolean>;\n openProtectedAppsSettings(): Promise<boolean>;\n retrieveDeviceInfo(): Promise<{\n manufacturer: string;\n model: string;\n osVersion: string;\n platform: 'android' | 'ios';\n }>;\n setItem(key: string, value: string): Promise<boolean>;\n onNewToken(fcmPushNotificationToken: string): Promise<boolean>;\n onMessageReceived(): Promise<boolean>;\n isNotificationPermissionGranted(): Promise<boolean>;\n requestNotificationPermission(): Promise<boolean>;\n fetchCurrentLocation(): Promise<null | {\n lat: number;\n lng: number;\n accuracy: number;\n }>;\n fetchIOSLocationPermissionStatus(): Promise<\n | 'notDetermined'\n | 'restricted'\n | 'denied'\n | 'authorizedAlways'\n | 'authorizedWhenInUse'\n | 'authorized'\n | 'unknown'\n >;\n onStart(): Promise<boolean>;\n};\n\nexport const OkHiNativeModule: OkHiNativeModuleType = NativeModules.Okhi\n ? NativeModules.Okhi\n : new Proxy(\n {},\n {\n get() {\n throw new Error(LINKING_ERROR);\n },\n }\n );\n\nexport const OkHiNativeEvents = new NativeEventEmitter(NativeModules.Okhi);\n\nOkHiNativeEvents.addListener('onLocationPermissionStatusUpdate', () => null);\n"],"mappings":"AAAA,SAASA,aAAa,EAAEC,kBAAkB,EAAEC,QAAQ,QAAQ,cAAc;AAG1E,MAAMC,aAAa,GAChB,4EAA2E,GAC5ED,QAAQ,CAACE,MAAM,CAAC;EAAEC,GAAG,EAAE,gCAAgC;EAAEC,OAAO,EAAE;AAAG,CAAC,CAAC,GACvE,sDAAsD,GACtD,6CAA6C;AAmE/C,OAAO,MAAMC,gBAAsC,GAAGP,aAAa,CAACQ,IAAI,GACpER,aAAa,CAACQ,IAAI,GAClB,IAAIC,KAAK,CACP,CAAC,CAAC,EACF;EACEC,GAAGA,CAAA,EAAG;IACJ,MAAM,IAAIC,KAAK,CAACR,aAAa,CAAC;EAChC;AACF,CACF,CAAC;AAEL,OAAO,MAAMS,gBAAgB,GAAG,IAAIX,kBAAkB,CAACD,aAAa,CAACQ,IAAI,CAAC;AAE1EI,gBAAgB,CAACC,WAAW,CAAC,kCAAkC,EAAE,MAAM,IAAI,CAAC"}
|
|
@@ -76,6 +76,7 @@ export interface OkHiLocationManagerProps {
|
|
|
76
76
|
home?: boolean;
|
|
77
77
|
work?: boolean;
|
|
78
78
|
};
|
|
79
|
+
permissionsOnboarding?: boolean;
|
|
79
80
|
};
|
|
80
81
|
/**
|
|
81
82
|
* **Optional:** Enable a user to either select an existing address, or force to create a new one
|
|
@@ -129,9 +130,6 @@ export type OkHiLocationManagerStartMessage = 'select_location' | 'start_app';
|
|
|
129
130
|
* @ignore
|
|
130
131
|
*/
|
|
131
132
|
export interface OkHiLocationManagerResponse {
|
|
132
|
-
message: 'location_selected' | 'location_created' | 'location_updated' | 'exit_app' | 'request_enable_protected_apps' | 'fatal_exit';
|
|
133
|
-
payload:
|
|
134
|
-
user: any;
|
|
135
|
-
location: any;
|
|
136
|
-
};
|
|
133
|
+
message: 'location_selected' | 'location_created' | 'location_updated' | 'exit_app' | 'request_enable_protected_apps' | 'fatal_exit' | 'request_location_permission';
|
|
134
|
+
payload: any;
|
|
137
135
|
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { OkHiException } from './OkHiException';
|
|
1
2
|
/**
|
|
2
3
|
* Defines the structure of the user object requried by OkHi services and libraries.
|
|
3
4
|
*/
|
|
@@ -185,4 +186,4 @@ export type OkHiApplicationConfiguration = {
|
|
|
185
186
|
export type LocationPermissionStatus = 'notDetermined' | 'restricted' | 'denied' | 'authorizedAlways' | 'authorizedWhenInUse' | 'authorized' | 'unknown';
|
|
186
187
|
export type LocationPermissionStatusCallback = LocationPermissionStatus | 'rationaleDissmissed';
|
|
187
188
|
export type LocationRequestPermissionType = 'whenInUse' | 'always';
|
|
188
|
-
export type LocationPermissionCallback = (status: LocationPermissionStatusCallback | null, error:
|
|
189
|
+
export type LocationPermissionCallback = (status: LocationPermissionStatusCallback | null, error: OkHiException | null) => any;
|
|
@@ -26,6 +26,8 @@ type OkHiNativeModuleType = {
|
|
|
26
26
|
retrieveDeviceInfo(): Promise<{
|
|
27
27
|
manufacturer: string;
|
|
28
28
|
model: string;
|
|
29
|
+
osVersion: string;
|
|
30
|
+
platform: 'android' | 'ios';
|
|
29
31
|
}>;
|
|
30
32
|
setItem(key: string, value: string): Promise<boolean>;
|
|
31
33
|
onNewToken(fcmPushNotificationToken: string): Promise<boolean>;
|
|
@@ -38,6 +40,7 @@ type OkHiNativeModuleType = {
|
|
|
38
40
|
accuracy: number;
|
|
39
41
|
}>;
|
|
40
42
|
fetchIOSLocationPermissionStatus(): Promise<'notDetermined' | 'restricted' | 'denied' | 'authorizedAlways' | 'authorizedWhenInUse' | 'authorized' | 'unknown'>;
|
|
43
|
+
onStart(): Promise<boolean>;
|
|
41
44
|
};
|
|
42
45
|
export declare const OkHiNativeModule: OkHiNativeModuleType;
|
|
43
46
|
export declare const OkHiNativeEvents: NativeEventEmitter;
|