react-native-okhi 1.0.13-beta.6 → 1.0.13-beta.9
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/.DS_Store +0 -0
- package/android/.idea/workspace.xml +43 -0
- package/ios/.DS_Store +0 -0
- package/ios/Okhi.swift +17 -7
- package/lib/commonjs/OkCore/Helpers.js +14 -1
- package/lib/commonjs/OkCore/Helpers.js.map +1 -1
- package/lib/commonjs/OkHiNativeModule/index.js +1 -0
- package/lib/commonjs/OkHiNativeModule/index.js.map +1 -1
- package/lib/module/OkCore/Helpers.js +11 -1
- package/lib/module/OkCore/Helpers.js.map +1 -1
- package/lib/module/OkHiNativeModule/index.js +1 -0
- package/lib/module/OkHiNativeModule/index.js.map +1 -1
- package/lib/typescript/OkCore/Helpers.d.ts +3 -5
- package/lib/typescript/OkCore/types.d.ts +3 -0
- package/package.json +1 -1
- package/src/OkCore/Helpers.ts +16 -14
- package/src/OkCore/types.ts +15 -0
- package/src/OkHiNativeModule/index.ts +2 -0
|
Binary file
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<project version="4">
|
|
3
|
+
<component name="AutoImportSettings">
|
|
4
|
+
<option name="autoReloadType" value="NONE" />
|
|
5
|
+
</component>
|
|
6
|
+
<component name="ChangeListManager">
|
|
7
|
+
<list default="true" id="f4e10cac-e2ae-4a1b-8fdb-d5cca8fffe82" name="Default Changelist" comment="" />
|
|
8
|
+
<option name="SHOW_DIALOG" value="false" />
|
|
9
|
+
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
|
10
|
+
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
|
|
11
|
+
<option name="LAST_RESOLUTION" value="IGNORE" />
|
|
12
|
+
</component>
|
|
13
|
+
<component name="ExternalProjectsData">
|
|
14
|
+
<projectState path="$PROJECT_DIR$">
|
|
15
|
+
<ProjectState />
|
|
16
|
+
</projectState>
|
|
17
|
+
</component>
|
|
18
|
+
<component name="Git.Settings">
|
|
19
|
+
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$/.." />
|
|
20
|
+
</component>
|
|
21
|
+
<component name="ProjectId" id="23g6t3hGhP45HLCw6iDg2PHxSnH" />
|
|
22
|
+
<component name="ProjectLevelVcsManager" settingsEditedManually="true" />
|
|
23
|
+
<component name="ProjectViewState">
|
|
24
|
+
<option name="hideEmptyMiddlePackages" value="true" />
|
|
25
|
+
<option name="showLibraryContents" value="true" />
|
|
26
|
+
</component>
|
|
27
|
+
<component name="PropertiesComponent">
|
|
28
|
+
<property name="RunOnceActivity.OpenProjectViewOnStart" value="true" />
|
|
29
|
+
<property name="RunOnceActivity.ShowReadmeOnStart" value="true" />
|
|
30
|
+
<property name="last_opened_file_path" value="$PROJECT_DIR$" />
|
|
31
|
+
</component>
|
|
32
|
+
<component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="0" CustomDictionaries="0" DefaultDictionary="application-level" UseSingleDictionary="true" transferred="true" />
|
|
33
|
+
<component name="TaskManager">
|
|
34
|
+
<task active="true" id="Default" summary="Default task">
|
|
35
|
+
<changelist id="f4e10cac-e2ae-4a1b-8fdb-d5cca8fffe82" name="Default Changelist" comment="" />
|
|
36
|
+
<created>1642143596559</created>
|
|
37
|
+
<option name="number" value="Default" />
|
|
38
|
+
<option name="presentableId" value="Default" />
|
|
39
|
+
<updated>1642143596559</updated>
|
|
40
|
+
</task>
|
|
41
|
+
<servers />
|
|
42
|
+
</component>
|
|
43
|
+
</project>
|
package/ios/.DS_Store
ADDED
|
Binary file
|
package/ios/Okhi.swift
CHANGED
|
@@ -11,8 +11,11 @@ class Okhi: RCTEventEmitter {
|
|
|
11
11
|
private var currentLocationPermissionRequestType: LocationPermissionRequestType = .always
|
|
12
12
|
private var resolve: RCTPromiseResolveBlock?
|
|
13
13
|
private var reject: RCTPromiseRejectBlock?
|
|
14
|
+
private var initResolve: RCTPromiseResolveBlock?
|
|
15
|
+
private var initReject: RCTPromiseRejectBlock?
|
|
14
16
|
private var okVerify: OkVerify
|
|
15
17
|
|
|
18
|
+
|
|
16
19
|
override init() {
|
|
17
20
|
okVerify = OkVerify()
|
|
18
21
|
super.init()
|
|
@@ -73,8 +76,8 @@ class Okhi: RCTEventEmitter {
|
|
|
73
76
|
}
|
|
74
77
|
|
|
75
78
|
@objc func initializeIOS(_ branchId: String, clientKey: String, environment: String, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
|
|
76
|
-
self.
|
|
77
|
-
self.
|
|
79
|
+
self.initResolve = resolve
|
|
80
|
+
self.initReject = reject
|
|
78
81
|
okVerify.initialize(with: branchId, clientKey: clientKey, environment: environment)
|
|
79
82
|
}
|
|
80
83
|
|
|
@@ -142,15 +145,22 @@ extension Okhi: OkVerifyDelegate {
|
|
|
142
145
|
}
|
|
143
146
|
|
|
144
147
|
func verify(_ okverify: OkVerify, didInitialize result: Bool) {
|
|
145
|
-
guard let resolve =
|
|
148
|
+
guard let resolve = initResolve else { return }
|
|
146
149
|
resolve(result)
|
|
147
|
-
self.
|
|
150
|
+
self.initResolve = nil
|
|
151
|
+
self.initReject = nil
|
|
148
152
|
}
|
|
149
153
|
|
|
150
154
|
func verify(_ okverify: OkVerify, didEncounterError error: OkVerifyError) {
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
155
|
+
if let initReject = initReject {
|
|
156
|
+
initReject(error.code, error.message, error)
|
|
157
|
+
self.initResolve = nil
|
|
158
|
+
self.initReject = nil
|
|
159
|
+
} else {
|
|
160
|
+
guard let reject = reject else { return }
|
|
161
|
+
reject(error.code, error.message, error)
|
|
162
|
+
self.reject = nil
|
|
163
|
+
}
|
|
154
164
|
}
|
|
155
165
|
|
|
156
166
|
func verify(_ okverify: OkVerify, didStartAddressVerificationFor locationId: String) {
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
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.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
|
|
|
@@ -208,4 +208,17 @@ const openAppSettings = () => {
|
|
|
208
208
|
};
|
|
209
209
|
|
|
210
210
|
exports.openAppSettings = openAppSettings;
|
|
211
|
+
|
|
212
|
+
const retriveLocationPermissionStatus = async () => {
|
|
213
|
+
const alwaysPerm = await isBackgroundLocationPermissionGranted();
|
|
214
|
+
|
|
215
|
+
if (alwaysPerm) {
|
|
216
|
+
return 'authorizedAlways';
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
const whenInUsePerm = await isLocationPermissionGranted();
|
|
220
|
+
return whenInUsePerm ? 'authorizedWhenInUse' : 'denied';
|
|
221
|
+
};
|
|
222
|
+
|
|
223
|
+
exports.retriveLocationPermissionStatus = retriveLocationPermissionStatus;
|
|
211
224
|
//# 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","console","log","isGranted","requestBackgroundLocationPermissionAndroid","permissions","requestBackgroundLocationPermissionIOS","requestBackgroundLocationPermission","requestEnableLocationServices","isGooglePlayServicesAvailable","requestEnableGooglePlayServices","request","locationPermissionType","rationale","callback","OkHiNativeEvents","removeAllListeners","addListener","then","result","whenInUseResult","version","Alert","alert","title","text","successButton","label","onPress","onDismiss","permission","openAppSettings"],"mappings":"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","sourcesContent":["import { OkHiNativeModule, OkHiNativeEvents } from '../OkHiNativeModule';\nimport { Alert, PermissionsAndroid, Platform } from 'react-native';\nimport { errorHandler, isValidPlatform } from './_helpers';\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 console.log('yooo');\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\ntype LocationPermissionStatus =\n | 'notDetermined'\n | 'restricted'\n | 'denied'\n | 'authorizedAlways'\n | 'authorizedWhenInUse'\n | 'authorized'\n | 'unknown';\n\ntype LocationPermissionType = 'whenInUse' | 'always';\n\ntype LocationPermissionCallback = (status: LocationPermissionStatus) => any;\n\nexport const request = (\n locationPermissionType: LocationPermissionType,\n rationale: {\n title: string;\n text: string;\n successButton?: { label: string };\n } | null,\n callback: LocationPermissionCallback\n) => {\n if (Platform.OS === 'ios') {\n OkHiNativeEvents.removeAllListeners('onLocationPermissionStatusUpdate');\n OkHiNativeEvents.addListener('onLocationPermissionStatusUpdate', callback);\n if (locationPermissionType === 'whenInUse') {\n OkHiNativeModule.requestLocationPermission();\n } else {\n OkHiNativeModule.requestBackgroundLocationPermission();\n }\n } else {\n if (locationPermissionType === 'whenInUse') {\n requestLocationPermissionAndroid().then((result) =>\n callback(result ? 'authorizedWhenInUse' : 'denied')\n );\n } else {\n requestLocationPermissionAndroid().then(async (whenInUseResult) => {\n if (whenInUseResult) {\n const version = await getSystemVersion();\n if (version >= 30 && rationale) {\n Alert.alert(\n rationale.title,\n rationale.text,\n [\n {\n text: rationale.successButton\n ? rationale.successButton.label\n : 'Okay',\n onPress: async () => {\n const result = await requestBackgroundLocationPermission();\n callback(\n result ? 'authorizedAlways' : 'authorizedWhenInUse'\n );\n },\n },\n ],\n {\n onDismiss: () => {\n callback('authorizedWhenInUse');\n },\n }\n );\n } else {\n const permission = await requestBackgroundLocationPermission();\n callback(permission ? 'authorizedAlways' : 'authorizedWhenInUse');\n }\n } else {\n callback('denied');\n }\n });\n }\n }\n};\n\nexport const openAppSettings = () => {\n OkHiNativeModule.openAppSettings();\n};\n"]}
|
|
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","console","log","isGranted","requestBackgroundLocationPermissionAndroid","permissions","requestBackgroundLocationPermissionIOS","requestBackgroundLocationPermission","requestEnableLocationServices","isGooglePlayServicesAvailable","requestEnableGooglePlayServices","request","locationPermissionType","rationale","callback","OkHiNativeEvents","removeAllListeners","addListener","then","result","whenInUseResult","version","Alert","alert","title","text","successButton","label","onPress","onDismiss","permission","openAppSettings","retriveLocationPermissionStatus","alwaysPerm","whenInUsePerm"],"mappings":"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","sourcesContent":["import { OkHiNativeModule, OkHiNativeEvents } from '../OkHiNativeModule';\nimport { Alert, PermissionsAndroid, Platform } from 'react-native';\nimport { errorHandler, isValidPlatform } from './_helpers';\nimport type {\n LocationPermissionCallback,\n LocationPermissionStatus,\n LocationRequestPermissionType,\n} from './types';\n\n/**\n * Checks whether location services are enabled\n * @returns {Promise<boolean>} A promise that resolves to a boolen value indicating whether the service is available\n */\nexport const isLocationServicesEnabled = (): Promise<boolean> => {\n return isValidPlatform(OkHiNativeModule.isLocationServicesEnabled);\n};\n\n/**\n * Checks whether when in use location permission is granted\n * @returns {Promise<boolean>} A promise that resolves to a boolen value indicating whether the permission is granted\n */\nexport const isLocationPermissionGranted = (): Promise<boolean> => {\n return isValidPlatform(OkHiNativeModule.isLocationPermissionGranted);\n};\n\nconst isBackgroundLocationPermissionGrantedAndroid =\n async (): Promise<boolean> => {\n const sdkVersion = await OkHiNativeModule.getSystemVersion();\n if (sdkVersion < 23) {\n return true;\n }\n if (sdkVersion < 29) {\n return await isLocationPermissionGranted();\n }\n const hasPermission = await PermissionsAndroid.check(\n PermissionsAndroid.PERMISSIONS.ACCESS_BACKGROUND_LOCATION\n );\n return hasPermission;\n };\n\nconst isBackgroundLocationPermissionGrantedIOS = (): Promise<boolean> => {\n return OkHiNativeModule.isBackgroundLocationPermissionGranted();\n};\n\n/**\n * Checks whether background location permission is granted\n * @returns {Promise<boolean>} A promise that resolves to a boolen value indicating whether the permission is granted\n */\nexport const isBackgroundLocationPermissionGranted = (): Promise<boolean> => {\n const fn =\n Platform.OS === 'android'\n ? isBackgroundLocationPermissionGrantedAndroid\n : isBackgroundLocationPermissionGrantedIOS;\n return isValidPlatform(fn);\n};\n\nconst requestLocationPermissionAndroid = async (): Promise<boolean> => {\n const status: any = await PermissionsAndroid.requestMultiple([\n PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION,\n PermissionsAndroid.PERMISSIONS.ACCESS_COARSE_LOCATION,\n ]);\n return status['android.permission.ACCESS_FINE_LOCATION'] === 'granted';\n};\n\nconst requestLocationPermissionIOS = (): Promise<boolean> => {\n return OkHiNativeModule.requestLocationPermission();\n};\n\n/**\n * Requests for when in use location permission\n * @returns {Promise<boolean>} A promise that resolves to a boolen value indicating whether the permission is granted\n */\nexport const requestLocationPermission = async (): Promise<boolean> => {\n console.log('yooo');\n const isGranted = await isLocationPermissionGranted();\n if (isGranted) return isGranted;\n return errorHandler(\n Platform.OS === 'android'\n ? requestLocationPermissionAndroid\n : requestLocationPermissionIOS\n );\n};\n\nconst requestBackgroundLocationPermissionAndroid =\n async (): Promise<boolean> => {\n const sdkVersion = await OkHiNativeModule.getSystemVersion();\n if (sdkVersion < 23) return true;\n if (sdkVersion >= 29) {\n const permissions: any = [\n PermissionsAndroid.PERMISSIONS.ACCESS_BACKGROUND_LOCATION,\n ];\n const status: any = await PermissionsAndroid.requestMultiple(permissions);\n return (\n status['android.permission.ACCESS_BACKGROUND_LOCATION'] === 'granted'\n );\n } else {\n return await requestLocationPermissionAndroid();\n }\n };\n\nconst requestBackgroundLocationPermissionIOS = (): Promise<boolean> => {\n return OkHiNativeModule.requestBackgroundLocationPermission();\n};\n\n/**\n * Requests for background location permission\n * @returns {Promise<boolean>} A promise that resolves to a boolen value indicating whether the permission is granted\n */\nexport const requestBackgroundLocationPermission =\n async (): Promise<boolean> => {\n const isGranted = await isBackgroundLocationPermissionGranted();\n if (isGranted) return isGranted;\n return errorHandler(\n Platform.OS === 'android'\n ? requestBackgroundLocationPermissionAndroid\n : requestBackgroundLocationPermissionIOS\n );\n };\n\n/**\n * Requests the user to enable location services by showing an in app modal on android and opening location settings on iOS\n * @returns {Promise<boolean>} A promise that resolves to either a boolean value on android or null on iOS\n */\nexport const requestEnableLocationServices = (): Promise<boolean | null> => {\n return isValidPlatform(OkHiNativeModule.requestEnableLocationServices);\n};\n\n/**\n * Android Only - Checks if Google Play Services is available\n * @returns {Promise<boolean>} A promise that resolves to a boolean value indicating whether the service is avaialbe\n */\nexport const isGooglePlayServicesAvailable = (): Promise<boolean> => {\n return isValidPlatform(\n OkHiNativeModule.isGooglePlayServicesAvailable,\n 'android'\n );\n};\n\n/**\n * Android Only - Requests user to enable Google Play Services\n * @returns {Promise<boolean>} A promise that resolves to a boolean value indicating whether the service is avaialbe\n */\nexport const requestEnableGooglePlayServices = (): Promise<boolean> => {\n return isValidPlatform(\n OkHiNativeModule.requestEnableGooglePlayServices,\n 'android'\n );\n};\n\n/**\n * Returns the system version of the current platform\n * @returns {Promise<boolean>} A promise that resolves either a string on iOS or number on Android\n */\nexport const getSystemVersion = (): Promise<string | number> =>\n isValidPlatform(OkHiNativeModule.getSystemVersion);\n\nexport const request = (\n locationPermissionType: LocationRequestPermissionType,\n rationale: {\n title: string;\n text: string;\n successButton?: { label: string };\n } | null,\n callback: LocationPermissionCallback\n) => {\n if (Platform.OS === 'ios') {\n OkHiNativeEvents.removeAllListeners('onLocationPermissionStatusUpdate');\n OkHiNativeEvents.addListener('onLocationPermissionStatusUpdate', callback);\n if (locationPermissionType === 'whenInUse') {\n OkHiNativeModule.requestLocationPermission();\n } else {\n OkHiNativeModule.requestBackgroundLocationPermission();\n }\n } else {\n if (locationPermissionType === 'whenInUse') {\n requestLocationPermissionAndroid().then((result) =>\n callback(result ? 'authorizedWhenInUse' : 'denied')\n );\n } else {\n requestLocationPermissionAndroid().then(async (whenInUseResult) => {\n if (whenInUseResult) {\n const version = await getSystemVersion();\n if (version >= 30 && rationale) {\n Alert.alert(\n rationale.title,\n rationale.text,\n [\n {\n text: rationale.successButton\n ? rationale.successButton.label\n : 'Okay',\n onPress: async () => {\n const result = await requestBackgroundLocationPermission();\n callback(\n result ? 'authorizedAlways' : 'authorizedWhenInUse'\n );\n },\n },\n ],\n {\n onDismiss: () => {\n callback('authorizedWhenInUse');\n },\n }\n );\n } else {\n const permission = await requestBackgroundLocationPermission();\n callback(permission ? 'authorizedAlways' : 'authorizedWhenInUse');\n }\n } else {\n callback('denied');\n }\n });\n }\n }\n};\n\nexport const openAppSettings = () => {\n OkHiNativeModule.openAppSettings();\n};\n\nexport const retriveLocationPermissionStatus =\n async (): Promise<LocationPermissionStatus> => {\n const alwaysPerm = await isBackgroundLocationPermissionGranted();\n if (alwaysPerm) {\n return 'authorizedAlways';\n }\n const whenInUsePerm = await isLocationPermissionGranted();\n return whenInUsePerm ? 'authorizedWhenInUse' : 'denied';\n };\n"]}
|
|
@@ -11,4 +11,5 @@ const OkHiNativeModule = _reactNative.NativeModules.Okhi;
|
|
|
11
11
|
exports.OkHiNativeModule = OkHiNativeModule;
|
|
12
12
|
const OkHiNativeEvents = new _reactNative.NativeEventEmitter(_reactNative.NativeModules.Okhi);
|
|
13
13
|
exports.OkHiNativeEvents = OkHiNativeEvents;
|
|
14
|
+
OkHiNativeEvents.addListener('onLocationPermissionStatusUpdate', () => null);
|
|
14
15
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["index.ts"],"names":["OkHiNativeModule","NativeModules","Okhi","OkHiNativeEvents","NativeEventEmitter"],"mappings":";;;;;;;AAAA;;AAsCO,MAAMA,gBAAsC,GAAGC,2BAAcC,IAA7D;;AAEA,MAAMC,gBAAgB,GAAG,IAAIC,+BAAJ,CAAuBH,2BAAcC,IAArC,CAAzB","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};\n\nexport const OkHiNativeModule: OkHiNativeModuleType = NativeModules.Okhi;\n\nexport const OkHiNativeEvents = new NativeEventEmitter(NativeModules.Okhi);\n"]}
|
|
1
|
+
{"version":3,"sources":["index.ts"],"names":["OkHiNativeModule","NativeModules","Okhi","OkHiNativeEvents","NativeEventEmitter","addListener"],"mappings":";;;;;;;AAAA;;AAsCO,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};\n\nexport const OkHiNativeModule: OkHiNativeModuleType = NativeModules.Okhi;\n\nexport const OkHiNativeEvents = new NativeEventEmitter(NativeModules.Okhi);\n\nOkHiNativeEvents.addListener('onLocationPermissionStatusUpdate', () => null);\n"]}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { OkHiNativeModule, OkHiNativeEvents } from '../OkHiNativeModule';
|
|
2
2
|
import { Alert, PermissionsAndroid, Platform } from 'react-native';
|
|
3
3
|
import { errorHandler, isValidPlatform } from './_helpers';
|
|
4
|
+
|
|
4
5
|
/**
|
|
5
6
|
* Checks whether location services are enabled
|
|
6
7
|
* @returns {Promise<boolean>} A promise that resolves to a boolen value indicating whether the service is available
|
|
7
8
|
*/
|
|
8
|
-
|
|
9
9
|
export const isLocationServicesEnabled = () => {
|
|
10
10
|
return isValidPlatform(OkHiNativeModule.isLocationServicesEnabled);
|
|
11
11
|
};
|
|
@@ -169,4 +169,14 @@ export const request = (locationPermissionType, rationale, callback) => {
|
|
|
169
169
|
export const openAppSettings = () => {
|
|
170
170
|
OkHiNativeModule.openAppSettings();
|
|
171
171
|
};
|
|
172
|
+
export const retriveLocationPermissionStatus = async () => {
|
|
173
|
+
const alwaysPerm = await isBackgroundLocationPermissionGranted();
|
|
174
|
+
|
|
175
|
+
if (alwaysPerm) {
|
|
176
|
+
return 'authorizedAlways';
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
const whenInUsePerm = await isLocationPermissionGranted();
|
|
180
|
+
return whenInUsePerm ? 'authorizedWhenInUse' : 'denied';
|
|
181
|
+
};
|
|
172
182
|
//# sourceMappingURL=Helpers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["Helpers.ts"],"names":["OkHiNativeModule","OkHiNativeEvents","Alert","PermissionsAndroid","Platform","errorHandler","isValidPlatform","isLocationServicesEnabled","isLocationPermissionGranted","isBackgroundLocationPermissionGrantedAndroid","sdkVersion","getSystemVersion","hasPermission","check","PERMISSIONS","ACCESS_BACKGROUND_LOCATION","isBackgroundLocationPermissionGrantedIOS","isBackgroundLocationPermissionGranted","fn","OS","requestLocationPermissionAndroid","status","requestMultiple","ACCESS_FINE_LOCATION","ACCESS_COARSE_LOCATION","requestLocationPermissionIOS","requestLocationPermission","console","log","isGranted","requestBackgroundLocationPermissionAndroid","permissions","requestBackgroundLocationPermissionIOS","requestBackgroundLocationPermission","requestEnableLocationServices","isGooglePlayServicesAvailable","requestEnableGooglePlayServices","request","locationPermissionType","rationale","callback","removeAllListeners","addListener","then","result","whenInUseResult","version","alert","title","text","successButton","label","onPress","onDismiss","permission","openAppSettings"],"mappings":"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","sourcesContent":["import { OkHiNativeModule, OkHiNativeEvents } from '../OkHiNativeModule';\nimport { Alert, PermissionsAndroid, Platform } from 'react-native';\nimport { errorHandler, isValidPlatform } from './_helpers';\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 console.log('yooo');\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\ntype LocationPermissionStatus =\n | 'notDetermined'\n | 'restricted'\n | 'denied'\n | 'authorizedAlways'\n | 'authorizedWhenInUse'\n | 'authorized'\n | 'unknown';\n\ntype LocationPermissionType = 'whenInUse' | 'always';\n\ntype LocationPermissionCallback = (status: LocationPermissionStatus) => any;\n\nexport const request = (\n locationPermissionType: LocationPermissionType,\n rationale: {\n title: string;\n text: string;\n successButton?: { label: string };\n } | null,\n callback: LocationPermissionCallback\n) => {\n if (Platform.OS === 'ios') {\n OkHiNativeEvents.removeAllListeners('onLocationPermissionStatusUpdate');\n OkHiNativeEvents.addListener('onLocationPermissionStatusUpdate', callback);\n if (locationPermissionType === 'whenInUse') {\n OkHiNativeModule.requestLocationPermission();\n } else {\n OkHiNativeModule.requestBackgroundLocationPermission();\n }\n } else {\n if (locationPermissionType === 'whenInUse') {\n requestLocationPermissionAndroid().then((result) =>\n callback(result ? 'authorizedWhenInUse' : 'denied')\n );\n } else {\n requestLocationPermissionAndroid().then(async (whenInUseResult) => {\n if (whenInUseResult) {\n const version = await getSystemVersion();\n if (version >= 30 && rationale) {\n Alert.alert(\n rationale.title,\n rationale.text,\n [\n {\n text: rationale.successButton\n ? rationale.successButton.label\n : 'Okay',\n onPress: async () => {\n const result = await requestBackgroundLocationPermission();\n callback(\n result ? 'authorizedAlways' : 'authorizedWhenInUse'\n );\n },\n },\n ],\n {\n onDismiss: () => {\n callback('authorizedWhenInUse');\n },\n }\n );\n } else {\n const permission = await requestBackgroundLocationPermission();\n callback(permission ? 'authorizedAlways' : 'authorizedWhenInUse');\n }\n } else {\n callback('denied');\n }\n });\n }\n }\n};\n\nexport const openAppSettings = () => {\n OkHiNativeModule.openAppSettings();\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["Helpers.ts"],"names":["OkHiNativeModule","OkHiNativeEvents","Alert","PermissionsAndroid","Platform","errorHandler","isValidPlatform","isLocationServicesEnabled","isLocationPermissionGranted","isBackgroundLocationPermissionGrantedAndroid","sdkVersion","getSystemVersion","hasPermission","check","PERMISSIONS","ACCESS_BACKGROUND_LOCATION","isBackgroundLocationPermissionGrantedIOS","isBackgroundLocationPermissionGranted","fn","OS","requestLocationPermissionAndroid","status","requestMultiple","ACCESS_FINE_LOCATION","ACCESS_COARSE_LOCATION","requestLocationPermissionIOS","requestLocationPermission","console","log","isGranted","requestBackgroundLocationPermissionAndroid","permissions","requestBackgroundLocationPermissionIOS","requestBackgroundLocationPermission","requestEnableLocationServices","isGooglePlayServicesAvailable","requestEnableGooglePlayServices","request","locationPermissionType","rationale","callback","removeAllListeners","addListener","then","result","whenInUseResult","version","alert","title","text","successButton","label","onPress","onDismiss","permission","openAppSettings","retriveLocationPermissionStatus","alwaysPerm","whenInUsePerm"],"mappings":"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","sourcesContent":["import { OkHiNativeModule, OkHiNativeEvents } from '../OkHiNativeModule';\nimport { Alert, PermissionsAndroid, Platform } from 'react-native';\nimport { errorHandler, isValidPlatform } from './_helpers';\nimport type {\n LocationPermissionCallback,\n LocationPermissionStatus,\n LocationRequestPermissionType,\n} from './types';\n\n/**\n * Checks whether location services are enabled\n * @returns {Promise<boolean>} A promise that resolves to a boolen value indicating whether the service is available\n */\nexport const isLocationServicesEnabled = (): Promise<boolean> => {\n return isValidPlatform(OkHiNativeModule.isLocationServicesEnabled);\n};\n\n/**\n * Checks whether when in use location permission is granted\n * @returns {Promise<boolean>} A promise that resolves to a boolen value indicating whether the permission is granted\n */\nexport const isLocationPermissionGranted = (): Promise<boolean> => {\n return isValidPlatform(OkHiNativeModule.isLocationPermissionGranted);\n};\n\nconst isBackgroundLocationPermissionGrantedAndroid =\n async (): Promise<boolean> => {\n const sdkVersion = await OkHiNativeModule.getSystemVersion();\n if (sdkVersion < 23) {\n return true;\n }\n if (sdkVersion < 29) {\n return await isLocationPermissionGranted();\n }\n const hasPermission = await PermissionsAndroid.check(\n PermissionsAndroid.PERMISSIONS.ACCESS_BACKGROUND_LOCATION\n );\n return hasPermission;\n };\n\nconst isBackgroundLocationPermissionGrantedIOS = (): Promise<boolean> => {\n return OkHiNativeModule.isBackgroundLocationPermissionGranted();\n};\n\n/**\n * Checks whether background location permission is granted\n * @returns {Promise<boolean>} A promise that resolves to a boolen value indicating whether the permission is granted\n */\nexport const isBackgroundLocationPermissionGranted = (): Promise<boolean> => {\n const fn =\n Platform.OS === 'android'\n ? isBackgroundLocationPermissionGrantedAndroid\n : isBackgroundLocationPermissionGrantedIOS;\n return isValidPlatform(fn);\n};\n\nconst requestLocationPermissionAndroid = async (): Promise<boolean> => {\n const status: any = await PermissionsAndroid.requestMultiple([\n PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION,\n PermissionsAndroid.PERMISSIONS.ACCESS_COARSE_LOCATION,\n ]);\n return status['android.permission.ACCESS_FINE_LOCATION'] === 'granted';\n};\n\nconst requestLocationPermissionIOS = (): Promise<boolean> => {\n return OkHiNativeModule.requestLocationPermission();\n};\n\n/**\n * Requests for when in use location permission\n * @returns {Promise<boolean>} A promise that resolves to a boolen value indicating whether the permission is granted\n */\nexport const requestLocationPermission = async (): Promise<boolean> => {\n console.log('yooo');\n const isGranted = await isLocationPermissionGranted();\n if (isGranted) return isGranted;\n return errorHandler(\n Platform.OS === 'android'\n ? requestLocationPermissionAndroid\n : requestLocationPermissionIOS\n );\n};\n\nconst requestBackgroundLocationPermissionAndroid =\n async (): Promise<boolean> => {\n const sdkVersion = await OkHiNativeModule.getSystemVersion();\n if (sdkVersion < 23) return true;\n if (sdkVersion >= 29) {\n const permissions: any = [\n PermissionsAndroid.PERMISSIONS.ACCESS_BACKGROUND_LOCATION,\n ];\n const status: any = await PermissionsAndroid.requestMultiple(permissions);\n return (\n status['android.permission.ACCESS_BACKGROUND_LOCATION'] === 'granted'\n );\n } else {\n return await requestLocationPermissionAndroid();\n }\n };\n\nconst requestBackgroundLocationPermissionIOS = (): Promise<boolean> => {\n return OkHiNativeModule.requestBackgroundLocationPermission();\n};\n\n/**\n * Requests for background location permission\n * @returns {Promise<boolean>} A promise that resolves to a boolen value indicating whether the permission is granted\n */\nexport const requestBackgroundLocationPermission =\n async (): Promise<boolean> => {\n const isGranted = await isBackgroundLocationPermissionGranted();\n if (isGranted) return isGranted;\n return errorHandler(\n Platform.OS === 'android'\n ? requestBackgroundLocationPermissionAndroid\n : requestBackgroundLocationPermissionIOS\n );\n };\n\n/**\n * Requests the user to enable location services by showing an in app modal on android and opening location settings on iOS\n * @returns {Promise<boolean>} A promise that resolves to either a boolean value on android or null on iOS\n */\nexport const requestEnableLocationServices = (): Promise<boolean | null> => {\n return isValidPlatform(OkHiNativeModule.requestEnableLocationServices);\n};\n\n/**\n * Android Only - Checks if Google Play Services is available\n * @returns {Promise<boolean>} A promise that resolves to a boolean value indicating whether the service is avaialbe\n */\nexport const isGooglePlayServicesAvailable = (): Promise<boolean> => {\n return isValidPlatform(\n OkHiNativeModule.isGooglePlayServicesAvailable,\n 'android'\n );\n};\n\n/**\n * Android Only - Requests user to enable Google Play Services\n * @returns {Promise<boolean>} A promise that resolves to a boolean value indicating whether the service is avaialbe\n */\nexport const requestEnableGooglePlayServices = (): Promise<boolean> => {\n return isValidPlatform(\n OkHiNativeModule.requestEnableGooglePlayServices,\n 'android'\n );\n};\n\n/**\n * Returns the system version of the current platform\n * @returns {Promise<boolean>} A promise that resolves either a string on iOS or number on Android\n */\nexport const getSystemVersion = (): Promise<string | number> =>\n isValidPlatform(OkHiNativeModule.getSystemVersion);\n\nexport const request = (\n locationPermissionType: LocationRequestPermissionType,\n rationale: {\n title: string;\n text: string;\n successButton?: { label: string };\n } | null,\n callback: LocationPermissionCallback\n) => {\n if (Platform.OS === 'ios') {\n OkHiNativeEvents.removeAllListeners('onLocationPermissionStatusUpdate');\n OkHiNativeEvents.addListener('onLocationPermissionStatusUpdate', callback);\n if (locationPermissionType === 'whenInUse') {\n OkHiNativeModule.requestLocationPermission();\n } else {\n OkHiNativeModule.requestBackgroundLocationPermission();\n }\n } else {\n if (locationPermissionType === 'whenInUse') {\n requestLocationPermissionAndroid().then((result) =>\n callback(result ? 'authorizedWhenInUse' : 'denied')\n );\n } else {\n requestLocationPermissionAndroid().then(async (whenInUseResult) => {\n if (whenInUseResult) {\n const version = await getSystemVersion();\n if (version >= 30 && rationale) {\n Alert.alert(\n rationale.title,\n rationale.text,\n [\n {\n text: rationale.successButton\n ? rationale.successButton.label\n : 'Okay',\n onPress: async () => {\n const result = await requestBackgroundLocationPermission();\n callback(\n result ? 'authorizedAlways' : 'authorizedWhenInUse'\n );\n },\n },\n ],\n {\n onDismiss: () => {\n callback('authorizedWhenInUse');\n },\n }\n );\n } else {\n const permission = await requestBackgroundLocationPermission();\n callback(permission ? 'authorizedAlways' : 'authorizedWhenInUse');\n }\n } else {\n callback('denied');\n }\n });\n }\n }\n};\n\nexport const openAppSettings = () => {\n OkHiNativeModule.openAppSettings();\n};\n\nexport const retriveLocationPermissionStatus =\n async (): Promise<LocationPermissionStatus> => {\n const alwaysPerm = await isBackgroundLocationPermissionGranted();\n if (alwaysPerm) {\n return 'authorizedAlways';\n }\n const whenInUsePerm = await isLocationPermissionGranted();\n return whenInUsePerm ? 'authorizedWhenInUse' : 'denied';\n };\n"]}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { NativeModules, NativeEventEmitter } from 'react-native';
|
|
2
2
|
export const OkHiNativeModule = NativeModules.Okhi;
|
|
3
3
|
export const OkHiNativeEvents = new NativeEventEmitter(NativeModules.Okhi);
|
|
4
|
+
OkHiNativeEvents.addListener('onLocationPermissionStatusUpdate', () => null);
|
|
4
5
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["index.ts"],"names":["NativeModules","NativeEventEmitter","OkHiNativeModule","Okhi","OkHiNativeEvents"],"mappings":"AAAA,SAASA,aAAT,EAAwBC,kBAAxB,QAAkD,cAAlD;AAsCA,OAAO,MAAMC,gBAAsC,GAAGF,aAAa,CAACG,IAA7D;AAEP,OAAO,MAAMC,gBAAgB,GAAG,IAAIH,kBAAJ,CAAuBD,aAAa,CAACG,IAArC,CAAzB","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};\n\nexport const OkHiNativeModule: OkHiNativeModuleType = NativeModules.Okhi;\n\nexport const OkHiNativeEvents = new NativeEventEmitter(NativeModules.Okhi);\n"]}
|
|
1
|
+
{"version":3,"sources":["index.ts"],"names":["NativeModules","NativeEventEmitter","OkHiNativeModule","Okhi","OkHiNativeEvents","addListener"],"mappings":"AAAA,SAASA,aAAT,EAAwBC,kBAAxB,QAAkD,cAAlD;AAsCA,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};\n\nexport const OkHiNativeModule: OkHiNativeModuleType = NativeModules.Okhi;\n\nexport const OkHiNativeEvents = new NativeEventEmitter(NativeModules.Okhi);\n\nOkHiNativeEvents.addListener('onLocationPermissionStatusUpdate', () => null);\n"]}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { LocationPermissionCallback, LocationPermissionStatus, LocationRequestPermissionType } from './types';
|
|
1
2
|
/**
|
|
2
3
|
* Checks whether location services are enabled
|
|
3
4
|
* @returns {Promise<boolean>} A promise that resolves to a boolen value indicating whether the service is available
|
|
@@ -43,10 +44,7 @@ export declare const requestEnableGooglePlayServices: () => Promise<boolean>;
|
|
|
43
44
|
* @returns {Promise<boolean>} A promise that resolves either a string on iOS or number on Android
|
|
44
45
|
*/
|
|
45
46
|
export declare const getSystemVersion: () => Promise<string | number>;
|
|
46
|
-
declare
|
|
47
|
-
declare type LocationPermissionType = 'whenInUse' | 'always';
|
|
48
|
-
declare type LocationPermissionCallback = (status: LocationPermissionStatus) => any;
|
|
49
|
-
export declare const request: (locationPermissionType: LocationPermissionType, rationale: {
|
|
47
|
+
export declare const request: (locationPermissionType: LocationRequestPermissionType, rationale: {
|
|
50
48
|
title: string;
|
|
51
49
|
text: string;
|
|
52
50
|
successButton?: {
|
|
@@ -54,4 +52,4 @@ export declare const request: (locationPermissionType: LocationPermissionType, r
|
|
|
54
52
|
};
|
|
55
53
|
} | null, callback: LocationPermissionCallback) => void;
|
|
56
54
|
export declare const openAppSettings: () => void;
|
|
57
|
-
export
|
|
55
|
+
export declare const retriveLocationPermissionStatus: () => Promise<LocationPermissionStatus>;
|
|
@@ -170,3 +170,6 @@ export declare type OkHiApplicationConfiguration = {
|
|
|
170
170
|
channelDescription: string;
|
|
171
171
|
};
|
|
172
172
|
};
|
|
173
|
+
export declare type LocationPermissionStatus = 'notDetermined' | 'restricted' | 'denied' | 'authorizedAlways' | 'authorizedWhenInUse' | 'authorized' | 'unknown';
|
|
174
|
+
export declare type LocationRequestPermissionType = 'whenInUse' | 'always';
|
|
175
|
+
export declare type LocationPermissionCallback = (status: LocationPermissionStatus) => any;
|
package/package.json
CHANGED
package/src/OkCore/Helpers.ts
CHANGED
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
import { OkHiNativeModule, OkHiNativeEvents } from '../OkHiNativeModule';
|
|
2
2
|
import { Alert, PermissionsAndroid, Platform } from 'react-native';
|
|
3
3
|
import { errorHandler, isValidPlatform } from './_helpers';
|
|
4
|
+
import type {
|
|
5
|
+
LocationPermissionCallback,
|
|
6
|
+
LocationPermissionStatus,
|
|
7
|
+
LocationRequestPermissionType,
|
|
8
|
+
} from './types';
|
|
4
9
|
|
|
5
10
|
/**
|
|
6
11
|
* Checks whether location services are enabled
|
|
@@ -149,21 +154,8 @@ export const requestEnableGooglePlayServices = (): Promise<boolean> => {
|
|
|
149
154
|
export const getSystemVersion = (): Promise<string | number> =>
|
|
150
155
|
isValidPlatform(OkHiNativeModule.getSystemVersion);
|
|
151
156
|
|
|
152
|
-
type LocationPermissionStatus =
|
|
153
|
-
| 'notDetermined'
|
|
154
|
-
| 'restricted'
|
|
155
|
-
| 'denied'
|
|
156
|
-
| 'authorizedAlways'
|
|
157
|
-
| 'authorizedWhenInUse'
|
|
158
|
-
| 'authorized'
|
|
159
|
-
| 'unknown';
|
|
160
|
-
|
|
161
|
-
type LocationPermissionType = 'whenInUse' | 'always';
|
|
162
|
-
|
|
163
|
-
type LocationPermissionCallback = (status: LocationPermissionStatus) => any;
|
|
164
|
-
|
|
165
157
|
export const request = (
|
|
166
|
-
locationPermissionType:
|
|
158
|
+
locationPermissionType: LocationRequestPermissionType,
|
|
167
159
|
rationale: {
|
|
168
160
|
title: string;
|
|
169
161
|
text: string;
|
|
@@ -226,3 +218,13 @@ export const request = (
|
|
|
226
218
|
export const openAppSettings = () => {
|
|
227
219
|
OkHiNativeModule.openAppSettings();
|
|
228
220
|
};
|
|
221
|
+
|
|
222
|
+
export const retriveLocationPermissionStatus =
|
|
223
|
+
async (): Promise<LocationPermissionStatus> => {
|
|
224
|
+
const alwaysPerm = await isBackgroundLocationPermissionGranted();
|
|
225
|
+
if (alwaysPerm) {
|
|
226
|
+
return 'authorizedAlways';
|
|
227
|
+
}
|
|
228
|
+
const whenInUsePerm = await isLocationPermissionGranted();
|
|
229
|
+
return whenInUsePerm ? 'authorizedWhenInUse' : 'denied';
|
|
230
|
+
};
|
package/src/OkCore/types.ts
CHANGED
|
@@ -178,3 +178,18 @@ export type OkHiApplicationConfiguration = {
|
|
|
178
178
|
channelDescription: string;
|
|
179
179
|
};
|
|
180
180
|
};
|
|
181
|
+
|
|
182
|
+
export type LocationPermissionStatus =
|
|
183
|
+
| 'notDetermined'
|
|
184
|
+
| 'restricted'
|
|
185
|
+
| 'denied'
|
|
186
|
+
| 'authorizedAlways'
|
|
187
|
+
| 'authorizedWhenInUse'
|
|
188
|
+
| 'authorized'
|
|
189
|
+
| 'unknown';
|
|
190
|
+
|
|
191
|
+
export type LocationRequestPermissionType = 'whenInUse' | 'always';
|
|
192
|
+
|
|
193
|
+
export type LocationPermissionCallback = (
|
|
194
|
+
status: LocationPermissionStatus
|
|
195
|
+
) => any;
|
|
@@ -39,3 +39,5 @@ type OkHiNativeModuleType = {
|
|
|
39
39
|
export const OkHiNativeModule: OkHiNativeModuleType = NativeModules.Okhi;
|
|
40
40
|
|
|
41
41
|
export const OkHiNativeEvents = new NativeEventEmitter(NativeModules.Okhi);
|
|
42
|
+
|
|
43
|
+
OkHiNativeEvents.addListener('onLocationPermissionStatusUpdate', () => null);
|