diff --git a/javascript/src/iframe/viamapi-iframe.js b/javascript/src/iframe/viamapi-iframe.js index 944bf6743e4244b63e6207b0b8953048fa3a9646..23d3a732bf99bea475795d39d0013911aee0ec2c 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,