Files
inji-wallet/machines/bleShare/scan/scanModel.ts
Alka Prasad a78b2d2ef3 [INJIMOB-1911]: add logic for QR login via deeplink (#1601)
* [INJIMOB-1911]: add logic for QR login via deeplink

Signed-off-by: Alka Prasad <prasadalka1998@gmail.com>

* [INJIMOB-1911]: bump up tuvali version

Signed-off-by: Alka Prasad <prasadalka1998@gmail.com>

* [INJIMOB-1911]: bump up kotlin patch version

Signed-off-by: Alka Prasad <prasadalka1998@gmail.com>

* [INJIMOB-1911]: rename the singleton variable name

Signed-off-by: Alka Prasad <prasadalka1998@gmail.com>

* [INJIMOB-1911]: extract common code in a function

Signed-off-by: Alka Prasad <prasadalka1998@gmail.com>

* [INJIMOB-1911]: refactor some logic and remove redundant code

Signed-off-by: Alka Prasad <prasadalka1998@gmail.com>

---------

Signed-off-by: Alka Prasad <prasadalka1998@gmail.com>
2024-09-10 10:09:06 +05:30

86 lines
2.8 KiB
TypeScript

import {CameraCapturedPicture} from 'expo-camera';
import {EmitterSubscription} from 'react-native';
import {ActorRefFrom} from 'xstate';
import {createModel} from 'xstate/lib/model';
import {DeviceInfo} from '../../../components/DeviceInfoList';
import {AppServices} from '../../../shared/GlobalContext';
import {VCShareFlowType} from '../../../shared/Utils';
import {qrLoginMachine} from '../../QrLogin/QrLoginMachine';
import {VC} from '../../VerifiableCredential/VCMetaMachine/vc';
import {ActivityLogType} from '../../activityLog';
import {BLEError} from '../types';
const ScanEvents = {
SELECT_VC: (vc: VC, flowType: string) => ({vc, flowType}),
SCAN: (params: string) => ({params}),
ACCEPT_REQUEST: () => ({}),
VERIFY_AND_ACCEPT_REQUEST: () => ({}),
VC_ACCEPTED: () => ({}),
VC_REJECTED: () => ({}),
VC_SENT: () => ({}),
CANCEL: () => ({}),
CLOSE_BANNER: () => ({}),
STAY_IN_PROGRESS: () => ({}),
RETRY: () => ({}),
DISMISS: () => ({}),
DISMISS_QUICK_SHARE_BANNER: () => ({}),
GOTO_HISTORY: () => ({}),
CONNECTED: () => ({}),
DISCONNECT: () => ({}),
BLE_ERROR: (bleError: BLEError) => ({bleError}),
CONNECTION_DESTROYED: () => ({}),
SCREEN_BLUR: () => ({}),
SCREEN_FOCUS: () => ({}),
BLUETOOTH_PERMISSION_ENABLED: () => ({}),
BLUETOOTH_PERMISSION_DENIED: () => ({}),
BLUETOOTH_STATE_ENABLED: () => ({}),
BLUETOOTH_STATE_DISABLED: () => ({}),
NEARBY_ENABLED: () => ({}),
NEARBY_DISABLED: () => ({}),
GOTO_SETTINGS: () => ({}),
START_PERMISSION_CHECK: () => ({}),
LOCATION_ENABLED: () => ({}),
LOCATION_DISABLED: () => ({}),
LOCATION_REQUEST: () => ({}),
CHECK_FLOW_TYPE: () => ({}),
UPDATE_VC_NAME: (vcName: string) => ({vcName}),
STORE_RESPONSE: (response: any) => ({response}),
APP_ACTIVE: () => ({}),
FACE_VALID: () => ({}),
FACE_INVALID: () => ({}),
RETRY_VERIFICATION: () => ({}),
RESET: () => ({}),
FACE_VERIFICATION_CONSENT: (isDoNotAskAgainChecked: boolean) => ({
isDoNotAskAgainChecked,
}),
ALLOWED: () => ({}),
DENIED: () => ({}),
QRLOGIN_VIA_DEEP_LINK: (linkCode: string) => ({linkCode}),
};
export const ScanModel = createModel(
{
serviceRefs: {} as AppServices,
senderInfo: {} as DeviceInfo,
receiverInfo: {} as DeviceInfo,
selectedVc: {} as VC,
bleError: {} as BLEError,
loggers: [] as EmitterSubscription[],
vcName: '',
flowType: VCShareFlowType.SIMPLE_SHARE,
verificationImage: {} as CameraCapturedPicture,
openId4VpUri: '',
shareLogType: '' as ActivityLogType,
QrLoginRef: {} as ActorRefFrom<typeof qrLoginMachine>,
showQuickShareSuccessBanner: false,
linkCode: '',
quickShareData: {},
showFaceAuthConsent: true as boolean,
readyForBluetoothStateCheck: false,
showFaceCaptureSuccessBanner: false,
},
{
events: ScanEvents,
},
);