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