Files
inji-wallet/screens/Scan/SendVcModalController.ts
Danica Erediano 27a7f44b71 updated
2022-03-28 11:37:00 +08:00

46 lines
1.7 KiB
TypeScript

import { useSelector } from '@xstate/react';
import { useContext } from 'react';
import {
ScanEvents,
selectAccepted,
selectReason,
selectReceiverInfo,
selectRejected,
selectSelectingVc,
selectSendingVc,
selectVcName,
} from '../../machines/scan';
import { selectVCLabel } from '../../machines/settings';
import { selectShareableVcs } from '../../machines/vc';
import { GlobalContext } from '../../shared/GlobalContext';
import { VC } from '../../types/vc';
export function useSendVcModal() {
const { appService } = useContext(GlobalContext);
const scanService = appService.children.get('scan');
const settingsService = appService.children.get('settings');
const vcService = appService.children.get('vc');
return {
receiverInfo: useSelector(scanService, selectReceiverInfo),
reason: useSelector(scanService, selectReason),
vcName: useSelector(scanService, selectVcName),
VCLabel: useSelector(settingsService, selectVCLabel),
vcKeys: useSelector(vcService, selectShareableVcs),
isSelectingVc: useSelector(scanService, selectSelectingVc),
isSendingVc: useSelector(scanService, selectSendingVc),
isAccepted: useSelector(scanService, selectAccepted),
isRejected: useSelector(scanService, selectRejected),
ACCEPT_REQUEST: () => scanService.send(ScanEvents.ACCEPT_REQUEST()),
CANCEL: () => scanService.send(ScanEvents.CANCEL()),
SELECT_VC: (vc: VC) => scanService.send(ScanEvents.SELECT_VC(vc)),
DISMISS: () => scanService.send(ScanEvents.DISMISS()),
UPDATE_REASON: (reason: string) =>
scanService.send(ScanEvents.UPDATE_REASON(reason)),
UPDATE_VC_NAME: (vcName: string) =>
scanService.send(ScanEvents.UPDATE_VC_NAME(vcName)),
};
}