X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=ui%2Fweb%2Fsrc%2Fcomposables%2FUIClient.ts;h=387d73d27529bfaf91e25f068bd9612ce53fb33c;hb=de7b9e0583275225509c099f75a2801371da54d0;hp=745accdfb8d0e60aa0883bd7133656cf6d4e9654;hpb=1a32c36b82a3da1c297073f05aceb288608e2d29;p=e-mobility-charging-stations-simulator.git diff --git a/ui/web/src/composables/UIClient.ts b/ui/web/src/composables/UIClient.ts index 745accdf..387d73d2 100644 --- a/ui/web/src/composables/UIClient.ts +++ b/ui/web/src/composables/UIClient.ts @@ -144,22 +144,22 @@ export class UIClient { command: ProcedureName, data: RequestPayload, ): Promise { - let uuid: string; - return await new Promise((resolve, reject) => { - uuid = crypto.randomUUID(); - const msg = JSON.stringify([uuid, command, data]); - + return new Promise((resolve, reject) => { if (this.ws.readyState !== WebSocket.OPEN) { this.openWS(); } if (this.ws.readyState === WebSocket.OPEN) { + const uuid = crypto.randomUUID(); + const msg = JSON.stringify([uuid, command, data]); const sendTimeout = setTimeout(() => { this.deleteResponseHandler(uuid); return reject(new Error(`Send request '${command}' message timeout`)); }, 60 * 1000); try { this.ws.send(msg); + this.setResponseHandler(uuid, command, resolve, reject); } catch (error) { + this.deleteResponseHandler(uuid); reject(error); } finally { clearTimeout(sendTimeout); @@ -167,8 +167,6 @@ export class UIClient { } else { throw new Error(`Send request '${command}' message: connection not opened`); } - - this.setResponseHandler(uuid, command, resolve, reject); }); } @@ -182,15 +180,18 @@ export class UIClient { const [uuid, responsePayload] = response; if (this.responseHandlers.has(uuid) === true) { + const { procedureName, resolve, reject } = this.getResponseHandler(uuid)!; switch (responsePayload.status) { case ResponseStatus.SUCCESS: - this.getResponseHandler(uuid)?.resolve(responsePayload); + resolve(responsePayload); break; case ResponseStatus.FAILURE: - this.getResponseHandler(uuid)?.reject(responsePayload); + reject(responsePayload); break; default: - console.error(`Response status not supported: ${responsePayload.status}`); + console.error( + `Response status for procedure '${procedureName}' not supported: '${responsePayload.status}'`, + ); } this.deleteResponseHandler(uuid); } else {