mirror of
https://github.com/mosip/inji-wallet.git
synced 2026-04-20 03:00:24 -04:00
63 lines
1.9 KiB
TypeScript
63 lines
1.9 KiB
TypeScript
import { useInterpret, useSelector } from '@xstate/react';
|
|
import { useContext, useEffect, useRef } from 'react';
|
|
import { selectVcLabel } from '../../machines/settings';
|
|
import { HomeRouteProps } from '../../routes/main';
|
|
import { GlobalContext } from '../../shared/GlobalContext';
|
|
import {
|
|
HomeScreenEvents,
|
|
HomeScreenMachine,
|
|
selectActiveTab,
|
|
selectSelectedVc,
|
|
selectTabRefs,
|
|
selectTabsLoaded,
|
|
selectViewingVc,
|
|
} from './HomeScreenMachine';
|
|
import { VcEvents } from '../../machines/vc';
|
|
|
|
export function useHomeScreen(props: HomeRouteProps) {
|
|
const { appService } = useContext(GlobalContext);
|
|
const machine = useRef(
|
|
HomeScreenMachine.withContext({
|
|
...HomeScreenMachine.context,
|
|
serviceRefs: appService.getSnapshot().context.serviceRefs,
|
|
})
|
|
);
|
|
const service = useInterpret(machine.current);
|
|
const settingsService = appService.children.get('settings');
|
|
const vcService = appService.children.get('vc');
|
|
|
|
useEffect(() => {
|
|
if (props.route.params?.activeTab != null) {
|
|
SELECT_TAB(props.route.params.activeTab);
|
|
}
|
|
}, [props.route.params, props.route.params?.activeTab]);
|
|
|
|
return {
|
|
service,
|
|
|
|
activeTab: useSelector(service, selectActiveTab),
|
|
vcLabel: useSelector(settingsService, selectVcLabel),
|
|
selectedVc: useSelector(service, selectSelectedVc),
|
|
tabRefs: useSelector(service, selectTabRefs),
|
|
|
|
isViewingVc: useSelector(service, selectViewingVc),
|
|
haveTabsLoaded: useSelector(service, selectTabsLoaded),
|
|
|
|
SELECT_TAB,
|
|
DISMISS_MODAL: () => service.send(HomeScreenEvents.DISMISS_MODAL()),
|
|
REVOKE: () => {
|
|
vcService.send(VcEvents.REFRESH_MY_VCS());
|
|
service.send(HomeScreenEvents.DISMISS_MODAL());
|
|
},
|
|
};
|
|
|
|
function SELECT_TAB(index: number) {
|
|
const tabs = [
|
|
HomeScreenEvents.SELECT_MY_VCS,
|
|
HomeScreenEvents.SELECT_RECEIVED_VCS,
|
|
HomeScreenEvents.SELECT_HISTORY,
|
|
];
|
|
service.send(tabs[index]());
|
|
}
|
|
}
|