From fe3e08de0f3a1c93cacade15892058438a0a61d8 Mon Sep 17 00:00:00 2001 From: Alejandro Celaya Date: Sat, 12 Sep 2020 12:06:53 +0200 Subject: [PATCH] Fixed event source not being properly closed with new boundToMercureHub HOC --- src/mercure/helpers/boundToMercureHub.tsx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/mercure/helpers/boundToMercureHub.tsx b/src/mercure/helpers/boundToMercureHub.tsx index b910404c..e952165f 100644 --- a/src/mercure/helpers/boundToMercureHub.tsx +++ b/src/mercure/helpers/boundToMercureHub.tsx @@ -1,4 +1,5 @@ import React, { FC, useEffect } from 'react'; +import { pipe } from 'ramda'; import { CreateVisit } from '../../visits/types'; import { MercureInfo } from '../reducers/mercureInfo'; import { bindToMercureTopic } from './index'; @@ -21,11 +22,10 @@ export function boundToMercureHub( useEffect(() => { const onMessage = (visit: CreateVisit) => interval ? pendingUpdates.add(visit) : createNewVisits([ visit ]); - - bindToMercureTopic(mercureInfo, getTopicForProps(props), onMessage, loadMercureInfo); + const closeEventSource = bindToMercureTopic(mercureInfo, getTopicForProps(props), onMessage, loadMercureInfo); if (!interval) { - return undefined; + return closeEventSource; } const timer = setInterval(() => { @@ -33,7 +33,7 @@ export function boundToMercureHub( pendingUpdates.clear(); }, interval * 1000 * 60); - return () => clearInterval(timer); + return pipe(() => clearInterval(timer), () => closeEventSource?.()); }, [ mercureInfo ]); return ;