[INJIMOB-2041] fix Same issuer's different credential types download / received logs are not proper issue

Signed-off-by: KiruthikaJeyashankar <81218987+KiruthikaJeyashankar@users.noreply.github.com>
This commit is contained in:
KiruthikaJeyashankar
2024-09-16 16:20:27 +05:30
parent 7e0d180b05
commit e532fb0d58
6 changed files with 32 additions and 43 deletions

View File

@@ -47,7 +47,7 @@ export const VCCardView: React.FC<VCItemProps> = props => {
format
)
.then(response => {
setWellknown(response.wellknown);
setWellknown(response.matchingCredentialIssuerMetadata);
setFields(response.fields);
})
.catch(error => {

View File

@@ -37,7 +37,6 @@ export const DETAIL_VIEW_ADD_ON_FIELDS = [
'status',
'credentialRegistry',
'idType',
'issuing_country',
];
export const DETAIL_VIEW_BOTTOM_SECTION_FIELDS = [

View File

@@ -1,23 +1,12 @@
import {NativeModules} from 'react-native';
import Cloud from '../../../shared/CloudBackupAndRestoreUtils';
import getAllConfigurations, {
API_URLS,
CACHED_API,
DownloadProps,
} from '../../../shared/api';
import {
fetchKeyPair,
generateKeyPair,
} from '../../../shared/cryptoutil/cryptoUtil';
import getAllConfigurations, {API_URLS, CACHED_API, DownloadProps,} from '../../../shared/api';
import {fetchKeyPair, generateKeyPair,} from '../../../shared/cryptoutil/cryptoUtil';
import {CredentialDownloadResponse, request} from '../../../shared/request';
import {WalletBindingResponse} from '../VCMetaMachine/vc';
import {verifyCredential} from '../../../shared/vcjs/verifyCredential';
import {getVerifiableCredential} from './VCItemSelectors';
import {
getMatchingCredentialIssuerMetadata,
getSelectedCredentialTypeDetails,
} from '../../../shared/openId4VCI/Utils';
import {getCredentialTypes} from '../../../components/VC/common/VCUtils';
import {getMatchingCredentialIssuerMetadata} from '../../../shared/openId4VCI/Utils';
import {isIOS} from '../../../shared/constants';
const {RNSecureKeystoreModule} = NativeModules;
@@ -119,11 +108,14 @@ export const VCItemServices = model => {
context.vcMetadata.issuer,
true,
);
const wellknownOfCredential = getMatchingCredentialIssuerMetadata(
wellknownResponse,
context.verifiableCredential.credentialConfigurationId,
);
return wellknownOfCredential;
try {
return getMatchingCredentialIssuerMetadata(
wellknownResponse,
context.verifiableCredential.credentialConfigurationId,
);
} catch (error) {
return {};
}
},
checkStatus: context => (callback, onReceive) => {
const pollInterval = setInterval(

View File

@@ -63,7 +63,7 @@ export const ViewVcModal: React.FC<ViewVcModalProps> = props => {
DETAIL_VIEW_DEFAULT_FIELDS,
verifiableCredentialData.vcMetadata.format
).then(response => {
setWellknown(response.wellknown);
setWellknown(response.matchingCredentialIssuerMetadata);
setFields(response.fields);
});
}, [verifiableCredentialData?.wellKnown]);

View File

@@ -4,7 +4,6 @@ import { DeviceInfoList } from '../../components/DeviceInfoList';
import { Button, Column, Text } from '../../components/ui';
import { Theme } from '../../components/ui/styleUtils';
import { useReceiveVcScreen } from './ReceiveVcScreenController';
import { VerifyIdentityOverlay } from '../VerifyIdentityOverlay';
import { MessageOverlay } from '../../components/MessageOverlay';
import { useOverlayVisibleAfterTimeout } from '../../shared/hooks/useOverlayVisibleAfterTimeout';
import { VcDetailsContainer } from '../../components/VC/VcDetailsContainer';
@@ -14,7 +13,7 @@ import { DETAIL_VIEW_DEFAULT_FIELDS } from '../../components/VC/common/VCUtils';
import { getDetailedViewFields } from '../../shared/openId4VCI/Utils';
export const ReceiveVcScreen: React.FC = () => {
const { t } = useTranslation('ReceiveVcScreen');
const {t} = useTranslation('ReceiveVcScreen');
const [fields, setFields] = useState([]);
const [wellknown, setWellknown] = useState(null);
const controller = useReceiveVcScreen();
@@ -29,13 +28,13 @@ export const ReceiveVcScreen: React.FC = () => {
verifiableCredentialData?.issuer,
verifiableCredentialData.credentialConfigurationId,
DETAIL_VIEW_DEFAULT_FIELDS,
verifiableCredentialData.vcMetadata.format
verifiableCredentialData.vcMetadata.format,
).then(response => {
setWellknown(response.wellknown);
setWellknown(response.matchingCredentialIssuerMetadata);
setFields(response.fields);
controller.STORE_INCOMING_VC_WELLKNOWN_CONFIG(
verifiableCredentialData?.issuer,
response.wellknown,
response.wellknownResponse,
);
});
}, [verifiableCredentialData?.wellKnown]);

View File

@@ -171,29 +171,29 @@ export const getCredentialIssuersWellKnownConfig = async (
format: string,
) => {
let fields: string[] = defaultFields;
let credentialDetails: any;
let matchingWellknownDetails: any;
console.log('getCredentialIssuersWellKnownConfig ', issuer);
const response = await CACHED_API.fetchIssuerWellknownConfig(issuer!);
const wellknownResponse = await CACHED_API.fetchIssuerWellknownConfig(issuer!);
try {
if (response) {
credentialDetails = getMatchingCredentialIssuerMetadata(
response,
if (wellknownResponse) {
matchingWellknownDetails = getMatchingCredentialIssuerMetadata(
wellknownResponse,
credentialConfigurationId,
);
if (Object.keys(credentialDetails).includes('order')) {
fields = credentialDetails.order;
if (Object.keys(matchingWellknownDetails).includes('order')) {
fields = matchingWellknownDetails.order;
} else {
console.log('no order is there');
if (format === VCFormat.mso_mdoc) {
fields = []
Object.keys(credentialDetails.claims).forEach(namespace => {
Object.keys(credentialDetails.claims[namespace]).forEach(claim => {
Object.keys(matchingWellknownDetails.claims).forEach(namespace => {
Object.keys(matchingWellknownDetails.claims[namespace]).forEach(claim => {
fields.concat(`${namespace}~${claim}`);
});
});
} else if (format === VCFormat.ldp_vc) {
fields = Object.keys(
credentialDetails.credential_definition.credentialSubject,
matchingWellknownDetails.credential_definition.credentialSubject,
);
} else {
console.error(`Unsupported credential format - ${format} found`);
@@ -207,15 +207,13 @@ export const getCredentialIssuersWellKnownConfig = async (
error.toString(),
);
return {
wellknown: credentialDetails,
matchingCredentialIssuerMetadata: matchingWellknownDetails,
fields: fields,
};
}
console.warn(
'Well-known response is not available for this credential so returning default fields only.',
);
return {
wellknown: credentialDetails,
matchingCredentialIssuerMetadata: matchingWellknownDetails,
wellknownResponse,
fields: fields,
};
};
@@ -238,8 +236,9 @@ export const getDetailedViewFields = async (
updatedFieldsList = removeBottomSectionFields(updatedFieldsList);
return {
wellknown: response.wellknown,
matchingCredentialIssuerMetadata: response.matchingCredentialIssuerMetadata,
fields: updatedFieldsList,
wellknownResponse: response.wellknownResponse
};
};