From 106acdd8a52bbd64abe80127d0fa26525307116f Mon Sep 17 00:00:00 2001 From: Damyan Mitev <damyan.mitev@vereign.com> Date: Mon, 25 Nov 2019 19:40:46 +0200 Subject: [PATCH] take into account disabled vCard --- javascript/src/iframe/viamapi-iframe.js | 38 ++++++++++++++++++++----- 1 file changed, 31 insertions(+), 7 deletions(-) diff --git a/javascript/src/iframe/viamapi-iframe.js b/javascript/src/iframe/viamapi-iframe.js index 487aa5b..2882220 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) { -- GitLab