diff --git a/packages/reffuse/src/ReffuseHelpers.ts b/packages/reffuse/src/ReffuseHelpers.ts index 77d8dd6..516791a 100644 --- a/packages/reffuse/src/ReffuseHelpers.ts +++ b/packages/reffuse/src/ReffuseHelpers.ts @@ -382,6 +382,18 @@ export abstract class ReffuseHelpers { ) } + useSubscribeRefs< + const Refs extends readonly SubscriptionRef.SubscriptionRef[], + R, + >( + this: ReffuseHelpers, + ...refs: Refs + ): [...{ [K in keyof Refs]: Effect.Effect.Success }] { + const [reactStateValue, setReactStateValue] = React.useState( + this.useMemo(() => Effect.all(refs), [], { doNotReExecuteOnRuntimeOrContextChange: true }) + ) + } + /** * Binds the state of a `SubscriptionRef` to the state of the React component. * @@ -410,43 +422,6 @@ export abstract class ReffuseHelpers { return [reactStateValue, setValue] } - useRefsState< - const Refs extends { readonly [K in keyof Refs]: SubscriptionRef.SubscriptionRef }, - R, - >( - this: ReffuseHelpers, - refs: Refs, - ): { - readonly [K in keyof Refs]: readonly [ - Effect.Effect.Success, - React.Dispatch>>, - ] - } { - const [reactStateValue, setReactStateValue] = React.useState( - this.useMemo(() => Effect.Do.pipe( - Effect.bindAll(() => refs as Record>) - ), [], { - doNotReExecuteOnRuntimeOrContextChange: true - }) as { readonly [K in keyof Refs]: any } - ) - - this.useFork(() => ) - - // this.useFork(() => Stream.runForEach( - // Stream.changesWith(ref.changes, (x, y) => x === y), - // v => Effect.sync(() => setReactStateValue(v)), - // ), [ref]) - - // const setValue = this.useCallbackSync((setStateAction: React.SetStateAction) => - // Ref.update(ref, prevState => - // SetStateAction.value(setStateAction, prevState) - // ), - // [ref]) - - // return [reactStateValue, setValue] - return null! - } - useStreamFromValues( this: ReffuseHelpers, values: A,