Hooks
All checks were successful
Lint / lint (push) Successful in 14s

This commit is contained in:
Julien Valverdé
2025-07-01 20:12:17 +02:00
parent 19194d6677
commit 2a78232ec7

View File

@@ -290,16 +290,18 @@ export const useStreamFromReactiveValues: {
}) })
export const useSubscribeStream: { export const useSubscribeStream: {
<A, E, R>(stream: Stream.Stream<A, E, R>): Effect.Effect<Option.Option<A>, never, R>
<A, E, R>( <A, E, R>(
stream: Stream.Stream<A, E, R>
): Effect.Effect<Option.Option<A>, never, R>
<A extends NonNullable<unknown>, E, R>(
stream: Stream.Stream<A, E, R>, stream: Stream.Stream<A, E, R>,
initialValue: A, initialValue: A,
): Effect.Effect<Option.Some<A>, never, R> ): Effect.Effect<Option.Some<A>, never, R>
} = Effect.fnUntraced(function* <A, E, R>( } = Effect.fnUntraced(function* <A extends NonNullable<unknown>, E, R>(
stream: Stream.Stream<A, E, R>, stream: Stream.Stream<A, E, R>,
initialValue?: A, initialValue?: A,
) { ) {
const [reactStateValue, setReactStateValue] = React.useState<Option.Option<A>>( const [reactStateValue, setReactStateValue] = React.useState(
React.useMemo(() => initialValue React.useMemo(() => initialValue
? Option.some(initialValue) ? Option.some(initialValue)
: Option.none(), : Option.none(),
@@ -311,5 +313,5 @@ export const useSubscribeStream: {
v => Effect.sync(() => setReactStateValue(Option.some(v))), v => Effect.sync(() => setReactStateValue(Option.some(v))),
), [stream]) ), [stream])
return reactStateValue return reactStateValue as Option.Some<A>
}) })