mirror of
https://github.com/mosip/inji-wallet.git
synced 2026-01-09 21:48:04 -05:00
* feat(INJI-245): dowload and view card via issuers Co-authored-by: Harsh Vardhan <harsh59v@gmail.com> * fix(INJI-245): remove vc from wallet Co-authored-by: Harsh Vardhan <harsh59v@gmail.com> * feat(INJI-245): pin card downloaded via eSignet * refactor(INJI-245): remove debug logs * refactor(INJI-245): rename vcItem related component to ExistingVcItem * refactor(INJI-245): add lock file modifications * refactor(INJI-245): add styles in purple theme for issuer related components * refactor(INJI-245): update VID for wallet binding usecase and issuer logo display in vc * refactor(INJI-245): remove duplicate loader component * refactor(INJI-245): remove unused props in vc details container --------- Co-authored-by: Harsh Vardhan <harsh59v@gmail.com> Co-authored-by: Vijay <94220135+vijay151096@users.noreply.github.com>
114 lines
3.3 KiB
TypeScript
114 lines
3.3 KiB
TypeScript
import React, {useEffect} from 'react';
|
|
import {Icon, Tab} from 'react-native-elements';
|
|
import {Button, Column, Text} from '../../components/ui';
|
|
import {Theme} from '../../components/ui/styleUtils';
|
|
import {HomeRouteProps} from '../../routes/main';
|
|
import {MyVcsTab} from './MyVcsTab';
|
|
import {ReceivedVcsTab} from './ReceivedVcsTab';
|
|
import {ViewVcModal} from './ViewVcModal';
|
|
import {useHomeScreen} from './HomeScreenController';
|
|
import {TabRef} from './HomeScreenMachine';
|
|
import {useTranslation} from 'react-i18next';
|
|
import {ActorRefFrom} from 'xstate';
|
|
import {ExistingMosipVCItemMachine} from '../../machines/VCItemMachine/ExistingMosipVCItem/ExistingMosipVCItemMachine';
|
|
import {isOpenId4VCIEnabled} from '../../shared/openId4VCI/Utils';
|
|
import LinearGradient from 'react-native-linear-gradient';
|
|
import {EsignetMosipVCItemMachine} from '../../machines/VCItemMachine/EsignetMosipVCItem/EsignetMosipVCItemMachine';
|
|
|
|
export const HomeScreen: React.FC<HomeRouteProps> = props => {
|
|
const {t} = useTranslation('HomeScreen');
|
|
const controller = useHomeScreen(props);
|
|
|
|
useEffect(() => {
|
|
if (controller.IssuersService) {
|
|
navigateToIssuers();
|
|
}
|
|
}, [controller.IssuersService]);
|
|
|
|
const navigateToIssuers = () => {
|
|
props.navigation.navigate('IssuersScreen', {
|
|
service: controller.IssuersService,
|
|
});
|
|
};
|
|
|
|
const DownloadFABIcon: React.FC = () => {
|
|
const plusIcon = (
|
|
<Icon
|
|
name={'plus'}
|
|
type={'entypo'}
|
|
size={36}
|
|
color={Theme.Colors.whiteText}
|
|
/>
|
|
);
|
|
return (
|
|
<LinearGradient
|
|
colors={Theme.Colors.gradientBtn}
|
|
style={Theme.Styles.downloadFabIcon}>
|
|
<Button
|
|
testID="downloadIcon"
|
|
icon={plusIcon}
|
|
onPress={() => {
|
|
controller.GOTO_ISSUERS();
|
|
}}
|
|
type={'clearAddIdBtnBg'}
|
|
fill
|
|
/>
|
|
</LinearGradient>
|
|
);
|
|
};
|
|
|
|
return (
|
|
<React.Fragment>
|
|
<Column fill backgroundColor={Theme.Colors.lightGreyBackgroundColor}>
|
|
{controller.haveTabsLoaded && (
|
|
<Column fill>
|
|
<MyVcsTab
|
|
isVisible={controller.activeTab === 0}
|
|
service={controller.tabRefs.myVcs}
|
|
vcItemActor={controller.selectedVc}
|
|
/>
|
|
<ReceivedVcsTab
|
|
isVisible={controller.activeTab === 1}
|
|
service={controller.tabRefs.receivedVcs}
|
|
vcItemActor={controller.selectedVc}
|
|
/>
|
|
</Column>
|
|
)}
|
|
</Column>
|
|
{isOpenId4VCIEnabled() && <DownloadFABIcon />}
|
|
{controller.selectedVc && (
|
|
<ViewVcModal
|
|
isVisible={controller.isViewingVc}
|
|
onDismiss={controller.DISMISS_MODAL}
|
|
vcItemActor={controller.selectedVc}
|
|
onRevokeDelete={() => {
|
|
controller.REVOKE();
|
|
}}
|
|
activeTab={controller.activeTab}
|
|
/>
|
|
)}
|
|
</React.Fragment>
|
|
);
|
|
};
|
|
|
|
function TabItem(title: string) {
|
|
return (
|
|
<Tab.Item
|
|
containerStyle={Theme.Styles.tabContainer}
|
|
title={
|
|
<Text align="center" color={Theme.Colors.TabItemText}>
|
|
{title}
|
|
</Text>
|
|
}
|
|
/>
|
|
);
|
|
}
|
|
|
|
export interface HomeScreenTabProps {
|
|
isVisible: boolean;
|
|
service: TabRef;
|
|
vcItemActor:
|
|
| ActorRefFrom<typeof ExistingMosipVCItemMachine>
|
|
| ActorRefFrom<typeof EsignetMosipVCItemMachine>;
|
|
}
|