chore(core): decrease bundle-size

This commit is contained in:
Josep M Sobrepere 2020-10-20 12:44:58 +02:00
parent 14398b3509
commit 2780e1740a
5 changed files with 23 additions and 15 deletions

View File

@ -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}</>
}

View File

@ -3,7 +3,7 @@ import { BehaviorObservable } from "./BehaviorObservable"
import { EMPTY_VALUE } from "./empty-value"
const reactEnhancer = <T>(source$: BehaviorObservable<T>): (() => T) => {
let promise: Promise<T | void> | undefined
let promise: Promise<T | void> | null
let error: any = EMPTY_VALUE
return (): T => {
@ -46,11 +46,11 @@ const reactEnhancer = <T>(source$: BehaviorObservable<T>): (() => T) => {
subscription.unsubscribe()
}
}).finally(() => {
promise = undefined
promise = null
})
if (value !== EMPTY_VALUE) {
promise = undefined
promise = null
return value
}

View File

@ -7,8 +7,8 @@ const shareLatest = <T>(
shouldComplete = true,
teardown = noop,
): BehaviorObservable<T> => {
let subject: Subject<T> | undefined
let subscription: Subscription | undefined | null
let subject: Subject<T> | null
let subscription: Subscription | null
let refCount = 0
let currentValue: T = EMPTY_VALUE
@ -25,16 +25,16 @@ const shareLatest = <T>(
},
(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 = <T>(
subscription.unsubscribe()
}
teardown()
subject = undefined
subscription = undefined
subject = null
subscription = null
}
}
}) as BehaviorObservable<T>

View File

@ -21,7 +21,9 @@ export const useObservable = <O>(
})
}
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 = <O>(
}, onError)
t.unsubscribe()
return () => subscription.unsubscribe()
return () => {
subscription.unsubscribe()
}
}, keys)
return state as Exclude<O, typeof SUSPENSE>

View File

@ -13,6 +13,8 @@ import { useEffect } from "react"
export const useSubscribe = <T>(source$: Observable<T>) => {
useEffect(() => {
const subscription = source$.subscribe()
return () => subscription.unsubscribe()
return () => {
subscription.unsubscribe()
}
}, [source$])
}