diff --git a/packages/core/src/Subscribe.test.tsx b/packages/core/src/Subscribe.test.tsx index 67efa48..09ac70e 100644 --- a/packages/core/src/Subscribe.test.tsx +++ b/packages/core/src/Subscribe.test.tsx @@ -4,10 +4,8 @@ import { defer, Subject } from "rxjs" import { share, finalize } from "rxjs/operators" import { Subscribe } from "./" -const wait = (ms: number) => new Promise((res) => setTimeout(res, ms)) - describe("Subscribe", () => { - it("subscribes to the provided observable and remains subscribed until it's unmounted", async () => { + it("subscribes to the provided observable and remains subscribed until it's unmounted", () => { let nSubscriptions = 0 const source$ = defer(() => { nSubscriptions++ @@ -28,10 +26,6 @@ describe("Subscribe", () => { expect(nSubscriptions).toBe(1) unmount() - expect(nSubscriptions).toBe(1) - - await wait(250) - expect(nSubscriptions).toBe(0) }) }) diff --git a/packages/core/src/Subscribe.tsx b/packages/core/src/Subscribe.tsx index 6184f1f..7a32954 100644 --- a/packages/core/src/Subscribe.tsx +++ b/packages/core/src/Subscribe.tsx @@ -7,15 +7,12 @@ import { Observable } from "rxjs" * the component mounts and it unsubscribes when the component unmounts. * * @param source$ Source observable that the Component will subscribe to. - * @param graceTime (= 200): Amount of time in ms that the Component should wait - * before unsubscribing from the source observable after it unmounts. * * @remarks This Component doesn't trigger any updates. */ export const Subscribe: React.FC<{ source$: Observable - graceTime?: number -}> = ({ source$, graceTime, children }) => { - useSubscribe(source$, graceTime) +}> = ({ source$, children }) => { + useSubscribe(source$) return <>{children} } diff --git a/packages/core/src/useSubscribe.test.ts b/packages/core/src/useSubscribe.test.ts index e68ecf2..908ce8f 100644 --- a/packages/core/src/useSubscribe.test.ts +++ b/packages/core/src/useSubscribe.test.ts @@ -3,10 +3,8 @@ import { share, finalize } from "rxjs/operators" import { renderHook } from "@testing-library/react-hooks" import { useSubscribe } from "./" -const wait = (ms: number) => new Promise((res) => setTimeout(res, ms)) - describe("useSubscribe", () => { - it("subscribes to the provided observable and remains subscribed until it's unmounted", async () => { + it("subscribes to the provided observable and remains subscribed until it's unmounted", () => { let nSubscriptions = 0 const source$ = defer(() => { nSubscriptions++ @@ -20,15 +18,11 @@ describe("useSubscribe", () => { expect(nSubscriptions).toBe(0) - const { unmount } = renderHook(() => useSubscribe(source$, 201)) + const { unmount } = renderHook(() => useSubscribe(source$)) expect(nSubscriptions).toBe(1) unmount() - expect(nSubscriptions).toBe(1) - - await wait(250) - expect(nSubscriptions).toBe(0) }) }) diff --git a/packages/core/src/useSubscribe.ts b/packages/core/src/useSubscribe.ts index 7e449ef..09ccee1 100644 --- a/packages/core/src/useSubscribe.ts +++ b/packages/core/src/useSubscribe.ts @@ -6,24 +6,13 @@ import { useEffect } from "react" * component mounts and it unsubscribes when the component unmounts. * * @param source$ Source observable that the hook will subscribe to. - * @param unsubscribeGraceTime (= 200): Amount of time in ms that the hook - * should wait before unsubscribing from the source observable after it unmounts. * @returns void * * @remarks This hook doesn't trigger any updates. */ -export const useSubscribe = ( - source$: Observable, - unsubscribeGraceTime = 200, -) => { +export const useSubscribe = (source$: Observable) => { useEffect(() => { const subscription = source$.subscribe() - return () => { - /* istanbul ignore else */ - if (unsubscribeGraceTime !== Infinity) - setTimeout(() => { - subscription.unsubscribe() - }, unsubscribeGraceTime) - } - }, [source$, unsubscribeGraceTime]) + return () => subscription.unsubscribe() + }, [source$]) }