2023-10-17 09:35:10 -04:00
|
|
|
import { Platform } from 'react-native';
|
|
|
|
import { check, request, PERMISSIONS, RESULTS } from 'react-native-permissions';
|
2025-02-23 20:32:52 +00:00
|
|
|
import { navigationRef } from '../NavigationService.ts';
|
2024-07-23 13:44:04 -04:00
|
|
|
|
2023-10-17 09:35:10 -04:00
|
|
|
const isCameraAuthorizationStatusGranted = async () => {
|
|
|
|
const status = await check(Platform.OS === 'android' ? PERMISSIONS.ANDROID.CAMERA : PERMISSIONS.IOS.CAMERA);
|
|
|
|
return status === RESULTS.GRANTED;
|
|
|
|
};
|
2021-02-18 16:37:43 +03:00
|
|
|
|
2023-10-17 09:35:10 -04:00
|
|
|
const requestCameraAuthorization = () => {
|
|
|
|
return request(Platform.OS === 'android' ? PERMISSIONS.ANDROID.CAMERA : PERMISSIONS.IOS.CAMERA);
|
2021-02-18 16:37:43 +03:00
|
|
|
};
|
2022-09-05 19:34:02 +01:00
|
|
|
|
2025-02-25 15:24:43 +00:00
|
|
|
const scanQrHelper = async (): Promise<string> => {
|
|
|
|
await requestCameraAuthorization();
|
2025-02-23 20:32:52 +00:00
|
|
|
return new Promise(resolve => {
|
|
|
|
if (navigationRef.isReady()) {
|
|
|
|
navigationRef.current?.navigate('ScanQRCode', {
|
|
|
|
onBarScanned: (data: string) => {
|
|
|
|
resolve(data);
|
|
|
|
},
|
|
|
|
});
|
|
|
|
}
|
|
|
|
});
|
|
|
|
};
|
|
|
|
|
|
|
|
export { isCameraAuthorizationStatusGranted, requestCameraAuthorization, scanQrHelper };
|