From 69ddbbdd1691257298fd63b26a7ed3e1194e10ef Mon Sep 17 00:00:00 2001 From: Sosthene Date: Mon, 30 Jun 2025 22:38:06 +0200 Subject: [PATCH] Add hashDocument to MessageBus --- src/sdk/MessageBus.ts | 48 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/src/sdk/MessageBus.ts b/src/sdk/MessageBus.ts index e578060d..c027be89 100644 --- a/src/sdk/MessageBus.ts +++ b/src/sdk/MessageBus.ts @@ -6,6 +6,7 @@ import EventBus from './EventBus'; import User from './User'; import MapUtils from './MapUtils'; +import { FileBlob } from '../front/Api/Entities/types'; export default class MessageBus { private static instance: MessageBus; @@ -567,6 +568,49 @@ export default class MessageBus { }); } + /** + * Hash a document file using SHA-256 + * @param fileBlob - The file blob to hash + * @returns Promise - The SHA-256 hash of the file + */ + public hashDocument(fileBlob: FileBlob, commitedIn: string): Promise { + return new Promise((resolve: (hash: string) => void, reject: (error: string) => void) => { + this.checkToken().then(() => { + const messageId = `HASH_VALUE_${uuidv4()}`; + + const unsubscribe = EventBus.getInstance().on('VALUE_HASHED', (responseId: string, hash: string) => { + if (responseId !== messageId) { + return; + } + unsubscribe(); + resolve(hash); + }); + + const unsubscribeError = EventBus.getInstance().on('ERROR_VALUE_HASHED', (responseId: string, error: string) => { + if (responseId !== messageId) { + return; + } + unsubscribeError(); + reject(error); + }); + + const user = User.getInstance(); + const accessToken = user.getAccessToken()!; + + const label = 'file_blob'; + + this.sendMessage({ + type: 'HASH_VALUE', + accessToken, + commitedIn, + label, + fileBlob, + messageId + }); + }).catch(reject); + }); + } + private validateToken(): Promise { return new Promise((resolve: (isValid: boolean) => void, reject: (error: string) => void) => { const messageId = `VALIDATE_TOKEN_${uuidv4()}`; @@ -756,6 +800,10 @@ export default class MessageBus { this.doHandleMessage(message.messageId, 'STATE_VALIDATED', message, (message: any) => message.validatedProcess); break; + case 'VALUE_HASHED': // HASH_VALUE + this.doHandleMessage(message.messageId, 'VALUE_HASHED', message, (message: any) => message.hash); + break; + case 'ERROR': console.error('Error:', message); this.errors[message.messageId] = message.error;