[INJIMOB-722]: Post Face Capture Notificaiton (#1270)

* [INJIMOB-722]: Showing Success Banner on Face Verification and Error screen on Face Verification Failure.

Signed-off-by: BalachandarG <balachandar.g@thoughtworks.com>

* [injimob-604]: Updating the messagein error screen.

Signed-off-by: BalachandarG <balachandar.g@thoughtworks.com>

* [Injimob-722]: Updating the constants.

Signed-off-by: BalachandarG <balachandar.g@thoughtworks.com>

* [Injimob-722]: Changes in event params of scan machine.

Signed-off-by: BalachandarG <balachandar.g@thoughtworks.com>

* [InjiMob-745] Implemented sharing error modal with respective CTA's and message when VC sharing has failed. (#1234)

* [INJIMOB-745]: Implemented Error moda of sharing failure with title, message & CTAs were display based on Error_codes

Signed-off-by: Anil_Kumar_Majji <106086523+Anil-kumar-Majji@users.noreply.github.com>

* [INJIMOB-745]: Implemented Error modal of sharing failure with title, message & CTAs were display based on Error_codes

Signed-off-by: Anil_Kumar_Majji <106086523+Anil-kumar-Majji@users.noreply.github.com>

* [INJIMOB-745]: Updated respective text in all the locals

Signed-off-by: Anil_Kumar_Majji <106086523+Anil-kumar-Majji@users.noreply.github.com>

* [INJIMOB-745]: Fixed the error of go to history button in success sharing status

Signed-off-by: Anil_Kumar_Majji <106086523+Anil-kumar-Majji@users.noreply.github.com>

* [INJIMOB-745]: Resolved PR Merge conflicts

Signed-off-by: Anil_Kumar_Majji <106086523+Anil-kumar-Majji@users.noreply.github.com>

* [INJIMOB-745]: remove duplicate import which causes build issue

Signed-off-by: srikanth716 <srikanthsri7447@gmail.com>

* [INJIMOB-745]: Modified SharingStatusModal into dynamic props for buttons, text as per requirement

Signed-off-by: Anil_Kumar_Majji <106086523+Anil-kumar-Majji@users.noreply.github.com>

* [INJIMOB-745]: Made changes in the rendering of respective button as per requirements

Signed-off-by: Anil_Kumar_Majji <106086523+Anil-kumar-Majji@users.noreply.github.com>

* [INJIMOB-745]: Adjusted the alignment of bottom buttons & Made header as per wire frame

Signed-off-by: Anil_Kumar_Majji <106086523+Anil-kumar-Majji@users.noreply.github.com>

* [INJIMOB-745]: Changed the verifier side  text messages of Error codes[TUV_UNK_001, TVV_UNK_001, 002, 003]

Signed-off-by: Anil_Kumar_Majji <106086523+Anil-kumar-Majji@users.noreply.github.com>

* [INJIMOB-745]: Added accessible props to Pressable in SharingStatusModal

Signed-off-by: Anil_Kumar_Majji <106086523+Anil-kumar-Majji@users.noreply.github.com>

* [INJIMOB-745]: Modified success screen icons in to SVG's

Signed-off-by: Anil_Kumar_Majji <106086523+Anil-kumar-Majji@users.noreply.github.com>

---------

Signed-off-by: Anil_Kumar_Majji <106086523+Anil-kumar-Majji@users.noreply.github.com>
Signed-off-by: srikanth716 <srikanthsri7447@gmail.com>
Co-authored-by: srikanth716 <srikanthsri7447@gmail.com>

* MOSIP-31468 MOSIP-31384 added sprint 20 testcases for android (#1267)

* MOSIP-31255 MOSIP-31106

Signed-off-by: Anup Nehe <anup.nehe@technoforte.co.in>

* resolve conflicts

Signed-off-by: Anup Nehe <anup.nehe@technoforte.co.in>

* MOSIP-31456

Signed-off-by: Anup Nehe <anup.nehe@technoforte.co.in>

* resolve conflict

Signed-off-by: Anup Nehe <anup.nehe@technoforte.co.in>

* added sunbird test case for ios

Signed-off-by: Anup Nehe <anup.nehe@technoforte.co.in>

* MOSIP-31478

Signed-off-by: Anup Nehe <anup.nehe@technoforte.co.in>

* resolve conflict

Signed-off-by: Anup Nehe <anup.nehe@technoforte.co.in>

* resolve conflict

Signed-off-by: Anup Nehe <anup.nehe@technoforte.co.in>

* resolve conflict

Signed-off-by: Anup Nehe <anup.nehe@technoforte.co.in>

* resolve conflict

Signed-off-by: Anup Nehe <anup.nehe@technoforte.co.in>

* MOSIP-31468 MOSIP-31384

Signed-off-by: Anup Nehe <anup.nehe@technoforte.co.in>

* resolve conflict

Signed-off-by: Anup Nehe <anup.nehe@technoforte.co.in>

* MOSIP-31384

Signed-off-by: Anup Nehe <anup.nehe@technoforte.co.in>

* resolve conflict

Signed-off-by: Anup Nehe <anup.nehe@technoforte.co.in>

* resolve conflict

Signed-off-by: Anup Nehe <anup.nehe@technoforte.co.in>

---------

Signed-off-by: Anup Nehe <anup.nehe@technoforte.co.in>
Signed-off-by: BalachandarG <balachandar.g@thoughtworks.com>

* [Injimob-685] fix download error issue which we are getting when the received vc is tampered (#1268)

* [INJIMOB-685] remove received vc metadata from storage when it is tampered or failed to store vc into storage

Signed-off-by: PuBHARGAVI <46226958+PuBHARGAVI@users.noreply.github.com>

* [INJIMOB-685] remove redundant store error in request machine

Signed-off-by: PuBHARGAVI <46226958+PuBHARGAVI@users.noreply.github.com>

* [INJIMOB-685] remove redundant logic to remove the tampered vc metadata

Signed-off-by: PuBHARGAVI <46226958+PuBHARGAVI@users.noreply.github.com>

* [INJIMOB-685] fix the logic of checking if tampered vc is myvc or received vc

Signed-off-by: PuBHARGAVI <46226958+PuBHARGAVI@users.noreply.github.com>

* [INJIMOB-685] fix tampering of received vcs

If the received vc is tampered, we should be deleting the vc file & metadata of it. Since the metadata removal was not performed, we were getting download error. This is resolved here.

Co-authored-by: PuBHARGAVI <46226958+PuBHARGAVI@users.noreply.github.com>
Signed-off-by: KiruthikaJeyashankar <81218987+KiruthikaJeyashankar@users.noreply.github.com>

* [INJIMOB-685] remove unused state and actions in requestMachine

After adding timestamp to the incoming received vc, every vc shared from wallet is condered as separate vc. Due to this reason, the check if the incoming vc is already available in our received vcs will always be returning false. Thus removing the mergingIncomingVcrelated states in requestMachine to avoid unnecessary checks.

Co-authored-by: PuBHARGAVI <46226958+PuBHARGAVI@users.noreply.github.com>
Signed-off-by: KiruthikaJeyashankar <81218987+KiruthikaJeyashankar@users.noreply.github.com>

* [INJIMOB-685] remove sharing reason related code

Co-authored-by: PuBHARGAVI <46226958+PuBHARGAVI@users.noreply.github.com>
Signed-off-by: KiruthikaJeyashankar <81218987+KiruthikaJeyashankar@users.noreply.github.com>

* [INJIMOB_685] remove unused event in vc machine

Signed-off-by: PuBHARGAVI <46226958+PuBHARGAVI@users.noreply.github.com>

---------

Signed-off-by: PuBHARGAVI <46226958+PuBHARGAVI@users.noreply.github.com>
Signed-off-by: KiruthikaJeyashankar <81218987+KiruthikaJeyashankar@users.noreply.github.com>
Co-authored-by: KiruthikaJeyashankar <81218987+KiruthikaJeyashankar@users.noreply.github.com>

* Fixed receive card header is fully in caps (#1269)

Signed-off-by: Anil_Kumar_Majji <106086523+Anil-kumar-Majji@users.noreply.github.com>
Signed-off-by: BalachandarG <balachandar.g@thoughtworks.com>

* [INJIMOB-856] add testIds (#1272)

testIDs added for - Inji tour guide slides, banner notification, issuer component

Signed-off-by: KiruthikaJeyashankar <81218987+KiruthikaJeyashankar@users.noreply.github.com>

* [INJIMOB-852] - Grace fully handling scrollToIndex error of flatlist (#1275)

Signed-off-by: Sreenadh S <32409698+sree96@users.noreply.github.com>
Signed-off-by: BalachandarG <balachandar.g@thoughtworks.com>

* [INJIMOB-632] show backup / restore in progress banner (#1264)

* [INJIMOB-632] show backup in progress banner

Signed-off-by: KiruthikaJeyashankar <81218987+KiruthikaJeyashankar@users.noreply.github.com>

* [INJIMOB-632] show restore in progress banner

Signed-off-by: KiruthikaJeyashankar <81218987+KiruthikaJeyashankar@users.noreply.github.com>

* [INJIMOB-632] change info banner's color

Signed-off-by: KiruthikaJeyashankar <81218987+KiruthikaJeyashankar@users.noreply.github.com>

---------

Signed-off-by: KiruthikaJeyashankar <81218987+KiruthikaJeyashankar@users.noreply.github.com>

* [INJIMOB-864] disable backup button when restoring and vice versa (#1279)

Signed-off-by: KiruthikaJeyashankar <81218987+KiruthikaJeyashankar@users.noreply.github.com>
Signed-off-by: BalachandarG <balachandar.g@thoughtworks.com>

* [Injimob-722]: Adding Banner type Info

Signed-off-by: BalachandarG <balachandar.g@thoughtworks.com>

* [INJIMOB-867] - remove all files including unsynced files and get latest file based on date (#1281)

Signed-off-by: Sreenadh S <32409698+sree96@users.noreply.github.com>
Signed-off-by: BalachandarG <balachandar.g@thoughtworks.com>

* [INJIMOB - 865,868] - Fix duplicate VC key for restored VC's and remove metadata if vc file not found (#1283)

* [INJIMOB-something] use incremental timestamp for restore and make unload take a flag start time

Signed-off-by: Harsh Vardhan <harsh59v@gmail.com>

* [INJIMOB-865,868] fix duplicate vckey value for restored vcs and remove vc metadata if file not found

Co-authored-by: adityankannan-tw <109274996+adityankannan-tw@users.noreply.github.com>
Signed-off-by: PuBHARGAVI <46226958+PuBHARGAVI@users.noreply.github.com>

* [INJIMOB-869] remove unused method in store.ts machine

Co-authored-by: adityankannan-tw <109274996+adityankannan-tw@users.noreply.github.com>
Signed-off-by: PuBHARGAVI <46226958+PuBHARGAVI@users.noreply.github.com>

* [INJIMOB-869] revert removing vc metadata if file not found

Co-authored-by: adityankannan-tw <109274996+adityankannan-tw@users.noreply.github.com>
Signed-off-by: PuBHARGAVI <46226958+PuBHARGAVI@users.noreply.github.com>

* [INJIMOB-865] fix tamper vc removal

When a VC is tampered, we get the tampered vc popup. Once we press okay button in the popup, we will be refreshing the vc machine's myVcs & recievedVcs context. Due to calling of parallel states, we were having issue with refreshing of myVcs. It is fixed by targeting to init state to refresh

Co-authored-by: adityankannan-tw <109274996+adityankannan-tw@users.noreply.github.com>
Co-authored-by: PuBHARGAVI <46226958+PuBHARGAVI@users.noreply.github.com>
Signed-off-by: KiruthikaJeyashankar <81218987+KiruthikaJeyashankar@users.noreply.github.com>

* [INJIMOB-865] remove vc metadata when file is not found

Co-authored-by: adityankannan-tw <109274996+adityankannan-tw@users.noreply.github.com>
Co-authored-by: KiruthikaJeyashankar <81218987+KiruthikaJeyashankar@users.noreply.github.com>
Signed-off-by: PuBHARGAVI <46226958+PuBHARGAVI@users.noreply.github.com>

* [INJIMOB-869] add code comments & fix minor code issues

Signed-off-by: Harsh Vardhan <harsh59v@gmail.com>

---------

Signed-off-by: Harsh Vardhan <harsh59v@gmail.com>
Signed-off-by: PuBHARGAVI <46226958+PuBHARGAVI@users.noreply.github.com>
Signed-off-by: KiruthikaJeyashankar <81218987+KiruthikaJeyashankar@users.noreply.github.com>
Co-authored-by: Harsh Vardhan <harsh59v@gmail.com>
Co-authored-by: PuBHARGAVI <46226958+PuBHARGAVI@users.noreply.github.com>
Co-authored-by: KiruthikaJeyashankar <81218987+KiruthikaJeyashankar@users.noreply.github.com>
Signed-off-by: BalachandarG <balachandar.g@thoughtworks.com>

* [Injimob-722]: Updating face capture success banner status.

Signed-off-by: BalachandarG <balachandar.g@thoughtworks.com>

* INJIMOB-604 VC Verification Failure Scenarios (#1228)

* [INJI-604]: Handle Verification VC Error Scenarios

Signed-off-by: BalachandarG <balachandar.g@thoughtworks.com>

* [INJIMOB-604] remove the card from UI when verify credential is failed and show error overlay

Signed-off-by: PuBHARGAVI <46226958+PuBHARGAVI@users.noreply.github.com>

* [INJIMOB-604] remove unused actions in existingMosipVcItem and issuers machine

Signed-off-by: PuBHARGAVI <46226958+PuBHARGAVI@users.noreply.github.com>

* INJIMOB-604 Replace Error message overlay with new error screen.

Signed-off-by: BalachandarG <balachandar.g@thoughtworks.com>

* [INJI-611]: New Error screen implemented

Signed-off-by: BalachandarG <balachandar.g@thoughtworks.com>

* [INJI-604]: Transation added for Verification error messages.

Signed-off-by: BalachandarG <balachandar.g@thoughtworks.com>

* [INJI-604] merge develop and resolve conflicts

Signed-off-by: PuBHARGAVI <46226958+PuBHARGAVI@users.noreply.github.com>

* [INJI-604] remove unnecessary log in error screen

Signed-off-by: PuBHARGAVI <46226958+PuBHARGAVI@users.noreply.github.com>

* [INJIMOB-604] remove removeVcFromMyVcs action from verify vc failed event and fix typegen warnings

Signed-off-by: PuBHARGAVI <46226958+PuBHARGAVI@users.noreply.github.com>

* INJIMOB-604 : Removing logs and renaming functions

Signed-off-by: BalachandarG <balachandar.g@thoughtworks.com>

* [INJIMOB-604]: Removing unused method.

Signed-off-by: BalachandarG <balachandar.g@thoughtworks.com>

* [Inji-604]: Fixing the issue of recursive VC deletion during Go Back event in Verification Error screen.

Signed-off-by: BalachandarG <balachandar.g@thoughtworks.com>

* [Inji-604]: Fixing bugs post conflict resolve.

Signed-off-by: BalachandarG <balachandar.g@thoughtworks.com>

* [Inji-604]: Removing unused events and adding translations for Go Back button

* [Inji-604]: Removed angle brackets for Technical Error

* [Inji-604]: Added ToDo to handle backup

* [Inji-604]: Removing isVerified flag from the Existing VC Item Machine.

* [Inji-604] iOS crash fixed for Verification error Go Back Button

Signed-off-by: BalachandarG <balachandar.g@thoughtworks.com>

* [Inji-604]: Simplified condition for result in verify Credential call.

Signed-off-by: BalachandarG <balachandar.g@thoughtworks.com>

---------

Signed-off-by: BalachandarG <balachandar.g@thoughtworks.com>
Signed-off-by: PuBHARGAVI <46226958+PuBHARGAVI@users.noreply.github.com>
Co-authored-by: PuBHARGAVI <46226958+PuBHARGAVI@users.noreply.github.com>

* Inji mob 737 rtl issue (#1254)

* [INJIMOB-737]: fix RTL issue

Signed-off-by: srikanth716 <srikanthsri7447@gmail.com>

* [INJIMOB-737]: fix receive card navigation issue

Signed-off-by: srikanth716 <srikanthsri7447@gmail.com>

* [INJIMOB-737]: fix receive card back icon rendering position

Signed-off-by: srikanth716 <srikanthsri7447@gmail.com>

* [INJIMOB-737]: refactor the header right and left

Signed-off-by: srikanth716 <srikanthsri7447@gmail.com>

* [INJIMOB-737]: fix rendering issue in ios

Signed-off-by: srikanth716 <srikanthsri7447@gmail.com>

* [INJIMOB-737]: fix rtl rendering issue in ios

Signed-off-by: srikanth716 <srikanthsri7447@gmail.com>

* [INJIMOB-737]: refactor screen otion to render in ios

Signed-off-by: srikanth716 <srikanthsri7447@gmail.com>

* [INJIMOB-737]: refactor HomeScreenOptions to render in ios

Signed-off-by: srikanth716 <srikanthsri7447@gmail.com>

* [INJIMOB-737]: moving HistoryHeaderTitleStyles to style files

Signed-off-by: srikanth716 <srikanthsri7447@gmail.com>

* [INJIMOB-737]: fix RTL issue

Signed-off-by: srikanth716 <srikanthsri7447@gmail.com>

* [INJIMOB-737]: refactor the header right and left

Signed-off-by: srikanth716 <srikanthsri7447@gmail.com>

---------

Signed-off-by: srikanth716 <srikanthsri7447@gmail.com>
Signed-off-by: BalachandarG <balachandar.g@thoughtworks.com>

* [Injimob-695] : Crash issue on iOS during Home screen navigation is fixed.

Signed-off-by: BalachandarG <balachandar.g@thoughtworks.com>

* [Injimob-722]: Reverting the changes from java files of Injitest.

Signed-off-by: BalachandarG <balachandar.g@thoughtworks.com>

---------

Signed-off-by: BalachandarG <balachandar.g@thoughtworks.com>
Signed-off-by: Anil_Kumar_Majji <106086523+Anil-kumar-Majji@users.noreply.github.com>
Signed-off-by: srikanth716 <srikanthsri7447@gmail.com>
Signed-off-by: Anup Nehe <anup.nehe@technoforte.co.in>
Signed-off-by: PuBHARGAVI <46226958+PuBHARGAVI@users.noreply.github.com>
Signed-off-by: KiruthikaJeyashankar <81218987+KiruthikaJeyashankar@users.noreply.github.com>
Signed-off-by: Sreenadh S <32409698+sree96@users.noreply.github.com>
Signed-off-by: Harsh Vardhan <harsh59v@gmail.com>
Co-authored-by: Anil_Kumar_Majji <106086523+Anil-kumar-Majji@users.noreply.github.com>
Co-authored-by: srikanth716 <srikanthsri7447@gmail.com>
Co-authored-by: anup-nehe <117707464+anup-nehe@users.noreply.github.com>
Co-authored-by: PuBHARGAVI <46226958+PuBHARGAVI@users.noreply.github.com>
Co-authored-by: KiruthikaJeyashankar <81218987+KiruthikaJeyashankar@users.noreply.github.com>
Co-authored-by: Sreenadh S <32409698+sree96@users.noreply.github.com>
Co-authored-by: adityankannan-tw <109274996+adityankannan-tw@users.noreply.github.com>
Co-authored-by: Harsh Vardhan <harsh59v@gmail.com>
Co-authored-by: Srikanth Kola <97477121+srikanth716@users.noreply.github.com>
This commit is contained in:
balachandarg-tw
2024-02-27 17:43:04 +05:30
committed by GitHub
parent c83325140d
commit b2592d019a
19 changed files with 141 additions and 32 deletions

View File

@@ -3,6 +3,7 @@ import {useBackupScreen} from '../screens/backupAndRestore/BackupController';
import {BannerNotification} from './BannerNotification';
import {useTranslation} from 'react-i18next';
import {useBackupRestoreScreen} from '../screens/Settings/BackupRestoreController';
import {BANNER_TYPE_SUCCESS, BANNER_TYPE_ERROR, BANNER_TYPE_INFO} from '../shared/constants';
export const BackupAndRestoreBannerNotification: React.FC = () => {
const backUpController = useBackupScreen();
@@ -17,7 +18,7 @@ export const BackupAndRestoreBannerNotification: React.FC = () => {
return (
<BannerNotification
type="error"
type={BANNER_TYPE_ERROR}
message={translation}
onClosePress={backUpController.DISMISS}
key={`backupFailure-${backUpController.backupErrorReason}Popup`}
@@ -33,7 +34,7 @@ export const BackupAndRestoreBannerNotification: React.FC = () => {
return (
<BannerNotification
type="error"
type={BANNER_TYPE_ERROR}
key={`restoreFailure-${restoreController.restoreErrorReason}Popup`}
message={translation}
onClosePress={restoreController.DISMISS}
@@ -46,7 +47,7 @@ export const BackupAndRestoreBannerNotification: React.FC = () => {
<>
{backUpController.showBackupInProgress && (
<BannerNotification
type="info"
type={BANNER_TYPE_INFO}
message={t('backupInProgress')}
onClosePress={backUpController.DISMISS_SHOW_BACKUP_IN_PROGRESS}
key={'dataBackupInProgress'}
@@ -56,7 +57,7 @@ export const BackupAndRestoreBannerNotification: React.FC = () => {
{backUpController.isBackingUpSuccess && (
<BannerNotification
type="success"
type={BANNER_TYPE_SUCCESS}
message={t('backupSuccessful')}
onClosePress={backUpController.DISMISS}
key={'dataBackupSuccessPopup'}
@@ -68,7 +69,7 @@ export const BackupAndRestoreBannerNotification: React.FC = () => {
{restoreController.showRestoreInProgress && (
<BannerNotification
type="info"
type={BANNER_TYPE_INFO}
message={t('restoreInProgress')}
onClosePress={restoreController.DISMISS_SHOW_RESTORE_IN_PROGRESS}
key={'restoreInProgress'}
@@ -78,7 +79,7 @@ export const BackupAndRestoreBannerNotification: React.FC = () => {
{restoreController.isBackUpRestoreSuccess && (
<BannerNotification
type="success"
type={BANNER_TYPE_SUCCESS}
message={t('restoreSuccessful')}
onClosePress={restoreController.DISMISS}
key={'restoreBackupSuccessPopup'}

View File

@@ -4,6 +4,7 @@ import {Column, Row, Text} from './ui';
import {Theme} from './ui/styleUtils';
import {Icon} from 'react-native-elements';
import testIDProps from '../shared/commonUtil';
import {BANNER_TYPE_SUCCESS, BANNER_TYPE_ERROR, BANNER_TYPE_INFO} from '../shared/constants';
export const BannerNotification: React.FC<BannerNotificationProps> = props => {
return (
@@ -36,5 +37,5 @@ export interface BannerNotificationProps {
message: string;
onClosePress: () => void;
testId: string;
type: 'error' | 'success' | 'info';
type: typeof BANNER_TYPE_SUCCESS | typeof BANNER_TYPE_ERROR | typeof BANNER_TYPE_INFO;
}

View File

@@ -4,6 +4,7 @@ import {BannerNotification} from './BannerNotification';
import {UseWalletBindingSuccess} from './WalletBindingSuccessController';
import {BackupAndRestoreBannerNotification} from './BackupAndRestoreBannerNotification';
import {t} from 'i18next';
import {BANNER_TYPE_SUCCESS} from '../shared/constants';
export const BannerNotificationContainer: React.FC = () => {
const WalletBindingController = UseWalletBindingSuccess();
@@ -16,7 +17,7 @@ export const BannerNotificationContainer: React.FC = () => {
{WalletBindingSuccess && (
<View style={{marginTop: 10, marginBottom: 10}}>
<BannerNotification
type="success"
type={BANNER_TYPE_SUCCESS}
message={t('MyVcsTab:activated')}
onClosePress={WalletBindingController.DISMISS}
key={'activatedVcPopup'}

View File

@@ -5,6 +5,8 @@ import {Button, Centered, Column, Row, Text} from '../../components/ui';
import {Theme} from './styleUtils';
import {LoaderAnimation} from './LoaderAnimation';
import {Modal} from './Modal';
import {BannerNotification} from '../../components/BannerNotification';
import {BANNER_TYPE_SUCCESS, BANNER_TYPE_ERROR} from '../../shared/constants';
export const Loader: React.FC<LoaderProps> = props => {
const {t} = useTranslation('ScanScreen');
@@ -108,6 +110,15 @@ export const Loader: React.FC<LoaderProps> = props => {
</SafeAreaView>
</Row>
<View style={Theme.Styles.hrLineFill}></View>
{props.showBanner && (
<BannerNotification
type={props.bannerType ? props.bannerType : BANNER_TYPE_SUCCESS}
message={props.bannerMessage as string}
onClosePress={props.onBannerClose as () => void}
testId={props.bannerTestID as string}
/>
)}
{loaderContent()}
</Fragment>
)}
@@ -128,4 +139,9 @@ export interface LoaderProps {
isHintVisible?: boolean;
onCancel?: () => void;
onRetry?: () => void;
showBanner?: boolean;
bannerMessage?: string;
onBannerClose?: () => void;
bannerType?: typeof BANNER_TYPE_SUCCESS | typeof BANNER_TYPE_ERROR;
bannerTestID?: string;
}

View File

@@ -692,6 +692,11 @@
"message": "حدث خطأ ما أثناء نقل البطاقة. حاول مرة اخرى."
}
}
},
"postFaceCapture": {
"captureSuccessMessage": "تم التحقق من الوجه بنجاح! يتم بدء مشاركة بيانات الاعتماد.",
"captureFailureTitle": "فشل التحقق من الوجه!",
"captureFailureMessage": "يرجى التأكد من أن وجهك مرئي بوضوح وحاول التقاط صورة شخصية مرة أخرى."
}
},
"SelectVcOverlay": {

View File

@@ -701,6 +701,11 @@
"message": "Something went wrong while transferring the card. Please try again."
}
}
},
"postFaceCapture": {
"captureSuccessMessage": "Face Verification is successful! Credential sharing is initiated.",
"captureFailureTitle": "Face verification failed!",
"captureFailureMessage": "Please ensure that your face is clearly visible and try taking selfie again."
}
},
"SelectVcOverlay": {

View File

@@ -696,6 +696,11 @@
"message": "Nagkaproblema habang inililipat ang card. Pakisubukang muli."
}
}
},
"postFaceCapture": {
"captureSuccessMessage": "Matagumpay ang Face Verification! Sinisimulan ang pagbabahagi ng kredensyal.",
"captureFailureTitle": "Nabigo ang pag-verify ng mukha!",
"captureFailureMessage": "Pakitiyak na malinaw na nakikita ang iyong mukha at subukang mag-selfie muli."
}
},
"SelectVcOverlay": {

View File

@@ -692,6 +692,11 @@
"message": "कार्ड ट्रांसफर करते समय कुछ गड़बड़ी हुई. कृपया पुन: प्रयास करें।"
}
}
},
"postFaceCapture": {
"captureSuccessMessage": "चेहरा सत्यापन सफल है! क्रेडेंशियल शेयरिंग शुरू की गई है.",
"captureFailureTitle": "चेहरे का सत्यापन विफल!",
"captureFailureMessage": "कृपया सुनिश्चित करें कि आपका चेहरा स्पष्ट रूप से दिखाई दे रहा है और फिर से सेल्फी लेने का प्रयास करें।"
}
},
"SelectVcOverlay": {

View File

@@ -684,6 +684,11 @@
"message": "ಕಾರ್ಡ್ ಅನ್ನು ವರ್ಗಾಯಿಸುವಾಗ ಏನೋ ತಪ್ಪಾಗಿದೆ. ದಯವಿಟ್ಟು ಪುನಃ ಪ್ರಯತ್ನಿಸಿ."
}
}
},
"postFaceCapture": {
"captureSuccessMessage": "ಮುಖ ಪರಿಶೀಲನೆ ಯಶಸ್ವಿಯಾಗಿದೆ! ರುಜುವಾತು ಹಂಚಿಕೆಯನ್ನು ಪ್ರಾರಂಭಿಸಲಾಗಿದೆ.",
"captureFailureTitle": "ಮುಖ ಪರಿಶೀಲನೆ ವಿಫಲವಾಗಿದೆ!",
"captureFailureMessage": "ನಿಮ್ಮ ಮುಖವು ಸ್ಪಷ್ಟವಾಗಿ ಗೋಚರಿಸುತ್ತಿದೆಯೇ ಎಂಬುದನ್ನು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ ಮತ್ತು ಮತ್ತೊಮ್ಮೆ ಸೆಲ್ಫಿ ತೆಗೆದುಕೊಳ್ಳಲು ಪ್ರಯತ್ನಿಸಿ."
}
},
"SelectVcOverlay": {

View File

@@ -661,6 +661,11 @@
"message": "Algo salió mal al transferir la tarjeta. Inténtalo de nuevo."
}
}
},
"postFaceCapture": {
"captureSuccessMessage": "¡La verificación facial fue exitosa! Se inicia el intercambio de credenciales.",
"captureFailureTitle": "¡Falló la verificación facial!",
"captureFailureMessage": "Asegúrese de que su cara sea claramente visible e intente tomarse una selfie nuevamente."
}
},
"SelectVcOverlay": {

View File

@@ -690,6 +690,11 @@
"message": "கார்டை மாற்றும்போது ஏதோ தவறு ஏற்பட்டது. தயவு செய்து மீண்டும் முயற்சிக்கவும்."
}
}
},
"postFaceCapture": {
"captureSuccessMessage": "முக சரிபார்ப்பு வெற்றிகரமாக உள்ளது! நற்சான்றிதழ் பகிர்வு தொடங்கப்பட்டுள்ளது.",
"captureFailureTitle": "முக சரிபார்ப்பு தோல்வியடைந்தது!",
"captureFailureMessage": "உங்கள் முகம் தெளிவாகத் தெரியும்படி இருப்பதை உறுதிசெய்து, மீண்டும் செல்ஃபி எடுக்க முயற்சிக்கவும்."
}
},
"SelectVcOverlay": {

View File

@@ -77,6 +77,7 @@ const model = createModel(
QrLoginRef: {} as ActorRefFrom<typeof qrLoginMachine>,
linkCode: '',
readyForBluetoothStateCheck: false,
showFaceCaptureSuccessBanner: false,
},
{
events: {
@@ -88,6 +89,7 @@ const model = createModel(
VC_REJECTED: () => ({}),
VC_SENT: () => ({}),
CANCEL: () => ({}),
CLOSE_BANNER: () => ({}),
STAY_IN_PROGRESS: () => ({}),
RETRY: () => ({}),
DISMISS: () => ({}),
@@ -508,7 +510,10 @@ export const scanMachine =
},
ACCEPT_REQUEST: {
target: 'sendingVc',
actions: 'setShareLogTypeUnverified',
actions: [
'setShareLogTypeUnverified',
'resetFaceCaptureBannerStatus',
],
},
CANCEL: {
target: 'cancelling',
@@ -542,6 +547,9 @@ export const scanMachine =
target: '#scan.reviewing.cancelling',
actions: ['sendVCShareFlowCancelEndEvent'],
},
CLOSE_BANNER: {
actions: ['resetFaceCaptureBannerStatus'],
},
},
},
timeout: {
@@ -616,7 +624,10 @@ export const scanMachine =
on: {
FACE_VALID: {
target: 'sendingVc',
actions: 'setShareLogTypeVerified',
actions: [
'setShareLogTypeVerified',
'updateFaceCaptureBannerStatus',
],
},
FACE_INVALID: {
target: 'invalidIdentity',
@@ -850,6 +861,14 @@ export const scanMachine =
shareLogType: 'PRESENCE_VERIFIED_AND_VC_SHARED',
}),
updateFaceCaptureBannerStatus: model.assign({
showFaceCaptureSuccessBanner: true,
}),
resetFaceCaptureBannerStatus: model.assign({
showFaceCaptureSuccessBanner: false,
}),
logShared: send(
context => {
const vcMetadata = context.selectedVc?.vcMetadata;

View File

@@ -39,6 +39,13 @@ export function selectIsSendingVc(state: State) {
return state.matches('reviewing.sendingVc.inProgress');
}
export function selectIsFaceIdentityVerified(state: State) {
return (
state.matches('reviewing.sendingVc.inProgress') &&
state.context.showFaceCaptureSuccessBanner
);
}
export function selectIsSendingVcTimeout(state: State) {
return state.matches('reviewing.sendingVc.timeout');
}

View File

@@ -24,6 +24,7 @@ import {Error} from '../../components/ui/Error';
import {useIsFocused} from '@react-navigation/native';
import {getVCsOrderedByPinStatus} from '../../shared/Utils';
import {SvgImage} from '../../components/ui/svg';
import {BANNER_TYPE_SUCCESS} from '../../shared/constants';
export const MyVcsTab: React.FC<HomeScreenTabProps> = props => {
const {t} = useTranslation('MyVcsTab');
@@ -102,7 +103,7 @@ export const MyVcsTab: React.FC<HomeScreenTabProps> = props => {
<Column fill style={{display: props.isVisible ? 'flex' : 'none'}}>
{controller.isRequestSuccessful && (
<BannerNotification
type="success"
type={BANNER_TYPE_SUCCESS}
message={t('downloadingYourCard')}
onClosePress={() => {
controller.RESET_STORE_VC_ITEM_STATUS();

View File

@@ -12,6 +12,7 @@ import {Loader} from '../../components/ui/Loader';
import {Text} from '../../components/ui';
import {I18nManager, View} from 'react-native';
import {SvgImage} from '../../components/ui/svg';
import {BANNER_TYPE_SUCCESS} from '../../shared/constants';
const ScanStack = createNativeStackNavigator();
@@ -37,6 +38,11 @@ export const ScanLayout: React.FC = () => {
controller.isSendingVc
}
onRetry={controller.statusOverlay?.onRetry}
showBanner={controller.isFaceIdentityVerified}
bannerMessage={t('ScanScreen:postFaceCapture:captureSuccessMessage')}
onBannerClose={controller.CLOSE_BANNER}
bannerType={BANNER_TYPE_SUCCESS}
bannerTestID={'faceVerificationSuccess'}
/>
);
}

View File

@@ -17,6 +17,7 @@ import {
selectIsSendingVcTimeout,
selectIsSent,
selectIsDone,
selectIsFaceIdentityVerified,
} from '../../machines/bleShare/scan/selectors';
import {
selectBleError,
@@ -62,6 +63,7 @@ export function useScanLayout() {
const DISMISS = () => scanService.send(ScanEvents.DISMISS());
const CANCEL = () => scanService.send(ScanEvents.CANCEL());
const CLOSE_BANNER = () => scanService.send(ScanEvents.CLOSE_BANNER());
const onStayInProgress = () =>
scanService.send(ScanEvents.STAY_IN_PROGRESS());
const onRetry = () => scanService.send(ScanEvents.RETRY());
@@ -97,6 +99,10 @@ export function useScanLayout() {
const isSendingVc = useSelector(scanService, selectIsSendingVc);
const isSendingVcTimeout = useSelector(scanService, selectIsSendingVcTimeout);
const isStayInProgress = isConnectingTimeout || isSendingVcTimeout;
let isFaceIdentityVerified = useSelector(
scanService,
selectIsFaceIdentityVerified,
);
let statusOverlay: Pick<
MessageOverlayProps,
@@ -237,5 +243,7 @@ export function useScanLayout() {
onRetry,
CANCEL,
isSendingVc,
isFaceIdentityVerified,
CLOSE_BANNER,
};
}

View File

@@ -20,6 +20,8 @@ import {
import {TelemetryConstants} from '../../shared/telemetry/TelemetryConstants';
import {getVCsOrderedByPinStatus} from '../../shared/Utils';
import {Issuers} from '../../shared/openId4VCI/Utils';
import {Error} from '../../components/ui/Error';
import {SvgImage} from '../../components/ui/svg';
export const SendVcScreen: React.FC = () => {
const {t} = useTranslation('SendVcScreen');
@@ -141,28 +143,24 @@ export const SendVcScreen: React.FC = () => {
onFaceInvalid={controller.FACE_INVALID}
/>
<MessageOverlay
<Error
isModal
alignActionsOnEnd
showClose={false}
isVisible={controller.isInvalidIdentity}
title={t('VerifyIdentityOverlay:errors.invalidIdentity.title')}
message={t('VerifyIdentityOverlay:errors.invalidIdentity.message')}
onBackdropPress={controller.DISMISS}>
<Row>
<Button
testID="cancel"
fill
type="clear"
title={t('common:cancel')}
onPress={controller.DISMISS}
margin={[0, 8, 0, 0]}
/>
<Button
testID="tryAgain"
fill
title={t('common:tryAgain')}
onPress={controller.RETRY_VERIFICATION}
/>
</Row>
</MessageOverlay>
title={t('ScanScreen:postFaceCapture.captureFailureTitle')}
message={t('ScanScreen:postFaceCapture.captureFailureMessage')}
image={SvgImage.PermissionDenied()}
primaryButtonTestID={'retry'}
primaryButtonText={t('ScanScreen:status.retry')}
primaryButtonEvent={controller.RETRY_VERIFICATION}
textButtonTestID={'home'}
textButtonText={t('ScanScreen:status.accepted.home')}
textButtonEvent={controller.GO_TO_HOME}
customImageStyles={{paddingBottom: 0, marginBottom: -6}}
customStyles={{marginTop: '20%'}}
testID={'shareWithSelfieError'}
/>
</React.Fragment>
);
};

View File

@@ -16,11 +16,17 @@ import {
selectIsVerifyingIdentity,
} from '../../machines/bleShare/commonSelectors';
import {ScanEvents} from '../../machines/bleShare/scan/scanMachine';
import {NavigationProp, useNavigation} from '@react-navigation/native';
import {RootRouteProps} from '../../routes';
import {BOTTOM_TAB_ROUTES} from '../../routes/routesConstants';
type MyVcsTabNavigation = NavigationProp<RootRouteProps>;
export function useSendVcScreen() {
const {appService} = useContext(GlobalContext);
const scanService = appService.children.get('scan');
const vcService = appService.children.get('vc');
const navigation = useNavigation<MyVcsTabNavigation>();
const CANCEL = () => scanService.send(ScanEvents.CANCEL());
@@ -58,5 +64,8 @@ export function useSendVcScreen() {
FACE_VALID: () => scanService.send(ScanEvents.FACE_VALID()),
FACE_INVALID: () => scanService.send(ScanEvents.FACE_INVALID()),
RETRY_VERIFICATION: () => scanService.send(ScanEvents.RETRY_VERIFICATION()),
GO_TO_HOME: () => {
navigation.navigate(BOTTOM_TAB_ROUTES.home, {screen: 'HomeScreen'});
},
};
}

View File

@@ -39,6 +39,13 @@ export const LAST_BACKUP_DETAILS = 'lastBackupDetails';
export const APP_ID_LENGTH = 12;
//Banner Status
export const BANNER_TYPE_SUCCESS = 'success';
export const BANNER_TYPE_ERROR = 'error';
export const BANNER_TYPE_INFO = 'info';
// Numbers and Upper case Alphabets without confusing characters like 0, 1, 2, I, O, Z
// prettier-ignore
export const APP_ID_DICTIONARY = [