From 2780e1740adcd4e60904b20eae6cbd801570954a Mon Sep 17 00:00:00 2001 From: Josep M Sobrepere Date: Tue, 20 Oct 2020 12:44:58 +0200 Subject: [PATCH] chore(core): decrease bundle-size --- packages/core/src/Subscribe.tsx | 4 +++- packages/core/src/internal/react-enhancer.ts | 6 +++--- packages/core/src/internal/share-latest.ts | 16 ++++++++-------- packages/core/src/internal/useObservable.ts | 8 ++++++-- packages/core/src/useSubscribe.ts | 4 +++- 5 files changed, 23 insertions(+), 15 deletions(-) diff --git a/packages/core/src/Subscribe.tsx b/packages/core/src/Subscribe.tsx index 8c52199a..6c3fa1c9 100644 --- a/packages/core/src/Subscribe.tsx +++ b/packages/core/src/Subscribe.tsx @@ -18,7 +18,9 @@ export const Subscribe: React.FC<{ useEffect(() => { const subscription = source$.subscribe() setMounted(1) - return () => subscription.unsubscribe() + return () => { + subscription.unsubscribe() + } }, [source$]) return <>{mounted ? children : fallback} } diff --git a/packages/core/src/internal/react-enhancer.ts b/packages/core/src/internal/react-enhancer.ts index 79abaf1e..a27551fb 100644 --- a/packages/core/src/internal/react-enhancer.ts +++ b/packages/core/src/internal/react-enhancer.ts @@ -3,7 +3,7 @@ import { BehaviorObservable } from "./BehaviorObservable" import { EMPTY_VALUE } from "./empty-value" const reactEnhancer = (source$: BehaviorObservable): (() => T) => { - let promise: Promise | undefined + let promise: Promise | null let error: any = EMPTY_VALUE return (): T => { @@ -46,11 +46,11 @@ const reactEnhancer = (source$: BehaviorObservable): (() => T) => { subscription.unsubscribe() } }).finally(() => { - promise = undefined + promise = null }) if (value !== EMPTY_VALUE) { - promise = undefined + promise = null return value } diff --git a/packages/core/src/internal/share-latest.ts b/packages/core/src/internal/share-latest.ts index c75baf84..361227bd 100644 --- a/packages/core/src/internal/share-latest.ts +++ b/packages/core/src/internal/share-latest.ts @@ -7,8 +7,8 @@ const shareLatest = ( shouldComplete = true, teardown = noop, ): BehaviorObservable => { - let subject: Subject | undefined - let subscription: Subscription | undefined | null + let subject: Subject | null + let subscription: Subscription | null let refCount = 0 let currentValue: T = EMPTY_VALUE @@ -25,16 +25,16 @@ const shareLatest = ( }, (err) => { const _subject = subject - subscription = undefined - subject = undefined + subscription = null + subject = null _subject!.error(err) }, () => { - subscription = undefined + subscription = null shouldComplete && subject!.complete() }, ) - if (subscription.closed) subscription = undefined + if (subscription.closed) subscription = null } else { innerSub = subject.subscribe(subscriber) if (currentValue !== EMPTY_VALUE) { @@ -51,8 +51,8 @@ const shareLatest = ( subscription.unsubscribe() } teardown() - subject = undefined - subscription = undefined + subject = null + subscription = null } } }) as BehaviorObservable diff --git a/packages/core/src/internal/useObservable.ts b/packages/core/src/internal/useObservable.ts index 680cdd37..c6f77404 100644 --- a/packages/core/src/internal/useObservable.ts +++ b/packages/core/src/internal/useObservable.ts @@ -21,7 +21,9 @@ export const useObservable = ( }) } - let subscription = source$.subscribe((val) => (syncVal = val), onError) + let subscription = source$.subscribe((val) => { + syncVal = val + }, onError) if (err !== EMPTY_VALUE) return const set = (val: O | (() => O)) => { @@ -37,7 +39,9 @@ export const useObservable = ( }, onError) t.unsubscribe() - return () => subscription.unsubscribe() + return () => { + subscription.unsubscribe() + } }, keys) return state as Exclude diff --git a/packages/core/src/useSubscribe.ts b/packages/core/src/useSubscribe.ts index 09ccee1f..2923666e 100644 --- a/packages/core/src/useSubscribe.ts +++ b/packages/core/src/useSubscribe.ts @@ -13,6 +13,8 @@ import { useEffect } from "react" export const useSubscribe = (source$: Observable) => { useEffect(() => { const subscription = source$.subscribe() - return () => subscription.unsubscribe() + return () => { + subscription.unsubscribe() + } }, [source$]) }