@@ -10,21 +10,16 @@ import {
10
10
distinctUntilChanged ,
11
11
catchError ,
12
12
EMPTY ,
13
- type BehaviorSubject ,
13
+ type BehaviorSubject
14
14
} from "rxjs"
15
15
import { useLiveRef } from "../utils/useLiveRef"
16
16
import { primitiveEqual } from "../utils/primitiveEqual"
17
17
18
18
interface Option < R = undefined > {
19
19
defaultValue : R
20
- key ?: string
21
20
unsubscribeOnUnmount ?: boolean
22
21
}
23
22
24
- /**
25
- * @todo return first value if source is behavior subject
26
- */
27
-
28
23
export function useObserve < T > ( source : BehaviorSubject < T > ) : T
29
24
30
25
export function useObserve < T > ( source : Observable < T > ) : T | undefined
@@ -44,22 +39,21 @@ export function useObserve<T>(
44
39
45
40
export function useObserve < T > (
46
41
source$ : Observable < T > | ( ( ) => Observable < T > ) ,
47
- unsafeOptions ?: Option < T > | DependencyList ,
48
- unsafeDeps ?: DependencyList
42
+ optionsOrDeps ?: Option < T > | DependencyList ,
43
+ maybeDeps ?: DependencyList
49
44
) : T {
50
45
const options =
51
- unsafeOptions != null && ! Array . isArray ( unsafeOptions )
52
- ? ( unsafeOptions as Option < T > )
46
+ optionsOrDeps != null && ! Array . isArray ( optionsOrDeps )
47
+ ? ( optionsOrDeps as Option < T > )
53
48
: ( {
54
49
defaultValue : undefined ,
55
- key : "" ,
56
50
unsubscribeOnUnmount : true
57
51
} satisfies Option < undefined > )
58
52
const deps =
59
- unsafeDeps == null && Array . isArray ( unsafeOptions )
60
- ? unsafeOptions
53
+ ! maybeDeps && Array . isArray ( optionsOrDeps )
54
+ ? optionsOrDeps
61
55
: typeof source$ === "function"
62
- ? unsafeDeps ?? [ ]
56
+ ? maybeDeps ?? [ ]
63
57
: [ source$ ]
64
58
const valueRef = useRef (
65
59
"getValue" in source$ && typeof source$ . getValue === "function"
@@ -85,13 +79,11 @@ export function useObserve<T>(
85
79
*/
86
80
distinctUntilChanged ( primitiveEqual ) ,
87
81
tap ( ( value ) => {
88
- valueRef . current = value as any
82
+ valueRef . current = value
89
83
} ) ,
90
84
catchError ( ( error ) => {
91
85
console . error ( error )
92
86
93
- valueRef . current = undefined
94
-
95
87
return EMPTY
96
88
} )
97
89
)
0 commit comments