diff --git a/apps/web/src/api/index.ts b/apps/web/src/api/index.ts index 21e9da175c37fea0972e128081affe9163434f1f..aab368b5a233c10718a5343eef2eaf1731b20e38 100644 --- a/apps/web/src/api/index.ts +++ b/apps/web/src/api/index.ts @@ -62,6 +62,7 @@ class GatewayApi { const conf: any = {}; let eventId = "-1"; + const events = {}; conf.fn = (message: GatewayMessageType) => { console.log(new Date().getTime() + ' Received message: ', message); if (message.id === eventId) { @@ -69,6 +70,8 @@ class GatewayApi { this.events.off('message', conf.fn); clearTimeout(conf.timeoutId); conf.resolve({ status: 200, json: () => message.data }); + } else { + events[message.id] = message; } }; this.events.on('message', conf.fn); @@ -85,6 +88,11 @@ class GatewayApi { const gatewayResponse = await fetch(url, init); const gatewayData = await gatewayResponse.json(); eventId = gatewayData.id; + if (events[eventId]) { + this.events.off('message', conf.fn); + clearTimeout(conf.timeoutId); + conf.resolve({ status: 200, json: () => events[eventId].data }); + } console.log(new Date().getTime() + ' Received event id: ' + eventId); }); };