diff --git a/packages/effect-fc/src/Component.ts b/packages/effect-fc/src/Component.ts index ceacc70..f1f0205 100644 --- a/packages/effect-fc/src/Component.ts +++ b/packages/effect-fc/src/Component.ts @@ -578,21 +578,17 @@ export const useReactLayoutEffect: { React.useLayoutEffect(() => runReactEffect(runtime, f, options), deps) }) -export const useRunSync: { - (): Effect.Effect<(effect: Effect.Effect) => A, never, Scope.Scope | R> -} = Effect.fnUntraced(function* ( - f: (...args: Args) => Effect.Effect, - deps: React.DependencyList, -) { - // biome-ignore lint/style/noNonNullAssertion: context initialization - const runtimeRef = React.useRef>(null!) - runtimeRef.current = yield* Effect.runtime() +export const useRunSync = (): Effect.Effect< + (effect: Effect.Effect) => A, + never, + Scope.Scope | R +> => Effect.andThen(Effect.runtime(), Runtime.runSync) - Runtime.runSync() - - // biome-ignore lint/correctness/useExhaustiveDependencies: use of React.DependencyList - return React.useCallback((...args: Args) => Runtime.runSync(runtimeRef.current)(f(...args)), deps) -}) +export const useRunPromise = (): Effect.Effect< + (effect: Effect.Effect) => Promise, + never, + Scope.Scope | R +> => Effect.andThen(Effect.runtime(), context => Runtime.runPromise(context)) export const useCallbackSync: { (