diff --git a/javascript/src/iframe/viamapi-iframe.js b/javascript/src/iframe/viamapi-iframe.js index 487aa5b7d1e3a3c95e4e3ed184a78d05c3b91ca6..2882220aa4643d8cb2992402fa5c416a436ea3df 100644 --- a/javascript/src/iframe/viamapi-iframe.js +++ b/javascript/src/iframe/viamapi-iframe.js @@ -1429,21 +1429,45 @@ const connection = Penpal.connectToParent({ return encodeResponse("400", "", "Identity not authenticated"); } - const vCardImageResponse = await executeRestfulFunction( + const vCardImageClaimName = "vCardImage"; + const defaultTagName = "notag"; + + const vCardClaimResponse = await executeRestfulFunction( "private", window.viamApi, - window.viamApi.passportGetVCardImage, + window.viamApi.entityGetClaim, null, + vCardImageClaimName, + defaultTagName, passportUUID ); - if (vCardImageResponse.code !== "200") { - return encodeResponse("400", "", vCardImageResponse.status); + if (vCardClaimResponse.code !== "200") { + return encodeResponse("400", "", vCardClaimResponse.status); } - const vCardImageData = new ImageData(vCardImageResponse.data); + let vCardImageData; - if (vCardImageData.contentType !== "image/png") { - return encodeResponse("400", "", "Content type of vCard mmust be 'image/png'"); + const vCardImageClaimValue = vCardClaimResponse.data; + if ("state" in vCardImageClaimValue && vCardImageClaimValue.state === "disabled") { + vCardImageData = new ImageData({ + contentType: "image/png", + contentBase64: "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII=", //1x1px transparent pixel + }); + } else { + const vCardImageResponse = await executeRestfulFunction( + "private", + window.viamApi, + window.viamApi.passportGetVCardImage, + null, + passportUUID + ); + if (vCardImageResponse.code !== "200") { + return encodeResponse("400", "", vCardImageResponse.status); + } + vCardImageData = new ImageData(vCardImageResponse.data); + if (vCardImageData.contentType !== "image/png") { + return encodeResponse("400", "", "Content type of vCard mmust be 'image/png'"); + } } if (!parts) {