mirror of
https://github.com/mosip/inji-wallet.git
synced 2026-01-09 13:38:01 -05:00
* [INJIMOB-3190]: add support for ovp deeplink in ios Signed-off-by: adityankannan-tw <adityan.kannan@thoughtworks.com> * [INJIMOB-3190]: refactor ovp deeplink Signed-off-by: adityankannan-tw <adityan.kannan@thoughtworks.com> * [INJIMOB-3190]: show text for ios ovp deeplink flow Signed-off-by: adityankannan-tw <adityan.kannan@thoughtworks.com> * [INJIMOB-3190]: refactor ovp deeplink flow Signed-off-by: adityankannan-tw <adityan.kannan@thoughtworks.com> * [INJIMOB-3190]: refactor state variables and extract functions Signed-off-by: adityankannan-tw <adityan.kannan@thoughtworks.com> * [INJIMOB-3190]: fix additional message shown in android success overlay Signed-off-by: adityankannan-tw <adityan.kannan@thoughtworks.com> * [INJIMOB-3190]: refactor no sharable vc variable Signed-off-by: adityankannan-tw <adityan.kannan@thoughtworks.com> * [INJIMOB-3190]: refactor send vp screen and error modal Signed-off-by: adityankannan-tw <adityan.kannan@thoughtworks.com> * [INJIMOB-3190]: refactor send vp screen and error modal Signed-off-by: adityankannan-tw <adityan.kannan@thoughtworks.com> * [INJIMOB-3190]: refactor scan machine actions Signed-off-by: adityankannan-tw <adityan.kannan@thoughtworks.com> * [INJIMOB-3153]: fix closing brace issue Signed-off-by: Alka Prasad <prasadalka1998@gmail.com> --------- Signed-off-by: adityankannan-tw <adityan.kannan@thoughtworks.com> Signed-off-by: Alka Prasad <prasadalka1998@gmail.com> Co-authored-by: Alka Prasad <prasadalka1998@gmail.com>
126 lines
4.8 KiB
TypeScript
126 lines
4.8 KiB
TypeScript
import {useSelector} from '@xstate/react';
|
|
import {useContext} from 'react';
|
|
import {useTranslation} from 'react-i18next';
|
|
import {selectShareableVcsMetadata} from '../../machines/VerifiableCredential/VCMetaMachine/VCMetaSelectors';
|
|
import {GlobalContext} from '../../shared/GlobalContext';
|
|
import {
|
|
selectIsLocationDenied,
|
|
selectIsLocationDisabled,
|
|
selectIsQrLoginStoring,
|
|
selectIsScanning,
|
|
selectIsInvalid,
|
|
selectIsShowQrLogin,
|
|
selectQrLoginRef,
|
|
selectIsQuickShareDone,
|
|
selectShowQuickShareSuccessBanner,
|
|
} from '../../machines/bleShare/scan/scanSelectors';
|
|
import {
|
|
selectIsBluetoothDenied,
|
|
selectIsNearByDevicesPermissionDenied,
|
|
selectReadyForBluetoothStateCheck,
|
|
selectIsBluetoothPermissionDenied,
|
|
selectIsStartPermissionCheck,
|
|
selectIsLocationPermissionRationale,
|
|
} from '../../machines/bleShare/commonSelectors';
|
|
import {ScanEvents} from '../../machines/bleShare/scan/scanMachine';
|
|
import {selectIsMinimumStorageRequiredForAuditEntryLimitReached} from '../../machines/bleShare/scan/scanSelectors';
|
|
import {BOTTOM_TAB_ROUTES} from '../../routes/routesConstants';
|
|
import {MainBottomTabParamList} from '../../routes/routeTypes';
|
|
import {useNavigation, NavigationProp} from '@react-navigation/native';
|
|
import {selectAuthorizationRequest, selectIsLinkCode} from '../../machines/app';
|
|
|
|
export function useScanScreen() {
|
|
const {t} = useTranslation('ScanScreen');
|
|
const {appService} = useContext(GlobalContext);
|
|
const scanService = appService.children.get('scan')!!;
|
|
const vcMetaService = appService.children.get('vcMeta')!!;
|
|
|
|
const shareableVcsMetadata = useSelector(
|
|
vcMetaService,
|
|
selectShareableVcsMetadata,
|
|
);
|
|
|
|
const isLocationDisabled = useSelector(scanService, selectIsLocationDisabled);
|
|
const isLocationDenied = useSelector(scanService, selectIsLocationDenied);
|
|
const isReadyForBluetoothStateCheck = useSelector(
|
|
scanService,
|
|
selectReadyForBluetoothStateCheck,
|
|
);
|
|
const isStartPermissionCheck = useSelector(
|
|
scanService,
|
|
selectIsStartPermissionCheck,
|
|
);
|
|
const isNearByDevicesPermissionDenied = useSelector(
|
|
scanService,
|
|
selectIsNearByDevicesPermissionDenied,
|
|
);
|
|
const isBluetoothPermissionDenied = useSelector(
|
|
scanService,
|
|
selectIsBluetoothPermissionDenied,
|
|
);
|
|
const isBluetoothDenied = useSelector(scanService, selectIsBluetoothDenied);
|
|
const locationError = {message: '', button: ''};
|
|
const isMinimumStorageRequiredForAuditEntryLimitReached = useSelector(
|
|
scanService,
|
|
selectIsMinimumStorageRequiredForAuditEntryLimitReached,
|
|
);
|
|
|
|
if (isLocationDisabled) {
|
|
locationError.message = t('errors.locationDisabled.message');
|
|
locationError.button = t('errors.locationDisabled.button');
|
|
} else if (isLocationDenied) {
|
|
locationError.message = t('errors.locationDenied.message');
|
|
locationError.button = t('errors.locationDenied.button');
|
|
}
|
|
type ScanScreenNavigation = NavigationProp<MainBottomTabParamList>;
|
|
const navigation = useNavigation<ScanScreenNavigation>();
|
|
const GOTO_HOME = () => {
|
|
scanService.send(ScanEvents.RESET());
|
|
navigation.navigate(BOTTOM_TAB_ROUTES.home);
|
|
};
|
|
const ALLOWED = () => scanService.send(ScanEvents.ALLOWED());
|
|
const DENIED = () => scanService.send(ScanEvents.DENIED());
|
|
const isLocalPermissionRational = useSelector(
|
|
scanService,
|
|
selectIsLocationPermissionRationale,
|
|
);
|
|
const isNoSharableVCs = !shareableVcsMetadata.length;
|
|
|
|
return {
|
|
locationError,
|
|
isNoSharableVCs,
|
|
isBluetoothPermissionDenied,
|
|
isNearByDevicesPermissionDenied,
|
|
isLocationDisabled,
|
|
isLocationDenied,
|
|
isBluetoothDenied,
|
|
isStartPermissionCheck,
|
|
isReadyForBluetoothStateCheck,
|
|
isMinimumStorageRequiredForAuditEntryLimitReached,
|
|
isScanning: useSelector(scanService, selectIsScanning),
|
|
isQuickShareDone: useSelector(scanService, selectIsQuickShareDone),
|
|
showQuickShareSuccessBanner: useSelector(
|
|
scanService,
|
|
selectShowQuickShareSuccessBanner,
|
|
),
|
|
selectIsInvalid: useSelector(scanService, selectIsInvalid),
|
|
isQrLogin: useSelector(scanService, selectIsShowQrLogin),
|
|
isQrLoginstoring: useSelector(scanService, selectIsQrLoginStoring),
|
|
isQrRef: useSelector(scanService, selectQrLoginRef),
|
|
LOCATION_REQUEST: () => scanService.send(ScanEvents.LOCATION_REQUEST()),
|
|
GOTO_SETTINGS: () => scanService.send(ScanEvents.GOTO_SETTINGS()),
|
|
DISMISS: () => scanService.send(ScanEvents.DISMISS()),
|
|
DISMISS_QUICK_SHARE_BANNER: () =>
|
|
scanService.send(ScanEvents.DISMISS_QUICK_SHARE_BANNER()),
|
|
START_PERMISSION_CHECK: () =>
|
|
scanService.send(ScanEvents.START_PERMISSION_CHECK()),
|
|
SCAN: (qrCode: string) => scanService.send(ScanEvents.SCAN(qrCode)),
|
|
GOTO_HOME,
|
|
ALLOWED,
|
|
DENIED,
|
|
isLocalPermissionRational,
|
|
authorizationRequest: useSelector(appService, selectAuthorizationRequest),
|
|
linkcode: useSelector(appService, selectIsLinkCode),
|
|
};
|
|
}
|