From 3019a9ba8f0e93ed38c39521c6785b0b2027d5ef Mon Sep 17 00:00:00 2001
From: Zdravko Iliev <zdravko.iliev@vereign.com>
Date: Tue, 24 Mar 2020 16:54:27 +0200
Subject: [PATCH] add new method for getting Vcard with QR

---
 javascript/src/iframe/viamapi-iframe.js | 70 +++++++++++++++++++++++++
 1 file changed, 70 insertions(+)

diff --git a/javascript/src/iframe/viamapi-iframe.js b/javascript/src/iframe/viamapi-iframe.js
index 944bf67..23d3a73 100644
--- a/javascript/src/iframe/viamapi-iframe.js
+++ b/javascript/src/iframe/viamapi-iframe.js
@@ -1758,6 +1758,76 @@ const connection = Penpal.connectToParent({
 
       return encodeResponse("200", response.data, "Document created");
     },
+    getVcardWithQrCode: async (passportUUID, QRCodeContent = null) =>{
+      //TODO: IMPLEMENT QR CODE backend method needed
+      const authenticationPublicKey = localStorage.getItem(
+        "authenticatedIdentity"
+      );
+
+      if (
+        !authenticationPublicKey ||
+        !window.loadedIdentities[authenticationPublicKey] ||
+        !extendPinCodeTtl(authenticationPublicKey)
+      ) {
+        return encodeResponse("400", "", "Identity not authenticated");
+      }
+
+      let vCardImageData;
+      let vCardImageClaimValue;
+
+      const vCardImageClaimName = "vCardImage";
+      const defaultTagName = "notag";
+
+      const vCardClaimResponse = await executeRestfulFunction(
+        "private",
+        window.viamApi,
+        window.viamApi.entityGetClaim,
+        null,
+        vCardImageClaimName,
+        defaultTagName,
+        passportUUID
+      );
+
+      if (vCardClaimResponse.code === "200") {
+        vCardImageClaimValue = vCardClaimResponse.data;
+      }
+
+      if (
+        vCardImageClaimValue &&
+        "state" in vCardImageClaimValue &&
+        vCardImageClaimValue.state === "disabled"
+      ) {
+        //No image data if the user have disabled vCard for this profile.
+        vCardImageData = null;
+
+        // 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.Image);
+        if (vCardImageData.contentType !== "image/png") {
+          return encodeResponse(
+            "400",
+            "",
+            "Content type of vCard mmust be 'image/png'"
+          );
+        }
+      }
+      return  encodeResponse("200",vCardImageData, 'vCard got');
+    },
     documentPutDocument: async (
       passportUUID,
       resourceid,
-- 
GitLab