X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Fcharging-station%2FUIServiceWorkerBroadcastChannel.ts;h=e323056cd2c6456b8eb0f83759a30a2cbf473a4b;hb=5d280aae12d6ad7367136421c8e2414a676d2c1a;hp=c556b26c8ccacf1f5b21b80c9e7afe2accbc235d;hpb=3880dbcf93ed551112ce38ecb78b6631cb257976;p=e-mobility-charging-stations-simulator.git diff --git a/src/charging-station/UIServiceWorkerBroadcastChannel.ts b/src/charging-station/UIServiceWorkerBroadcastChannel.ts index c556b26c..e323056c 100644 --- a/src/charging-station/UIServiceWorkerBroadcastChannel.ts +++ b/src/charging-station/UIServiceWorkerBroadcastChannel.ts @@ -1,4 +1,4 @@ -import { ResponsePayload, ResponseStatus } from '../types/UIProtocol'; +import { type ResponsePayload, ResponseStatus } from '../types/UIProtocol'; import type { BroadcastChannelResponse, BroadcastChannelResponsePayload, @@ -29,11 +29,14 @@ export default class UIServiceWorkerBroadcastChannel extends WorkerBroadcastChan } private responseHandler(messageEvent: MessageEvent): void { - if (this.isRequest(messageEvent.data) === true) { + const validatedMessageEvent = this.validateMessageEvent(messageEvent); + if (validatedMessageEvent === false) { return; } - const [uuid, responsePayload] = this.validateMessageEvent(messageEvent) - .data as BroadcastChannelResponse; + if (this.isRequest(validatedMessageEvent.data) === true) { + return; + } + const [uuid, responsePayload] = validatedMessageEvent.data as BroadcastChannelResponse; if (this.responses.has(uuid) === false) { this.responses.set(uuid, { responsesExpected: this.uiService.getBroadcastChannelExpectedResponses(uuid), @@ -56,11 +59,12 @@ export default class UIServiceWorkerBroadcastChannel extends WorkerBroadcastChan } private buildResponsePayload(uuid: string): ResponsePayload { - const responsesStatus = this.responses - .get(uuid) - ?.responses.every((response) => response.status === ResponseStatus.SUCCESS) - ? ResponseStatus.SUCCESS - : ResponseStatus.FAILURE; + const responsesStatus = + this.responses + .get(uuid) + ?.responses.every(({ status }) => status === ResponseStatus.SUCCESS) === true + ? ResponseStatus.SUCCESS + : ResponseStatus.FAILURE; return { status: responsesStatus, hashIdsSucceeded: this.responses @@ -81,13 +85,23 @@ export default class UIServiceWorkerBroadcastChannel extends WorkerBroadcastChan }) .filter((hashId) => hashId !== undefined), }), + ...(responsesStatus === ResponseStatus.FAILURE && { + responsesFailed: this.responses + .get(uuid) + ?.responses.map((response) => { + if (response.status === ResponseStatus.FAILURE) { + return response; + } + }) + .filter((response) => response !== undefined), + }), }; } private messageErrorHandler(messageEvent: MessageEvent): void { logger.error( `${this.uiService.logPrefix(moduleName, 'messageErrorHandler')} Error at handling message:`, - { messageEvent } + messageEvent ); } }