react-native-okhi 1.0.14 → 1.0.15-beta.3
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/ios/Okhi.m +1 -0
- package/ios/Okhi.swift +25 -5
- package/lib/commonjs/OkCollect/app.json +1 -1
- package/lib/commonjs/OkCore/Helpers.js +27 -1
- package/lib/commonjs/OkCore/Helpers.js.map +1 -1
- package/lib/commonjs/OkHiNativeModule/index.js.map +1 -1
- package/lib/module/OkCollect/app.json +1 -1
- package/lib/module/OkCore/Helpers.js +23 -0
- package/lib/module/OkCore/Helpers.js.map +1 -1
- package/lib/module/OkHiNativeModule/index.js.map +1 -1
- package/lib/typescript/OkCore/Helpers.d.ts +14 -0
- package/lib/typescript/OkHiNativeModule/index.d.ts +1 -0
- package/package.json +1 -1
- package/react-native-okhi.podspec +1 -1
- package/src/OkCollect/app.json +1 -1
- package/src/OkCore/Helpers.ts +22 -0
- package/src/OkHiNativeModule/index.ts +1 -0
package/ios/Okhi.m
CHANGED
|
@@ -37,4 +37,5 @@ RCT_EXTERN_METHOD(stopAddressVerification:(NSString *)phoneNumber locationId:(NS
|
|
|
37
37
|
|
|
38
38
|
RCT_EXTERN_METHOD(retriveLocationPermissionStatus: (RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject)
|
|
39
39
|
|
|
40
|
+
RCT_EXTERN_METHOD(requestTrackingAuthorization: (RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject)
|
|
40
41
|
@end
|
package/ios/Okhi.swift
CHANGED
|
@@ -13,6 +13,8 @@ class Okhi: RCTEventEmitter {
|
|
|
13
13
|
private var reject: RCTPromiseRejectBlock?
|
|
14
14
|
private var initResolve: RCTPromiseResolveBlock?
|
|
15
15
|
private var initReject: RCTPromiseRejectBlock?
|
|
16
|
+
private var didChangeLocationPermissionStatusResolve: RCTPromiseResolveBlock?
|
|
17
|
+
private var didChangeLocationPermissionStatusReject: RCTPromiseRejectBlock?
|
|
16
18
|
private var okVerify: OkVerify
|
|
17
19
|
|
|
18
20
|
|
|
@@ -47,14 +49,16 @@ class Okhi: RCTEventEmitter {
|
|
|
47
49
|
resolve(UIDevice.current.systemVersion)
|
|
48
50
|
}
|
|
49
51
|
|
|
50
|
-
@objc func requestLocationPermission(_ resolve:@escaping RCTPromiseResolveBlock, reject
|
|
51
|
-
self.
|
|
52
|
+
@objc func requestLocationPermission(_ resolve:@escaping RCTPromiseResolveBlock, reject:@escaping RCTPromiseRejectBlock) {
|
|
53
|
+
self.didChangeLocationPermissionStatusResolve = resolve
|
|
54
|
+
self.didChangeLocationPermissionStatusReject = reject
|
|
52
55
|
currentLocationPermissionRequestType = .whenInUse
|
|
53
56
|
okVerify.requestLocationPermission()
|
|
54
57
|
}
|
|
55
58
|
|
|
56
|
-
@objc func requestBackgroundLocationPermission(_ resolve:@escaping RCTPromiseResolveBlock, reject
|
|
57
|
-
self.
|
|
59
|
+
@objc func requestBackgroundLocationPermission(_ resolve:@escaping RCTPromiseResolveBlock, reject:@escaping RCTPromiseRejectBlock) {
|
|
60
|
+
self.didChangeLocationPermissionStatusResolve = resolve
|
|
61
|
+
self.didChangeLocationPermissionStatusReject = reject
|
|
58
62
|
currentLocationPermissionRequestType = .always
|
|
59
63
|
okVerify.requestBackgroundLocationPermission()
|
|
60
64
|
}
|
|
@@ -99,6 +103,20 @@ class Okhi: RCTEventEmitter {
|
|
|
99
103
|
resolve(status)
|
|
100
104
|
}
|
|
101
105
|
|
|
106
|
+
@objc func requestTrackingAuthorization(_ resolve:@escaping RCTPromiseResolveBlock, reject:RCTPromiseRejectBlock) {
|
|
107
|
+
if #available(iOS 14.0, *) {
|
|
108
|
+
OkAnalytics.requestTrackingAuthorization { trackingId in
|
|
109
|
+
if let id = trackingId {
|
|
110
|
+
resolve(id)
|
|
111
|
+
} else {
|
|
112
|
+
resolve(NSNull())
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
} else {
|
|
116
|
+
resolve(NSNull())
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
|
|
102
120
|
override func supportedEvents() -> [String]! {
|
|
103
121
|
return ["onLocationPermissionStatusUpdate"]
|
|
104
122
|
}
|
|
@@ -143,7 +161,7 @@ extension Okhi: OkVerifyDelegate {
|
|
|
143
161
|
}
|
|
144
162
|
|
|
145
163
|
func verify(_ okverify: OkVerify, didChangeLocationPermissionStatus requestType: OkVerifyLocationPermissionRequestType, status: Bool) {
|
|
146
|
-
if let resolve = self.
|
|
164
|
+
if let resolve = self.didChangeLocationPermissionStatusResolve {
|
|
147
165
|
if currentLocationPermissionRequestType == .whenInUse && requestType == .whenInUse {
|
|
148
166
|
resolve(status)
|
|
149
167
|
} else if currentLocationPermissionRequestType == .always && requestType == .always {
|
|
@@ -151,6 +169,8 @@ extension Okhi: OkVerifyDelegate {
|
|
|
151
169
|
} else {
|
|
152
170
|
resolve(false)
|
|
153
171
|
}
|
|
172
|
+
self.didChangeLocationPermissionStatusResolve = nil
|
|
173
|
+
self.didChangeLocationPermissionStatusReject = nil
|
|
154
174
|
}
|
|
155
175
|
}
|
|
156
176
|
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.retriveLocationPermissionStatus = exports.requestLocationPermission = exports.requestEnableLocationServices = exports.requestEnableGooglePlayServices = exports.requestBackgroundLocationPermission = exports.request = exports.openAppSettings = exports.isLocationServicesEnabled = exports.isLocationPermissionGranted = exports.isGooglePlayServicesAvailable = exports.isBackgroundLocationPermissionGranted = exports.getSystemVersion = void 0;
|
|
6
|
+
exports.retriveLocationPermissionStatus = exports.requestTrackingAuthorization = exports.requestLocationPermission = exports.requestEnableLocationServices = exports.requestEnableGooglePlayServices = exports.requestBackgroundLocationPermission = exports.request = exports.openAppSettings = exports.isLocationServicesEnabled = exports.isLocationPermissionGranted = exports.isGooglePlayServicesAvailable = exports.isBackgroundLocationPermissionGranted = exports.getSystemVersion = void 0;
|
|
7
7
|
|
|
8
8
|
var _OkHiNativeModule = require("../OkHiNativeModule");
|
|
9
9
|
|
|
@@ -156,6 +156,10 @@ const requestEnableGooglePlayServices = () => {
|
|
|
156
156
|
exports.requestEnableGooglePlayServices = requestEnableGooglePlayServices;
|
|
157
157
|
|
|
158
158
|
const getSystemVersion = () => (0, _helpers.isValidPlatform)(_OkHiNativeModule.OkHiNativeModule.getSystemVersion);
|
|
159
|
+
/**
|
|
160
|
+
* Requests location permission from the user. It'll also attempt to activate any disbaled services (Android Only)
|
|
161
|
+
*/
|
|
162
|
+
|
|
159
163
|
|
|
160
164
|
exports.getSystemVersion = getSystemVersion;
|
|
161
165
|
|
|
@@ -280,12 +284,20 @@ const request = (locationPermissionType, rationale, callback) => {
|
|
|
280
284
|
}
|
|
281
285
|
}).catch(handleError);
|
|
282
286
|
};
|
|
287
|
+
/**
|
|
288
|
+
* Open the device's app settings.
|
|
289
|
+
*/
|
|
290
|
+
|
|
283
291
|
|
|
284
292
|
exports.request = request;
|
|
285
293
|
|
|
286
294
|
const openAppSettings = () => {
|
|
287
295
|
_OkHiNativeModule.OkHiNativeModule.openAppSettings();
|
|
288
296
|
};
|
|
297
|
+
/**
|
|
298
|
+
* Retrives the location permission status from the device
|
|
299
|
+
*/
|
|
300
|
+
|
|
289
301
|
|
|
290
302
|
exports.openAppSettings = openAppSettings;
|
|
291
303
|
|
|
@@ -303,6 +315,20 @@ const retriveLocationPermissionStatus = async () => {
|
|
|
303
315
|
const whenInUsePerm = await isLocationPermissionGranted();
|
|
304
316
|
return whenInUsePerm ? 'authorizedWhenInUse' : 'denied';
|
|
305
317
|
};
|
|
318
|
+
/**
|
|
319
|
+
* Requests tracking authorization from the user. iOS only, iOS version >= 14
|
|
320
|
+
* Read more: https://developer.apple.com/app-store/user-privacy-and-data-use/
|
|
321
|
+
*/
|
|
322
|
+
|
|
306
323
|
|
|
307
324
|
exports.retriveLocationPermissionStatus = retriveLocationPermissionStatus;
|
|
325
|
+
|
|
326
|
+
const requestTrackingAuthorization = async () => {
|
|
327
|
+
return (0, _helpers.isValidPlatform)(async () => {
|
|
328
|
+
const result = await _OkHiNativeModule.OkHiNativeModule.requestTrackingAuthorization();
|
|
329
|
+
return result;
|
|
330
|
+
}, 'ios');
|
|
331
|
+
};
|
|
332
|
+
|
|
333
|
+
exports.requestTrackingAuthorization = requestTrackingAuthorization;
|
|
308
334
|
//# sourceMappingURL=Helpers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["Helpers.ts"],"names":["isLocationServicesEnabled","OkHiNativeModule","isLocationPermissionGranted","isBackgroundLocationPermissionGrantedAndroid","sdkVersion","getSystemVersion","hasPermission","PermissionsAndroid","check","PERMISSIONS","ACCESS_BACKGROUND_LOCATION","isBackgroundLocationPermissionGrantedIOS","isBackgroundLocationPermissionGranted","fn","Platform","OS","requestLocationPermissionAndroid","status","requestMultiple","ACCESS_FINE_LOCATION","ACCESS_COARSE_LOCATION","requestLocationPermissionIOS","requestLocationPermission","isGranted","requestBackgroundLocationPermissionAndroid","permissions","requestBackgroundLocationPermissionIOS","requestBackgroundLocationPermission","requestEnableLocationServices","isGooglePlayServicesAvailable","requestEnableGooglePlayServices","request","locationPermissionType","rationale","callback","serviceError","OkHiException","code","SERVICE_UNAVAILABLE_CODE","message","googlePlayError","handleError","error","handleGooglePlayServiceRequest","then","googlePlayStatus","handleRationaleRequest","handleRationaleAlert","alertRationale","Promise","resolve","_","Alert","alert","title","text","grantButton","label","onPress","denyButton","style","onDismiss","handlePermissionRequest","OkHiNativeEvents","removeAllListeners","addListener","permissionUpdate","whenInUseResult","initialWhenInUseResult","alwaysResult","currentStatus","retriveLocationPermissionStatus","showRationale","result","serviceStatus","enableResult","catch","openAppSettings","alwaysPerm","whenInUsePerm"],"mappings":"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","sourcesContent":["import { OkHiNativeModule, OkHiNativeEvents } from '../OkHiNativeModule';\nimport { Alert, PermissionsAndroid, Platform } from 'react-native';\nimport { errorHandler, isValidPlatform } from './_helpers';\nimport type {\n LocationPermissionCallback,\n LocationPermissionStatus,\n LocationRequestPermissionType,\n} from './types';\nimport { OkHiException } from './OkHiException';\n\n/**\n * Checks whether location services are enabled\n * @returns {Promise<boolean>} A promise that resolves to a boolen value indicating whether the service is available\n */\nexport const isLocationServicesEnabled = (): Promise<boolean> => {\n return isValidPlatform(OkHiNativeModule.isLocationServicesEnabled);\n};\n\n/**\n * Checks whether when in use location permission is granted\n * @returns {Promise<boolean>} A promise that resolves to a boolen value indicating whether the permission is granted\n */\nexport const isLocationPermissionGranted = (): Promise<boolean> => {\n return isValidPlatform(OkHiNativeModule.isLocationPermissionGranted);\n};\n\nconst isBackgroundLocationPermissionGrantedAndroid =\n async (): Promise<boolean> => {\n const sdkVersion = await OkHiNativeModule.getSystemVersion();\n if (sdkVersion < 23) {\n return true;\n }\n if (sdkVersion < 29) {\n return await isLocationPermissionGranted();\n }\n const hasPermission = await PermissionsAndroid.check(\n PermissionsAndroid.PERMISSIONS.ACCESS_BACKGROUND_LOCATION\n );\n return hasPermission;\n };\n\nconst isBackgroundLocationPermissionGrantedIOS = (): Promise<boolean> => {\n return OkHiNativeModule.isBackgroundLocationPermissionGranted();\n};\n\n/**\n * Checks whether background location permission is granted\n * @returns {Promise<boolean>} A promise that resolves to a boolen value indicating whether the permission is granted\n */\nexport const isBackgroundLocationPermissionGranted = (): Promise<boolean> => {\n const fn =\n Platform.OS === 'android'\n ? isBackgroundLocationPermissionGrantedAndroid\n : isBackgroundLocationPermissionGrantedIOS;\n return isValidPlatform(fn);\n};\n\nconst requestLocationPermissionAndroid = async (): Promise<boolean> => {\n const status: any = await PermissionsAndroid.requestMultiple([\n PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION,\n PermissionsAndroid.PERMISSIONS.ACCESS_COARSE_LOCATION,\n ]);\n return status['android.permission.ACCESS_FINE_LOCATION'] === 'granted';\n};\n\nconst requestLocationPermissionIOS = (): Promise<boolean> => {\n return OkHiNativeModule.requestLocationPermission();\n};\n\n/**\n * Requests for when in use location permission\n * @returns {Promise<boolean>} A promise that resolves to a boolen value indicating whether the permission is granted\n */\nexport const requestLocationPermission = async (): Promise<boolean> => {\n const isGranted = await isLocationPermissionGranted();\n if (isGranted) return isGranted;\n return errorHandler(\n Platform.OS === 'android'\n ? requestLocationPermissionAndroid\n : requestLocationPermissionIOS\n );\n};\n\nconst requestBackgroundLocationPermissionAndroid =\n async (): Promise<boolean> => {\n const sdkVersion = await OkHiNativeModule.getSystemVersion();\n if (sdkVersion < 23) return true;\n if (sdkVersion >= 29) {\n const permissions: any = [\n PermissionsAndroid.PERMISSIONS.ACCESS_BACKGROUND_LOCATION,\n ];\n const status: any = await PermissionsAndroid.requestMultiple(permissions);\n return (\n status['android.permission.ACCESS_BACKGROUND_LOCATION'] === 'granted'\n );\n } else {\n return await requestLocationPermissionAndroid();\n }\n };\n\nconst requestBackgroundLocationPermissionIOS = (): Promise<boolean> => {\n return OkHiNativeModule.requestBackgroundLocationPermission();\n};\n\n/**\n * Requests for background location permission\n * @returns {Promise<boolean>} A promise that resolves to a boolen value indicating whether the permission is granted\n */\nexport const requestBackgroundLocationPermission =\n async (): Promise<boolean> => {\n const isGranted = await isBackgroundLocationPermissionGranted();\n if (isGranted) return isGranted;\n return errorHandler(\n Platform.OS === 'android'\n ? requestBackgroundLocationPermissionAndroid\n : requestBackgroundLocationPermissionIOS\n );\n };\n\n/**\n * Requests the user to enable location services by showing an in app modal on android and opening location settings on iOS\n * @returns {Promise<boolean>} A promise that resolves to either a boolean value on android or null on iOS\n */\nexport const requestEnableLocationServices = (): Promise<boolean | null> => {\n return isValidPlatform(OkHiNativeModule.requestEnableLocationServices);\n};\n\n/**\n * Android Only - Checks if Google Play Services is available\n * @returns {Promise<boolean>} A promise that resolves to a boolean value indicating whether the service is avaialbe\n */\nexport const isGooglePlayServicesAvailable = (): Promise<boolean> => {\n return isValidPlatform(\n OkHiNativeModule.isGooglePlayServicesAvailable,\n 'android'\n );\n};\n\n/**\n * Android Only - Requests user to enable Google Play Services\n * @returns {Promise<boolean>} A promise that resolves to a boolean value indicating whether the service is avaialbe\n */\nexport const requestEnableGooglePlayServices = (): Promise<boolean> => {\n return isValidPlatform(\n OkHiNativeModule.requestEnableGooglePlayServices,\n 'android'\n );\n};\n\n/**\n * Returns the system version of the current platform\n * @returns {Promise<boolean>} A promise that resolves either a string on iOS or number on Android\n */\nexport const getSystemVersion = (): Promise<string | number> =>\n isValidPlatform(OkHiNativeModule.getSystemVersion);\n\nexport const request = (\n locationPermissionType: LocationRequestPermissionType,\n rationale: {\n title: string;\n text: string;\n successButton?: { label: string };\n denyButton?: { label: string };\n } | null,\n callback: LocationPermissionCallback\n) => {\n const serviceError = new OkHiException({\n code: OkHiException.SERVICE_UNAVAILABLE_CODE,\n message:\n 'Location service is currently not available. Please enable in app settings',\n });\n\n const googlePlayError = new OkHiException({\n code: OkHiException.SERVICE_UNAVAILABLE_CODE,\n message:\n 'Google Play Services is currently unavailable. Please enable in settings',\n });\n\n const handleError = (error: OkHiException) => {\n callback(null, error);\n };\n\n const handleGooglePlayServiceRequest = () => {\n requestEnableGooglePlayServices().then((googlePlayStatus) => {\n if (!googlePlayStatus) {\n handleError(googlePlayError);\n } else {\n handleRationaleRequest();\n }\n });\n };\n\n const handleRationaleAlert = (alertRationale: {\n title: string;\n text: string;\n grantButton?: { label: string };\n denyButton?: { label: string };\n }) => {\n return new Promise((resolve, _) => {\n Alert.alert(\n alertRationale.title,\n alertRationale.text,\n [\n {\n text: alertRationale.grantButton\n ? alertRationale.grantButton.label\n : 'Grant',\n onPress: () => {\n resolve(true);\n },\n },\n {\n text: alertRationale.denyButton\n ? alertRationale.denyButton.label\n : 'Deny',\n onPress: () => {\n resolve(false);\n },\n style: 'cancel',\n },\n ],\n {\n onDismiss: () => {\n resolve(false);\n },\n }\n );\n });\n };\n\n const handlePermissionRequest = () => {\n if (Platform.OS === 'ios') {\n OkHiNativeEvents.removeAllListeners('onLocationPermissionStatusUpdate');\n OkHiNativeEvents.addListener(\n 'onLocationPermissionStatusUpdate',\n (permissionUpdate) => {\n callback(permissionUpdate, null);\n }\n );\n if (locationPermissionType === 'whenInUse') {\n OkHiNativeModule.requestLocationPermission();\n } else {\n OkHiNativeModule.requestBackgroundLocationPermission();\n }\n } else {\n if (locationPermissionType === 'whenInUse') {\n requestLocationPermissionAndroid().then((whenInUseResult) =>\n callback(whenInUseResult ? 'authorizedWhenInUse' : 'denied', null)\n );\n } else {\n requestLocationPermissionAndroid().then((initialWhenInUseResult) => {\n if (!initialWhenInUseResult) {\n callback('denied', null);\n } else {\n callback('authorizedWhenInUse', null);\n requestBackgroundLocationPermission().then((alwaysResult) => {\n callback(\n alwaysResult ? 'authorizedAlways' : 'authorizedWhenInUse',\n null\n );\n });\n }\n });\n }\n }\n };\n\n const handleRationaleRequest = async () => {\n const currentStatus = await retriveLocationPermissionStatus();\n let showRationale = true;\n if (\n locationPermissionType === 'whenInUse' &&\n (currentStatus === 'authorizedWhenInUse' ||\n currentStatus === 'authorizedAlways')\n ) {\n showRationale = false;\n }\n if (\n locationPermissionType === 'always' &&\n currentStatus === 'authorizedAlways'\n ) {\n showRationale = false;\n }\n if (rationale && showRationale) {\n const result = await handleRationaleAlert(rationale);\n if (!result) {\n callback('rationaleDissmissed', null);\n } else {\n handlePermissionRequest();\n }\n } else {\n handlePermissionRequest();\n }\n };\n\n isLocationServicesEnabled()\n .then((serviceStatus) => {\n if (!serviceStatus && Platform.OS === 'ios') {\n handleError(serviceError);\n } else if (!serviceStatus && Platform.OS === 'android') {\n requestEnableLocationServices()\n .then((enableResult) => {\n if (!enableResult) {\n handleError(serviceError);\n } else {\n handleGooglePlayServiceRequest();\n }\n })\n .catch(handleError);\n } else {\n if (Platform.OS === 'ios') {\n handleRationaleRequest();\n } else {\n handleGooglePlayServiceRequest();\n }\n }\n })\n .catch(handleError);\n};\n\nexport const openAppSettings = () => {\n OkHiNativeModule.openAppSettings();\n};\n\nexport const retriveLocationPermissionStatus =\n async (): Promise<LocationPermissionStatus> => {\n if (Platform.OS === 'ios') {\n return OkHiNativeModule.retriveLocationPermissionStatus() as Promise<LocationPermissionStatus>;\n }\n const alwaysPerm = await isBackgroundLocationPermissionGranted();\n if (alwaysPerm) {\n return 'authorizedAlways';\n }\n const whenInUsePerm = await isLocationPermissionGranted();\n return whenInUsePerm ? 'authorizedWhenInUse' : 'denied';\n };\n"]}
|
|
1
|
+
{"version":3,"sources":["Helpers.ts"],"names":["isLocationServicesEnabled","OkHiNativeModule","isLocationPermissionGranted","isBackgroundLocationPermissionGrantedAndroid","sdkVersion","getSystemVersion","hasPermission","PermissionsAndroid","check","PERMISSIONS","ACCESS_BACKGROUND_LOCATION","isBackgroundLocationPermissionGrantedIOS","isBackgroundLocationPermissionGranted","fn","Platform","OS","requestLocationPermissionAndroid","status","requestMultiple","ACCESS_FINE_LOCATION","ACCESS_COARSE_LOCATION","requestLocationPermissionIOS","requestLocationPermission","isGranted","requestBackgroundLocationPermissionAndroid","permissions","requestBackgroundLocationPermissionIOS","requestBackgroundLocationPermission","requestEnableLocationServices","isGooglePlayServicesAvailable","requestEnableGooglePlayServices","request","locationPermissionType","rationale","callback","serviceError","OkHiException","code","SERVICE_UNAVAILABLE_CODE","message","googlePlayError","handleError","error","handleGooglePlayServiceRequest","then","googlePlayStatus","handleRationaleRequest","handleRationaleAlert","alertRationale","Promise","resolve","_","Alert","alert","title","text","grantButton","label","onPress","denyButton","style","onDismiss","handlePermissionRequest","OkHiNativeEvents","removeAllListeners","addListener","permissionUpdate","whenInUseResult","initialWhenInUseResult","alwaysResult","currentStatus","retriveLocationPermissionStatus","showRationale","result","serviceStatus","enableResult","catch","openAppSettings","alwaysPerm","whenInUsePerm","requestTrackingAuthorization"],"mappings":"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","sourcesContent":["import { OkHiNativeModule, OkHiNativeEvents } from '../OkHiNativeModule';\nimport { Alert, PermissionsAndroid, Platform } from 'react-native';\nimport { errorHandler, isValidPlatform } from './_helpers';\nimport type {\n LocationPermissionCallback,\n LocationPermissionStatus,\n LocationRequestPermissionType,\n} from './types';\nimport { OkHiException } from './OkHiException';\n\n/**\n * Checks whether location services are enabled\n * @returns {Promise<boolean>} A promise that resolves to a boolen value indicating whether the service is available\n */\nexport const isLocationServicesEnabled = (): Promise<boolean> => {\n return isValidPlatform(OkHiNativeModule.isLocationServicesEnabled);\n};\n\n/**\n * Checks whether when in use location permission is granted\n * @returns {Promise<boolean>} A promise that resolves to a boolen value indicating whether the permission is granted\n */\nexport const isLocationPermissionGranted = (): Promise<boolean> => {\n return isValidPlatform(OkHiNativeModule.isLocationPermissionGranted);\n};\n\nconst isBackgroundLocationPermissionGrantedAndroid =\n async (): Promise<boolean> => {\n const sdkVersion = await OkHiNativeModule.getSystemVersion();\n if (sdkVersion < 23) {\n return true;\n }\n if (sdkVersion < 29) {\n return await isLocationPermissionGranted();\n }\n const hasPermission = await PermissionsAndroid.check(\n PermissionsAndroid.PERMISSIONS.ACCESS_BACKGROUND_LOCATION\n );\n return hasPermission;\n };\n\nconst isBackgroundLocationPermissionGrantedIOS = (): Promise<boolean> => {\n return OkHiNativeModule.isBackgroundLocationPermissionGranted();\n};\n\n/**\n * Checks whether background location permission is granted\n * @returns {Promise<boolean>} A promise that resolves to a boolen value indicating whether the permission is granted\n */\nexport const isBackgroundLocationPermissionGranted = (): Promise<boolean> => {\n const fn =\n Platform.OS === 'android'\n ? isBackgroundLocationPermissionGrantedAndroid\n : isBackgroundLocationPermissionGrantedIOS;\n return isValidPlatform(fn);\n};\n\nconst requestLocationPermissionAndroid = async (): Promise<boolean> => {\n const status: any = await PermissionsAndroid.requestMultiple([\n PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION,\n PermissionsAndroid.PERMISSIONS.ACCESS_COARSE_LOCATION,\n ]);\n return status['android.permission.ACCESS_FINE_LOCATION'] === 'granted';\n};\n\nconst requestLocationPermissionIOS = (): Promise<boolean> => {\n return OkHiNativeModule.requestLocationPermission();\n};\n\n/**\n * Requests for when in use location permission\n * @returns {Promise<boolean>} A promise that resolves to a boolen value indicating whether the permission is granted\n */\nexport const requestLocationPermission = async (): Promise<boolean> => {\n const isGranted = await isLocationPermissionGranted();\n if (isGranted) return isGranted;\n return errorHandler(\n Platform.OS === 'android'\n ? requestLocationPermissionAndroid\n : requestLocationPermissionIOS\n );\n};\n\nconst requestBackgroundLocationPermissionAndroid =\n async (): Promise<boolean> => {\n const sdkVersion = await OkHiNativeModule.getSystemVersion();\n if (sdkVersion < 23) return true;\n if (sdkVersion >= 29) {\n const permissions: any = [\n PermissionsAndroid.PERMISSIONS.ACCESS_BACKGROUND_LOCATION,\n ];\n const status: any = await PermissionsAndroid.requestMultiple(permissions);\n return (\n status['android.permission.ACCESS_BACKGROUND_LOCATION'] === 'granted'\n );\n } else {\n return await requestLocationPermissionAndroid();\n }\n };\n\nconst requestBackgroundLocationPermissionIOS = (): Promise<boolean> => {\n return OkHiNativeModule.requestBackgroundLocationPermission();\n};\n\n/**\n * Requests for background location permission\n * @returns {Promise<boolean>} A promise that resolves to a boolen value indicating whether the permission is granted\n */\nexport const requestBackgroundLocationPermission =\n async (): Promise<boolean> => {\n const isGranted = await isBackgroundLocationPermissionGranted();\n if (isGranted) return isGranted;\n return errorHandler(\n Platform.OS === 'android'\n ? requestBackgroundLocationPermissionAndroid\n : requestBackgroundLocationPermissionIOS\n );\n };\n\n/**\n * Requests the user to enable location services by showing an in app modal on android and opening location settings on iOS\n * @returns {Promise<boolean>} A promise that resolves to either a boolean value on android or null on iOS\n */\nexport const requestEnableLocationServices = (): Promise<boolean | null> => {\n return isValidPlatform(OkHiNativeModule.requestEnableLocationServices);\n};\n\n/**\n * Android Only - Checks if Google Play Services is available\n * @returns {Promise<boolean>} A promise that resolves to a boolean value indicating whether the service is avaialbe\n */\nexport const isGooglePlayServicesAvailable = (): Promise<boolean> => {\n return isValidPlatform(\n OkHiNativeModule.isGooglePlayServicesAvailable,\n 'android'\n );\n};\n\n/**\n * Android Only - Requests user to enable Google Play Services\n * @returns {Promise<boolean>} A promise that resolves to a boolean value indicating whether the service is avaialbe\n */\nexport const requestEnableGooglePlayServices = (): Promise<boolean> => {\n return isValidPlatform(\n OkHiNativeModule.requestEnableGooglePlayServices,\n 'android'\n );\n};\n\n/**\n * Returns the system version of the current platform\n * @returns {Promise<boolean>} A promise that resolves either a string on iOS or number on Android\n */\nexport const getSystemVersion = (): Promise<string | number> =>\n isValidPlatform(OkHiNativeModule.getSystemVersion);\n\n/**\n * Requests location permission from the user. It'll also attempt to activate any disbaled services (Android Only)\n */\nexport const request = (\n locationPermissionType: LocationRequestPermissionType,\n rationale: {\n title: string;\n text: string;\n successButton?: { label: string };\n denyButton?: { label: string };\n } | null,\n callback: LocationPermissionCallback\n) => {\n const serviceError = new OkHiException({\n code: OkHiException.SERVICE_UNAVAILABLE_CODE,\n message:\n 'Location service is currently not available. Please enable in app settings',\n });\n\n const googlePlayError = new OkHiException({\n code: OkHiException.SERVICE_UNAVAILABLE_CODE,\n message:\n 'Google Play Services is currently unavailable. Please enable in settings',\n });\n\n const handleError = (error: OkHiException) => {\n callback(null, error);\n };\n\n const handleGooglePlayServiceRequest = () => {\n requestEnableGooglePlayServices().then((googlePlayStatus) => {\n if (!googlePlayStatus) {\n handleError(googlePlayError);\n } else {\n handleRationaleRequest();\n }\n });\n };\n\n const handleRationaleAlert = (alertRationale: {\n title: string;\n text: string;\n grantButton?: { label: string };\n denyButton?: { label: string };\n }) => {\n return new Promise((resolve, _) => {\n Alert.alert(\n alertRationale.title,\n alertRationale.text,\n [\n {\n text: alertRationale.grantButton\n ? alertRationale.grantButton.label\n : 'Grant',\n onPress: () => {\n resolve(true);\n },\n },\n {\n text: alertRationale.denyButton\n ? alertRationale.denyButton.label\n : 'Deny',\n onPress: () => {\n resolve(false);\n },\n style: 'cancel',\n },\n ],\n {\n onDismiss: () => {\n resolve(false);\n },\n }\n );\n });\n };\n\n const handlePermissionRequest = () => {\n if (Platform.OS === 'ios') {\n OkHiNativeEvents.removeAllListeners('onLocationPermissionStatusUpdate');\n OkHiNativeEvents.addListener(\n 'onLocationPermissionStatusUpdate',\n (permissionUpdate) => {\n callback(permissionUpdate, null);\n }\n );\n if (locationPermissionType === 'whenInUse') {\n OkHiNativeModule.requestLocationPermission();\n } else {\n OkHiNativeModule.requestBackgroundLocationPermission();\n }\n } else {\n if (locationPermissionType === 'whenInUse') {\n requestLocationPermissionAndroid().then((whenInUseResult) =>\n callback(whenInUseResult ? 'authorizedWhenInUse' : 'denied', null)\n );\n } else {\n requestLocationPermissionAndroid().then((initialWhenInUseResult) => {\n if (!initialWhenInUseResult) {\n callback('denied', null);\n } else {\n callback('authorizedWhenInUse', null);\n requestBackgroundLocationPermission().then((alwaysResult) => {\n callback(\n alwaysResult ? 'authorizedAlways' : 'authorizedWhenInUse',\n null\n );\n });\n }\n });\n }\n }\n };\n\n const handleRationaleRequest = async () => {\n const currentStatus = await retriveLocationPermissionStatus();\n let showRationale = true;\n if (\n locationPermissionType === 'whenInUse' &&\n (currentStatus === 'authorizedWhenInUse' ||\n currentStatus === 'authorizedAlways')\n ) {\n showRationale = false;\n }\n if (\n locationPermissionType === 'always' &&\n currentStatus === 'authorizedAlways'\n ) {\n showRationale = false;\n }\n if (rationale && showRationale) {\n const result = await handleRationaleAlert(rationale);\n if (!result) {\n callback('rationaleDissmissed', null);\n } else {\n handlePermissionRequest();\n }\n } else {\n handlePermissionRequest();\n }\n };\n\n isLocationServicesEnabled()\n .then((serviceStatus) => {\n if (!serviceStatus && Platform.OS === 'ios') {\n handleError(serviceError);\n } else if (!serviceStatus && Platform.OS === 'android') {\n requestEnableLocationServices()\n .then((enableResult) => {\n if (!enableResult) {\n handleError(serviceError);\n } else {\n handleGooglePlayServiceRequest();\n }\n })\n .catch(handleError);\n } else {\n if (Platform.OS === 'ios') {\n handleRationaleRequest();\n } else {\n handleGooglePlayServiceRequest();\n }\n }\n })\n .catch(handleError);\n};\n\n/**\n * Open the device's app settings.\n */\nexport const openAppSettings = () => {\n OkHiNativeModule.openAppSettings();\n};\n\n/**\n * Retrives the location permission status from the device\n */\nexport const retriveLocationPermissionStatus =\n async (): Promise<LocationPermissionStatus> => {\n if (Platform.OS === 'ios') {\n return OkHiNativeModule.retriveLocationPermissionStatus() as Promise<LocationPermissionStatus>;\n }\n const alwaysPerm = await isBackgroundLocationPermissionGranted();\n if (alwaysPerm) {\n return 'authorizedAlways';\n }\n const whenInUsePerm = await isLocationPermissionGranted();\n return whenInUsePerm ? 'authorizedWhenInUse' : 'denied';\n };\n\n/**\n * Requests tracking authorization from the user. iOS only, iOS version >= 14\n * Read more: https://developer.apple.com/app-store/user-privacy-and-data-use/\n */\nexport const requestTrackingAuthorization = async (): Promise<\n string | null\n> => {\n return isValidPlatform(async () => {\n const result = await OkHiNativeModule.requestTrackingAuthorization();\n return result;\n }, 'ios');\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["index.ts"],"names":["OkHiNativeModule","NativeModules","Okhi","OkHiNativeEvents","NativeEventEmitter","addListener"],"mappings":";;;;;;;AAAA;;
|
|
1
|
+
{"version":3,"sources":["index.ts"],"names":["OkHiNativeModule","NativeModules","Okhi","OkHiNativeEvents","NativeEventEmitter","addListener"],"mappings":";;;;;;;AAAA;;AAwCO,MAAMA,gBAAsC,GAAGC,2BAAcC,IAA7D;;AAEA,MAAMC,gBAAgB,GAAG,IAAIC,+BAAJ,CAAuBH,2BAAcC,IAArC,CAAzB;;AAEPC,gBAAgB,CAACE,WAAjB,CAA6B,kCAA7B,EAAiE,MAAM,IAAvE","sourcesContent":["import { NativeModules, NativeEventEmitter } from 'react-native';\nimport type { OkVerifyStartConfiguration } from '../OkVerify/types';\n\ntype OkHiNativeModuleType = {\n multiply(a: number, b: number): Promise<number>;\n isLocationServicesEnabled(): Promise<boolean>;\n isLocationPermissionGranted(): Promise<boolean>;\n isBackgroundLocationPermissionGranted(): Promise<boolean>;\n requestLocationPermission(): Promise<boolean>;\n requestBackgroundLocationPermission(): Promise<boolean>;\n requestEnableLocationServices(): Promise<boolean>;\n isGooglePlayServicesAvailable(): Promise<boolean>;\n requestEnableGooglePlayServices(): Promise<boolean>;\n getSystemVersion(): Promise<number | string>;\n getAuthToken(branchId: string, clientKey: string): Promise<string>;\n initialize(configuration: string): Promise<void>;\n startAddressVerification(\n phoneNumber: string,\n locationId: string,\n lat: Number,\n lon: Number,\n configuration?: OkVerifyStartConfiguration\n ): Promise<string>;\n stopAddressVerification(\n phoneNumber: string,\n locationId: string\n ): Promise<string>;\n startForegroundService(): Promise<boolean>;\n stopForegroundService(): Promise<boolean>;\n isForegroundServiceRunning(): Promise<boolean>;\n initializeIOS(\n branchId: string,\n clientKey: string,\n environment: string\n ): Promise<boolean>;\n openAppSettings(): Promise<void>;\n retriveLocationPermissionStatus(): Promise<string>;\n requestTrackingAuthorization(): Promise<string | null>;\n};\n\nexport const OkHiNativeModule: OkHiNativeModuleType = NativeModules.Okhi;\n\nexport const OkHiNativeEvents = new NativeEventEmitter(NativeModules.Okhi);\n\nOkHiNativeEvents.addListener('onLocationPermissionStatusUpdate', () => null);\n"]}
|
|
@@ -125,6 +125,10 @@ export const requestEnableGooglePlayServices = () => {
|
|
|
125
125
|
*/
|
|
126
126
|
|
|
127
127
|
export const getSystemVersion = () => isValidPlatform(OkHiNativeModule.getSystemVersion);
|
|
128
|
+
/**
|
|
129
|
+
* Requests location permission from the user. It'll also attempt to activate any disbaled services (Android Only)
|
|
130
|
+
*/
|
|
131
|
+
|
|
128
132
|
export const request = (locationPermissionType, rationale, callback) => {
|
|
129
133
|
const serviceError = new OkHiException({
|
|
130
134
|
code: OkHiException.SERVICE_UNAVAILABLE_CODE,
|
|
@@ -245,9 +249,17 @@ export const request = (locationPermissionType, rationale, callback) => {
|
|
|
245
249
|
}
|
|
246
250
|
}).catch(handleError);
|
|
247
251
|
};
|
|
252
|
+
/**
|
|
253
|
+
* Open the device's app settings.
|
|
254
|
+
*/
|
|
255
|
+
|
|
248
256
|
export const openAppSettings = () => {
|
|
249
257
|
OkHiNativeModule.openAppSettings();
|
|
250
258
|
};
|
|
259
|
+
/**
|
|
260
|
+
* Retrives the location permission status from the device
|
|
261
|
+
*/
|
|
262
|
+
|
|
251
263
|
export const retriveLocationPermissionStatus = async () => {
|
|
252
264
|
if (Platform.OS === 'ios') {
|
|
253
265
|
return OkHiNativeModule.retriveLocationPermissionStatus();
|
|
@@ -262,4 +274,15 @@ export const retriveLocationPermissionStatus = async () => {
|
|
|
262
274
|
const whenInUsePerm = await isLocationPermissionGranted();
|
|
263
275
|
return whenInUsePerm ? 'authorizedWhenInUse' : 'denied';
|
|
264
276
|
};
|
|
277
|
+
/**
|
|
278
|
+
* Requests tracking authorization from the user. iOS only, iOS version >= 14
|
|
279
|
+
* Read more: https://developer.apple.com/app-store/user-privacy-and-data-use/
|
|
280
|
+
*/
|
|
281
|
+
|
|
282
|
+
export const requestTrackingAuthorization = async () => {
|
|
283
|
+
return isValidPlatform(async () => {
|
|
284
|
+
const result = await OkHiNativeModule.requestTrackingAuthorization();
|
|
285
|
+
return result;
|
|
286
|
+
}, 'ios');
|
|
287
|
+
};
|
|
265
288
|
//# sourceMappingURL=Helpers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["Helpers.ts"],"names":["OkHiNativeModule","OkHiNativeEvents","Alert","PermissionsAndroid","Platform","errorHandler","isValidPlatform","OkHiException","isLocationServicesEnabled","isLocationPermissionGranted","isBackgroundLocationPermissionGrantedAndroid","sdkVersion","getSystemVersion","hasPermission","check","PERMISSIONS","ACCESS_BACKGROUND_LOCATION","isBackgroundLocationPermissionGrantedIOS","isBackgroundLocationPermissionGranted","fn","OS","requestLocationPermissionAndroid","status","requestMultiple","ACCESS_FINE_LOCATION","ACCESS_COARSE_LOCATION","requestLocationPermissionIOS","requestLocationPermission","isGranted","requestBackgroundLocationPermissionAndroid","permissions","requestBackgroundLocationPermissionIOS","requestBackgroundLocationPermission","requestEnableLocationServices","isGooglePlayServicesAvailable","requestEnableGooglePlayServices","request","locationPermissionType","rationale","callback","serviceError","code","SERVICE_UNAVAILABLE_CODE","message","googlePlayError","handleError","error","handleGooglePlayServiceRequest","then","googlePlayStatus","handleRationaleRequest","handleRationaleAlert","alertRationale","Promise","resolve","_","alert","title","text","grantButton","label","onPress","denyButton","style","onDismiss","handlePermissionRequest","removeAllListeners","addListener","permissionUpdate","whenInUseResult","initialWhenInUseResult","alwaysResult","currentStatus","retriveLocationPermissionStatus","showRationale","result","serviceStatus","enableResult","catch","openAppSettings","alwaysPerm","whenInUsePerm"],"mappings":"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","sourcesContent":["import { OkHiNativeModule, OkHiNativeEvents } from '../OkHiNativeModule';\nimport { Alert, PermissionsAndroid, Platform } from 'react-native';\nimport { errorHandler, isValidPlatform } from './_helpers';\nimport type {\n LocationPermissionCallback,\n LocationPermissionStatus,\n LocationRequestPermissionType,\n} from './types';\nimport { OkHiException } from './OkHiException';\n\n/**\n * Checks whether location services are enabled\n * @returns {Promise<boolean>} A promise that resolves to a boolen value indicating whether the service is available\n */\nexport const isLocationServicesEnabled = (): Promise<boolean> => {\n return isValidPlatform(OkHiNativeModule.isLocationServicesEnabled);\n};\n\n/**\n * Checks whether when in use location permission is granted\n * @returns {Promise<boolean>} A promise that resolves to a boolen value indicating whether the permission is granted\n */\nexport const isLocationPermissionGranted = (): Promise<boolean> => {\n return isValidPlatform(OkHiNativeModule.isLocationPermissionGranted);\n};\n\nconst isBackgroundLocationPermissionGrantedAndroid =\n async (): Promise<boolean> => {\n const sdkVersion = await OkHiNativeModule.getSystemVersion();\n if (sdkVersion < 23) {\n return true;\n }\n if (sdkVersion < 29) {\n return await isLocationPermissionGranted();\n }\n const hasPermission = await PermissionsAndroid.check(\n PermissionsAndroid.PERMISSIONS.ACCESS_BACKGROUND_LOCATION\n );\n return hasPermission;\n };\n\nconst isBackgroundLocationPermissionGrantedIOS = (): Promise<boolean> => {\n return OkHiNativeModule.isBackgroundLocationPermissionGranted();\n};\n\n/**\n * Checks whether background location permission is granted\n * @returns {Promise<boolean>} A promise that resolves to a boolen value indicating whether the permission is granted\n */\nexport const isBackgroundLocationPermissionGranted = (): Promise<boolean> => {\n const fn =\n Platform.OS === 'android'\n ? isBackgroundLocationPermissionGrantedAndroid\n : isBackgroundLocationPermissionGrantedIOS;\n return isValidPlatform(fn);\n};\n\nconst requestLocationPermissionAndroid = async (): Promise<boolean> => {\n const status: any = await PermissionsAndroid.requestMultiple([\n PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION,\n PermissionsAndroid.PERMISSIONS.ACCESS_COARSE_LOCATION,\n ]);\n return status['android.permission.ACCESS_FINE_LOCATION'] === 'granted';\n};\n\nconst requestLocationPermissionIOS = (): Promise<boolean> => {\n return OkHiNativeModule.requestLocationPermission();\n};\n\n/**\n * Requests for when in use location permission\n * @returns {Promise<boolean>} A promise that resolves to a boolen value indicating whether the permission is granted\n */\nexport const requestLocationPermission = async (): Promise<boolean> => {\n const isGranted = await isLocationPermissionGranted();\n if (isGranted) return isGranted;\n return errorHandler(\n Platform.OS === 'android'\n ? requestLocationPermissionAndroid\n : requestLocationPermissionIOS\n );\n};\n\nconst requestBackgroundLocationPermissionAndroid =\n async (): Promise<boolean> => {\n const sdkVersion = await OkHiNativeModule.getSystemVersion();\n if (sdkVersion < 23) return true;\n if (sdkVersion >= 29) {\n const permissions: any = [\n PermissionsAndroid.PERMISSIONS.ACCESS_BACKGROUND_LOCATION,\n ];\n const status: any = await PermissionsAndroid.requestMultiple(permissions);\n return (\n status['android.permission.ACCESS_BACKGROUND_LOCATION'] === 'granted'\n );\n } else {\n return await requestLocationPermissionAndroid();\n }\n };\n\nconst requestBackgroundLocationPermissionIOS = (): Promise<boolean> => {\n return OkHiNativeModule.requestBackgroundLocationPermission();\n};\n\n/**\n * Requests for background location permission\n * @returns {Promise<boolean>} A promise that resolves to a boolen value indicating whether the permission is granted\n */\nexport const requestBackgroundLocationPermission =\n async (): Promise<boolean> => {\n const isGranted = await isBackgroundLocationPermissionGranted();\n if (isGranted) return isGranted;\n return errorHandler(\n Platform.OS === 'android'\n ? requestBackgroundLocationPermissionAndroid\n : requestBackgroundLocationPermissionIOS\n );\n };\n\n/**\n * Requests the user to enable location services by showing an in app modal on android and opening location settings on iOS\n * @returns {Promise<boolean>} A promise that resolves to either a boolean value on android or null on iOS\n */\nexport const requestEnableLocationServices = (): Promise<boolean | null> => {\n return isValidPlatform(OkHiNativeModule.requestEnableLocationServices);\n};\n\n/**\n * Android Only - Checks if Google Play Services is available\n * @returns {Promise<boolean>} A promise that resolves to a boolean value indicating whether the service is avaialbe\n */\nexport const isGooglePlayServicesAvailable = (): Promise<boolean> => {\n return isValidPlatform(\n OkHiNativeModule.isGooglePlayServicesAvailable,\n 'android'\n );\n};\n\n/**\n * Android Only - Requests user to enable Google Play Services\n * @returns {Promise<boolean>} A promise that resolves to a boolean value indicating whether the service is avaialbe\n */\nexport const requestEnableGooglePlayServices = (): Promise<boolean> => {\n return isValidPlatform(\n OkHiNativeModule.requestEnableGooglePlayServices,\n 'android'\n );\n};\n\n/**\n * Returns the system version of the current platform\n * @returns {Promise<boolean>} A promise that resolves either a string on iOS or number on Android\n */\nexport const getSystemVersion = (): Promise<string | number> =>\n isValidPlatform(OkHiNativeModule.getSystemVersion);\n\nexport const request = (\n locationPermissionType: LocationRequestPermissionType,\n rationale: {\n title: string;\n text: string;\n successButton?: { label: string };\n denyButton?: { label: string };\n } | null,\n callback: LocationPermissionCallback\n) => {\n const serviceError = new OkHiException({\n code: OkHiException.SERVICE_UNAVAILABLE_CODE,\n message:\n 'Location service is currently not available. Please enable in app settings',\n });\n\n const googlePlayError = new OkHiException({\n code: OkHiException.SERVICE_UNAVAILABLE_CODE,\n message:\n 'Google Play Services is currently unavailable. Please enable in settings',\n });\n\n const handleError = (error: OkHiException) => {\n callback(null, error);\n };\n\n const handleGooglePlayServiceRequest = () => {\n requestEnableGooglePlayServices().then((googlePlayStatus) => {\n if (!googlePlayStatus) {\n handleError(googlePlayError);\n } else {\n handleRationaleRequest();\n }\n });\n };\n\n const handleRationaleAlert = (alertRationale: {\n title: string;\n text: string;\n grantButton?: { label: string };\n denyButton?: { label: string };\n }) => {\n return new Promise((resolve, _) => {\n Alert.alert(\n alertRationale.title,\n alertRationale.text,\n [\n {\n text: alertRationale.grantButton\n ? alertRationale.grantButton.label\n : 'Grant',\n onPress: () => {\n resolve(true);\n },\n },\n {\n text: alertRationale.denyButton\n ? alertRationale.denyButton.label\n : 'Deny',\n onPress: () => {\n resolve(false);\n },\n style: 'cancel',\n },\n ],\n {\n onDismiss: () => {\n resolve(false);\n },\n }\n );\n });\n };\n\n const handlePermissionRequest = () => {\n if (Platform.OS === 'ios') {\n OkHiNativeEvents.removeAllListeners('onLocationPermissionStatusUpdate');\n OkHiNativeEvents.addListener(\n 'onLocationPermissionStatusUpdate',\n (permissionUpdate) => {\n callback(permissionUpdate, null);\n }\n );\n if (locationPermissionType === 'whenInUse') {\n OkHiNativeModule.requestLocationPermission();\n } else {\n OkHiNativeModule.requestBackgroundLocationPermission();\n }\n } else {\n if (locationPermissionType === 'whenInUse') {\n requestLocationPermissionAndroid().then((whenInUseResult) =>\n callback(whenInUseResult ? 'authorizedWhenInUse' : 'denied', null)\n );\n } else {\n requestLocationPermissionAndroid().then((initialWhenInUseResult) => {\n if (!initialWhenInUseResult) {\n callback('denied', null);\n } else {\n callback('authorizedWhenInUse', null);\n requestBackgroundLocationPermission().then((alwaysResult) => {\n callback(\n alwaysResult ? 'authorizedAlways' : 'authorizedWhenInUse',\n null\n );\n });\n }\n });\n }\n }\n };\n\n const handleRationaleRequest = async () => {\n const currentStatus = await retriveLocationPermissionStatus();\n let showRationale = true;\n if (\n locationPermissionType === 'whenInUse' &&\n (currentStatus === 'authorizedWhenInUse' ||\n currentStatus === 'authorizedAlways')\n ) {\n showRationale = false;\n }\n if (\n locationPermissionType === 'always' &&\n currentStatus === 'authorizedAlways'\n ) {\n showRationale = false;\n }\n if (rationale && showRationale) {\n const result = await handleRationaleAlert(rationale);\n if (!result) {\n callback('rationaleDissmissed', null);\n } else {\n handlePermissionRequest();\n }\n } else {\n handlePermissionRequest();\n }\n };\n\n isLocationServicesEnabled()\n .then((serviceStatus) => {\n if (!serviceStatus && Platform.OS === 'ios') {\n handleError(serviceError);\n } else if (!serviceStatus && Platform.OS === 'android') {\n requestEnableLocationServices()\n .then((enableResult) => {\n if (!enableResult) {\n handleError(serviceError);\n } else {\n handleGooglePlayServiceRequest();\n }\n })\n .catch(handleError);\n } else {\n if (Platform.OS === 'ios') {\n handleRationaleRequest();\n } else {\n handleGooglePlayServiceRequest();\n }\n }\n })\n .catch(handleError);\n};\n\nexport const openAppSettings = () => {\n OkHiNativeModule.openAppSettings();\n};\n\nexport const retriveLocationPermissionStatus =\n async (): Promise<LocationPermissionStatus> => {\n if (Platform.OS === 'ios') {\n return OkHiNativeModule.retriveLocationPermissionStatus() as Promise<LocationPermissionStatus>;\n }\n const alwaysPerm = await isBackgroundLocationPermissionGranted();\n if (alwaysPerm) {\n return 'authorizedAlways';\n }\n const whenInUsePerm = await isLocationPermissionGranted();\n return whenInUsePerm ? 'authorizedWhenInUse' : 'denied';\n };\n"]}
|
|
1
|
+
{"version":3,"sources":["Helpers.ts"],"names":["OkHiNativeModule","OkHiNativeEvents","Alert","PermissionsAndroid","Platform","errorHandler","isValidPlatform","OkHiException","isLocationServicesEnabled","isLocationPermissionGranted","isBackgroundLocationPermissionGrantedAndroid","sdkVersion","getSystemVersion","hasPermission","check","PERMISSIONS","ACCESS_BACKGROUND_LOCATION","isBackgroundLocationPermissionGrantedIOS","isBackgroundLocationPermissionGranted","fn","OS","requestLocationPermissionAndroid","status","requestMultiple","ACCESS_FINE_LOCATION","ACCESS_COARSE_LOCATION","requestLocationPermissionIOS","requestLocationPermission","isGranted","requestBackgroundLocationPermissionAndroid","permissions","requestBackgroundLocationPermissionIOS","requestBackgroundLocationPermission","requestEnableLocationServices","isGooglePlayServicesAvailable","requestEnableGooglePlayServices","request","locationPermissionType","rationale","callback","serviceError","code","SERVICE_UNAVAILABLE_CODE","message","googlePlayError","handleError","error","handleGooglePlayServiceRequest","then","googlePlayStatus","handleRationaleRequest","handleRationaleAlert","alertRationale","Promise","resolve","_","alert","title","text","grantButton","label","onPress","denyButton","style","onDismiss","handlePermissionRequest","removeAllListeners","addListener","permissionUpdate","whenInUseResult","initialWhenInUseResult","alwaysResult","currentStatus","retriveLocationPermissionStatus","showRationale","result","serviceStatus","enableResult","catch","openAppSettings","alwaysPerm","whenInUsePerm","requestTrackingAuthorization"],"mappings":"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","sourcesContent":["import { OkHiNativeModule, OkHiNativeEvents } from '../OkHiNativeModule';\nimport { Alert, PermissionsAndroid, Platform } from 'react-native';\nimport { errorHandler, isValidPlatform } from './_helpers';\nimport type {\n LocationPermissionCallback,\n LocationPermissionStatus,\n LocationRequestPermissionType,\n} from './types';\nimport { OkHiException } from './OkHiException';\n\n/**\n * Checks whether location services are enabled\n * @returns {Promise<boolean>} A promise that resolves to a boolen value indicating whether the service is available\n */\nexport const isLocationServicesEnabled = (): Promise<boolean> => {\n return isValidPlatform(OkHiNativeModule.isLocationServicesEnabled);\n};\n\n/**\n * Checks whether when in use location permission is granted\n * @returns {Promise<boolean>} A promise that resolves to a boolen value indicating whether the permission is granted\n */\nexport const isLocationPermissionGranted = (): Promise<boolean> => {\n return isValidPlatform(OkHiNativeModule.isLocationPermissionGranted);\n};\n\nconst isBackgroundLocationPermissionGrantedAndroid =\n async (): Promise<boolean> => {\n const sdkVersion = await OkHiNativeModule.getSystemVersion();\n if (sdkVersion < 23) {\n return true;\n }\n if (sdkVersion < 29) {\n return await isLocationPermissionGranted();\n }\n const hasPermission = await PermissionsAndroid.check(\n PermissionsAndroid.PERMISSIONS.ACCESS_BACKGROUND_LOCATION\n );\n return hasPermission;\n };\n\nconst isBackgroundLocationPermissionGrantedIOS = (): Promise<boolean> => {\n return OkHiNativeModule.isBackgroundLocationPermissionGranted();\n};\n\n/**\n * Checks whether background location permission is granted\n * @returns {Promise<boolean>} A promise that resolves to a boolen value indicating whether the permission is granted\n */\nexport const isBackgroundLocationPermissionGranted = (): Promise<boolean> => {\n const fn =\n Platform.OS === 'android'\n ? isBackgroundLocationPermissionGrantedAndroid\n : isBackgroundLocationPermissionGrantedIOS;\n return isValidPlatform(fn);\n};\n\nconst requestLocationPermissionAndroid = async (): Promise<boolean> => {\n const status: any = await PermissionsAndroid.requestMultiple([\n PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION,\n PermissionsAndroid.PERMISSIONS.ACCESS_COARSE_LOCATION,\n ]);\n return status['android.permission.ACCESS_FINE_LOCATION'] === 'granted';\n};\n\nconst requestLocationPermissionIOS = (): Promise<boolean> => {\n return OkHiNativeModule.requestLocationPermission();\n};\n\n/**\n * Requests for when in use location permission\n * @returns {Promise<boolean>} A promise that resolves to a boolen value indicating whether the permission is granted\n */\nexport const requestLocationPermission = async (): Promise<boolean> => {\n const isGranted = await isLocationPermissionGranted();\n if (isGranted) return isGranted;\n return errorHandler(\n Platform.OS === 'android'\n ? requestLocationPermissionAndroid\n : requestLocationPermissionIOS\n );\n};\n\nconst requestBackgroundLocationPermissionAndroid =\n async (): Promise<boolean> => {\n const sdkVersion = await OkHiNativeModule.getSystemVersion();\n if (sdkVersion < 23) return true;\n if (sdkVersion >= 29) {\n const permissions: any = [\n PermissionsAndroid.PERMISSIONS.ACCESS_BACKGROUND_LOCATION,\n ];\n const status: any = await PermissionsAndroid.requestMultiple(permissions);\n return (\n status['android.permission.ACCESS_BACKGROUND_LOCATION'] === 'granted'\n );\n } else {\n return await requestLocationPermissionAndroid();\n }\n };\n\nconst requestBackgroundLocationPermissionIOS = (): Promise<boolean> => {\n return OkHiNativeModule.requestBackgroundLocationPermission();\n};\n\n/**\n * Requests for background location permission\n * @returns {Promise<boolean>} A promise that resolves to a boolen value indicating whether the permission is granted\n */\nexport const requestBackgroundLocationPermission =\n async (): Promise<boolean> => {\n const isGranted = await isBackgroundLocationPermissionGranted();\n if (isGranted) return isGranted;\n return errorHandler(\n Platform.OS === 'android'\n ? requestBackgroundLocationPermissionAndroid\n : requestBackgroundLocationPermissionIOS\n );\n };\n\n/**\n * Requests the user to enable location services by showing an in app modal on android and opening location settings on iOS\n * @returns {Promise<boolean>} A promise that resolves to either a boolean value on android or null on iOS\n */\nexport const requestEnableLocationServices = (): Promise<boolean | null> => {\n return isValidPlatform(OkHiNativeModule.requestEnableLocationServices);\n};\n\n/**\n * Android Only - Checks if Google Play Services is available\n * @returns {Promise<boolean>} A promise that resolves to a boolean value indicating whether the service is avaialbe\n */\nexport const isGooglePlayServicesAvailable = (): Promise<boolean> => {\n return isValidPlatform(\n OkHiNativeModule.isGooglePlayServicesAvailable,\n 'android'\n );\n};\n\n/**\n * Android Only - Requests user to enable Google Play Services\n * @returns {Promise<boolean>} A promise that resolves to a boolean value indicating whether the service is avaialbe\n */\nexport const requestEnableGooglePlayServices = (): Promise<boolean> => {\n return isValidPlatform(\n OkHiNativeModule.requestEnableGooglePlayServices,\n 'android'\n );\n};\n\n/**\n * Returns the system version of the current platform\n * @returns {Promise<boolean>} A promise that resolves either a string on iOS or number on Android\n */\nexport const getSystemVersion = (): Promise<string | number> =>\n isValidPlatform(OkHiNativeModule.getSystemVersion);\n\n/**\n * Requests location permission from the user. It'll also attempt to activate any disbaled services (Android Only)\n */\nexport const request = (\n locationPermissionType: LocationRequestPermissionType,\n rationale: {\n title: string;\n text: string;\n successButton?: { label: string };\n denyButton?: { label: string };\n } | null,\n callback: LocationPermissionCallback\n) => {\n const serviceError = new OkHiException({\n code: OkHiException.SERVICE_UNAVAILABLE_CODE,\n message:\n 'Location service is currently not available. Please enable in app settings',\n });\n\n const googlePlayError = new OkHiException({\n code: OkHiException.SERVICE_UNAVAILABLE_CODE,\n message:\n 'Google Play Services is currently unavailable. Please enable in settings',\n });\n\n const handleError = (error: OkHiException) => {\n callback(null, error);\n };\n\n const handleGooglePlayServiceRequest = () => {\n requestEnableGooglePlayServices().then((googlePlayStatus) => {\n if (!googlePlayStatus) {\n handleError(googlePlayError);\n } else {\n handleRationaleRequest();\n }\n });\n };\n\n const handleRationaleAlert = (alertRationale: {\n title: string;\n text: string;\n grantButton?: { label: string };\n denyButton?: { label: string };\n }) => {\n return new Promise((resolve, _) => {\n Alert.alert(\n alertRationale.title,\n alertRationale.text,\n [\n {\n text: alertRationale.grantButton\n ? alertRationale.grantButton.label\n : 'Grant',\n onPress: () => {\n resolve(true);\n },\n },\n {\n text: alertRationale.denyButton\n ? alertRationale.denyButton.label\n : 'Deny',\n onPress: () => {\n resolve(false);\n },\n style: 'cancel',\n },\n ],\n {\n onDismiss: () => {\n resolve(false);\n },\n }\n );\n });\n };\n\n const handlePermissionRequest = () => {\n if (Platform.OS === 'ios') {\n OkHiNativeEvents.removeAllListeners('onLocationPermissionStatusUpdate');\n OkHiNativeEvents.addListener(\n 'onLocationPermissionStatusUpdate',\n (permissionUpdate) => {\n callback(permissionUpdate, null);\n }\n );\n if (locationPermissionType === 'whenInUse') {\n OkHiNativeModule.requestLocationPermission();\n } else {\n OkHiNativeModule.requestBackgroundLocationPermission();\n }\n } else {\n if (locationPermissionType === 'whenInUse') {\n requestLocationPermissionAndroid().then((whenInUseResult) =>\n callback(whenInUseResult ? 'authorizedWhenInUse' : 'denied', null)\n );\n } else {\n requestLocationPermissionAndroid().then((initialWhenInUseResult) => {\n if (!initialWhenInUseResult) {\n callback('denied', null);\n } else {\n callback('authorizedWhenInUse', null);\n requestBackgroundLocationPermission().then((alwaysResult) => {\n callback(\n alwaysResult ? 'authorizedAlways' : 'authorizedWhenInUse',\n null\n );\n });\n }\n });\n }\n }\n };\n\n const handleRationaleRequest = async () => {\n const currentStatus = await retriveLocationPermissionStatus();\n let showRationale = true;\n if (\n locationPermissionType === 'whenInUse' &&\n (currentStatus === 'authorizedWhenInUse' ||\n currentStatus === 'authorizedAlways')\n ) {\n showRationale = false;\n }\n if (\n locationPermissionType === 'always' &&\n currentStatus === 'authorizedAlways'\n ) {\n showRationale = false;\n }\n if (rationale && showRationale) {\n const result = await handleRationaleAlert(rationale);\n if (!result) {\n callback('rationaleDissmissed', null);\n } else {\n handlePermissionRequest();\n }\n } else {\n handlePermissionRequest();\n }\n };\n\n isLocationServicesEnabled()\n .then((serviceStatus) => {\n if (!serviceStatus && Platform.OS === 'ios') {\n handleError(serviceError);\n } else if (!serviceStatus && Platform.OS === 'android') {\n requestEnableLocationServices()\n .then((enableResult) => {\n if (!enableResult) {\n handleError(serviceError);\n } else {\n handleGooglePlayServiceRequest();\n }\n })\n .catch(handleError);\n } else {\n if (Platform.OS === 'ios') {\n handleRationaleRequest();\n } else {\n handleGooglePlayServiceRequest();\n }\n }\n })\n .catch(handleError);\n};\n\n/**\n * Open the device's app settings.\n */\nexport const openAppSettings = () => {\n OkHiNativeModule.openAppSettings();\n};\n\n/**\n * Retrives the location permission status from the device\n */\nexport const retriveLocationPermissionStatus =\n async (): Promise<LocationPermissionStatus> => {\n if (Platform.OS === 'ios') {\n return OkHiNativeModule.retriveLocationPermissionStatus() as Promise<LocationPermissionStatus>;\n }\n const alwaysPerm = await isBackgroundLocationPermissionGranted();\n if (alwaysPerm) {\n return 'authorizedAlways';\n }\n const whenInUsePerm = await isLocationPermissionGranted();\n return whenInUsePerm ? 'authorizedWhenInUse' : 'denied';\n };\n\n/**\n * Requests tracking authorization from the user. iOS only, iOS version >= 14\n * Read more: https://developer.apple.com/app-store/user-privacy-and-data-use/\n */\nexport const requestTrackingAuthorization = async (): Promise<\n string | null\n> => {\n return isValidPlatform(async () => {\n const result = await OkHiNativeModule.requestTrackingAuthorization();\n return result;\n }, 'ios');\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["index.ts"],"names":["NativeModules","NativeEventEmitter","OkHiNativeModule","Okhi","OkHiNativeEvents","addListener"],"mappings":"AAAA,SAASA,aAAT,EAAwBC,kBAAxB,QAAkD,cAAlD;
|
|
1
|
+
{"version":3,"sources":["index.ts"],"names":["NativeModules","NativeEventEmitter","OkHiNativeModule","Okhi","OkHiNativeEvents","addListener"],"mappings":"AAAA,SAASA,aAAT,EAAwBC,kBAAxB,QAAkD,cAAlD;AAwCA,OAAO,MAAMC,gBAAsC,GAAGF,aAAa,CAACG,IAA7D;AAEP,OAAO,MAAMC,gBAAgB,GAAG,IAAIH,kBAAJ,CAAuBD,aAAa,CAACG,IAArC,CAAzB;AAEPC,gBAAgB,CAACC,WAAjB,CAA6B,kCAA7B,EAAiE,MAAM,IAAvE","sourcesContent":["import { NativeModules, NativeEventEmitter } from 'react-native';\nimport type { OkVerifyStartConfiguration } from '../OkVerify/types';\n\ntype OkHiNativeModuleType = {\n multiply(a: number, b: number): Promise<number>;\n isLocationServicesEnabled(): Promise<boolean>;\n isLocationPermissionGranted(): Promise<boolean>;\n isBackgroundLocationPermissionGranted(): Promise<boolean>;\n requestLocationPermission(): Promise<boolean>;\n requestBackgroundLocationPermission(): Promise<boolean>;\n requestEnableLocationServices(): Promise<boolean>;\n isGooglePlayServicesAvailable(): Promise<boolean>;\n requestEnableGooglePlayServices(): Promise<boolean>;\n getSystemVersion(): Promise<number | string>;\n getAuthToken(branchId: string, clientKey: string): Promise<string>;\n initialize(configuration: string): Promise<void>;\n startAddressVerification(\n phoneNumber: string,\n locationId: string,\n lat: Number,\n lon: Number,\n configuration?: OkVerifyStartConfiguration\n ): Promise<string>;\n stopAddressVerification(\n phoneNumber: string,\n locationId: string\n ): Promise<string>;\n startForegroundService(): Promise<boolean>;\n stopForegroundService(): Promise<boolean>;\n isForegroundServiceRunning(): Promise<boolean>;\n initializeIOS(\n branchId: string,\n clientKey: string,\n environment: string\n ): Promise<boolean>;\n openAppSettings(): Promise<void>;\n retriveLocationPermissionStatus(): Promise<string>;\n requestTrackingAuthorization(): Promise<string | null>;\n};\n\nexport const OkHiNativeModule: OkHiNativeModuleType = NativeModules.Okhi;\n\nexport const OkHiNativeEvents = new NativeEventEmitter(NativeModules.Okhi);\n\nOkHiNativeEvents.addListener('onLocationPermissionStatusUpdate', () => null);\n"]}
|
|
@@ -44,6 +44,9 @@ export declare const requestEnableGooglePlayServices: () => Promise<boolean>;
|
|
|
44
44
|
* @returns {Promise<boolean>} A promise that resolves either a string on iOS or number on Android
|
|
45
45
|
*/
|
|
46
46
|
export declare const getSystemVersion: () => Promise<string | number>;
|
|
47
|
+
/**
|
|
48
|
+
* Requests location permission from the user. It'll also attempt to activate any disbaled services (Android Only)
|
|
49
|
+
*/
|
|
47
50
|
export declare const request: (locationPermissionType: LocationRequestPermissionType, rationale: {
|
|
48
51
|
title: string;
|
|
49
52
|
text: string;
|
|
@@ -54,5 +57,16 @@ export declare const request: (locationPermissionType: LocationRequestPermission
|
|
|
54
57
|
label: string;
|
|
55
58
|
};
|
|
56
59
|
} | null, callback: LocationPermissionCallback) => void;
|
|
60
|
+
/**
|
|
61
|
+
* Open the device's app settings.
|
|
62
|
+
*/
|
|
57
63
|
export declare const openAppSettings: () => void;
|
|
64
|
+
/**
|
|
65
|
+
* Retrives the location permission status from the device
|
|
66
|
+
*/
|
|
58
67
|
export declare const retriveLocationPermissionStatus: () => Promise<LocationPermissionStatus>;
|
|
68
|
+
/**
|
|
69
|
+
* Requests tracking authorization from the user. iOS only, iOS version >= 14
|
|
70
|
+
* Read more: https://developer.apple.com/app-store/user-privacy-and-data-use/
|
|
71
|
+
*/
|
|
72
|
+
export declare const requestTrackingAuthorization: () => Promise<string | null>;
|
|
@@ -21,6 +21,7 @@ declare type OkHiNativeModuleType = {
|
|
|
21
21
|
initializeIOS(branchId: string, clientKey: string, environment: string): Promise<boolean>;
|
|
22
22
|
openAppSettings(): Promise<void>;
|
|
23
23
|
retriveLocationPermissionStatus(): Promise<string>;
|
|
24
|
+
requestTrackingAuthorization(): Promise<string | null>;
|
|
24
25
|
};
|
|
25
26
|
export declare const OkHiNativeModule: OkHiNativeModuleType;
|
|
26
27
|
export declare const OkHiNativeEvents: NativeEventEmitter;
|
package/package.json
CHANGED
package/src/OkCollect/app.json
CHANGED
package/src/OkCore/Helpers.ts
CHANGED
|
@@ -154,6 +154,9 @@ export const requestEnableGooglePlayServices = (): Promise<boolean> => {
|
|
|
154
154
|
export const getSystemVersion = (): Promise<string | number> =>
|
|
155
155
|
isValidPlatform(OkHiNativeModule.getSystemVersion);
|
|
156
156
|
|
|
157
|
+
/**
|
|
158
|
+
* Requests location permission from the user. It'll also attempt to activate any disbaled services (Android Only)
|
|
159
|
+
*/
|
|
157
160
|
export const request = (
|
|
158
161
|
locationPermissionType: LocationRequestPermissionType,
|
|
159
162
|
rationale: {
|
|
@@ -318,10 +321,16 @@ export const request = (
|
|
|
318
321
|
.catch(handleError);
|
|
319
322
|
};
|
|
320
323
|
|
|
324
|
+
/**
|
|
325
|
+
* Open the device's app settings.
|
|
326
|
+
*/
|
|
321
327
|
export const openAppSettings = () => {
|
|
322
328
|
OkHiNativeModule.openAppSettings();
|
|
323
329
|
};
|
|
324
330
|
|
|
331
|
+
/**
|
|
332
|
+
* Retrives the location permission status from the device
|
|
333
|
+
*/
|
|
325
334
|
export const retriveLocationPermissionStatus =
|
|
326
335
|
async (): Promise<LocationPermissionStatus> => {
|
|
327
336
|
if (Platform.OS === 'ios') {
|
|
@@ -334,3 +343,16 @@ export const retriveLocationPermissionStatus =
|
|
|
334
343
|
const whenInUsePerm = await isLocationPermissionGranted();
|
|
335
344
|
return whenInUsePerm ? 'authorizedWhenInUse' : 'denied';
|
|
336
345
|
};
|
|
346
|
+
|
|
347
|
+
/**
|
|
348
|
+
* Requests tracking authorization from the user. iOS only, iOS version >= 14
|
|
349
|
+
* Read more: https://developer.apple.com/app-store/user-privacy-and-data-use/
|
|
350
|
+
*/
|
|
351
|
+
export const requestTrackingAuthorization = async (): Promise<
|
|
352
|
+
string | null
|
|
353
|
+
> => {
|
|
354
|
+
return isValidPlatform(async () => {
|
|
355
|
+
const result = await OkHiNativeModule.requestTrackingAuthorization();
|
|
356
|
+
return result;
|
|
357
|
+
}, 'ios');
|
|
358
|
+
};
|
|
@@ -35,6 +35,7 @@ type OkHiNativeModuleType = {
|
|
|
35
35
|
): Promise<boolean>;
|
|
36
36
|
openAppSettings(): Promise<void>;
|
|
37
37
|
retriveLocationPermissionStatus(): Promise<string>;
|
|
38
|
+
requestTrackingAuthorization(): Promise<string | null>;
|
|
38
39
|
};
|
|
39
40
|
|
|
40
41
|
export const OkHiNativeModule: OkHiNativeModuleType = NativeModules.Okhi;
|