mirror of
https://github.com/mosip/inji-wallet.git
synced 2026-01-09 13:38:01 -05:00
[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:
@@ -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 => {
|
||||
|
||||
@@ -37,7 +37,6 @@ export const DETAIL_VIEW_ADD_ON_FIELDS = [
|
||||
'status',
|
||||
'credentialRegistry',
|
||||
'idType',
|
||||
'issuing_country',
|
||||
];
|
||||
|
||||
export const DETAIL_VIEW_BOTTOM_SECTION_FIELDS = [
|
||||
|
||||
@@ -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(
|
||||
|
||||
@@ -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]);
|
||||
|
||||
@@ -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]);
|
||||
|
||||
@@ -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
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user