diff --git a/src/sdk/MessageBus.ts b/src/sdk/MessageBus.ts index c027be89..6d1e1dc7 100644 --- a/src/sdk/MessageBus.ts +++ b/src/sdk/MessageBus.ts @@ -611,6 +611,41 @@ export default class MessageBus { }); } + public generateMerkleProof(processState: any, attributeName: string): Promise { + return new Promise((resolve: (proof: any) => void, reject: (error: string) => void) => { + this.checkToken().then(() => { + const messageId = `GET_MERKLE_PROOF_${uuidv4()}`; + + const unsubscribe = EventBus.getInstance().on('MERKLE_PROOF_RETRIEVED', (responseId: string, proof: any) => { + if (responseId !== messageId) { + return; + } + unsubscribe(); + resolve(proof); + }); + + const unsubscribeError = EventBus.getInstance().on('ERROR_MERKLE_PROOF_RETRIEVED', (responseId: string, error: string) => { + if (responseId !== messageId) { + return; + } + unsubscribeError(); + reject(error); + }); + + const user = User.getInstance(); + const accessToken = user.getAccessToken()!; + + this.sendMessage({ + type: 'GET_MERKLE_PROOF', + accessToken, + processState, + attributeName, + messageId + }); + }).catch(reject); + }); + } + private validateToken(): Promise { return new Promise((resolve: (isValid: boolean) => void, reject: (error: string) => void) => { const messageId = `VALIDATE_TOKEN_${uuidv4()}`; @@ -804,6 +839,10 @@ export default class MessageBus { this.doHandleMessage(message.messageId, 'VALUE_HASHED', message, (message: any) => message.hash); break; + case 'MERKLE_PROOF_RETRIEVED': // GENERATE_MERKLE_PROOF + this.doHandleMessage(message.messageId, 'MERKLE_PROOF_RETRIEVED', message, (message: any) => message.proof); + break; + case 'ERROR': console.error('Error:', message); this.errors[message.messageId] = message.error;