From c7a68d8653875d23a6c19e0bdda37661b3863829 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Valverd=C3=A9?= Date: Tue, 4 Nov 2025 00:46:07 +0100 Subject: [PATCH] Add useRunSync --- packages/effect-fc/src/Component.ts | 24 ++++++++++-------------- 1 file changed, 10 insertions(+), 14 deletions(-) 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: { (