diff --git a/src/sdk/MessageBus.ts b/src/sdk/MessageBus.ts index 69728549..4a6ffe31 100644 --- a/src/sdk/MessageBus.ts +++ b/src/sdk/MessageBus.ts @@ -643,6 +643,41 @@ export default class MessageBus { }); } + public verifyMerkleProof(merkleProof: string, documentHash: string): Promise { + return new Promise((resolve: (isValid: boolean) => void, reject: (error: string) => void) => { + this.checkToken().then(() => { + const messageId = `VALIDATE_MERKLE_PROOF_${uuidv4()}`; + + const unsubscribe = EventBus.getInstance().on('MERKLE_PROOF_VALIDATED', (responseId: string, isValid: boolean) => { + if (responseId !== messageId) { + return; + } + unsubscribe(); + resolve(isValid); + }); + + const unsubscribeError = EventBus.getInstance().on('ERROR_MERKLE_PROOF_VALIDATED', (responseId: string, error: string) => { + if (responseId !== messageId) { + return; + } + unsubscribeError(); + reject(error); + }); + + const user = User.getInstance(); + const accessToken = user.getAccessToken()!; + + this.sendMessage({ + type: 'VALIDATE_MERKLE_PROOF', + accessToken, + merkleProof, + documentHash, + messageId + }); + }).catch(reject); + }); + } + private validateToken(): Promise { return new Promise((resolve: (isValid: boolean) => void, reject: (error: string) => void) => { const messageId = `VALIDATE_TOKEN_${uuidv4()}`; @@ -733,7 +768,9 @@ export default class MessageBus { console.error('[MessageBus] sendMessage: iframe not found'); return; } - // console.log('[MessageBus] sendMessage:', message); + if (message.type === 'VALIDATE_MERKLE_PROOF') { + console.log('[MessageBus] sendMessage:', message); + } iframe.contentWindow?.postMessage(message, targetOrigin); } @@ -836,10 +873,14 @@ export default class MessageBus { this.doHandleMessage(message.messageId, 'VALUE_HASHED', message, (message: any) => message.hash); break; - case 'MERKLE_PROOF_RETRIEVED': // GENERATE_MERKLE_PROOF + case 'MERKLE_PROOF_RETRIEVED': // GET_MERKLE_PROOF this.doHandleMessage(message.messageId, 'MERKLE_PROOF_RETRIEVED', message, (message: any) => message.proof); break; + case 'MERKLE_PROOF_VALIDATED': // VALIDATE_MERKLE_PROOF + this.doHandleMessage(message.messageId, 'MERKLE_PROOF_VALIDATED', message, (message: any) => message.isValid); + break; + case 'ERROR': console.error('Error:', message); this.errors[message.messageId] = message.error;