From 4a5f4c329db9f38c7f191b37f7ebd66bb506393d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Valverd=C3=A9?= Date: Wed, 22 Oct 2025 12:59:33 +0200 Subject: [PATCH] Fix --- packages/effect-fc/src/Component.ts | 3 +-- packages/effect-fc/src/Form.ts | 10 +++++----- packages/effect-fc/src/SubscriptionRef.ts | 6 +++--- 3 files changed, 9 insertions(+), 10 deletions(-) diff --git a/packages/effect-fc/src/Component.ts b/packages/effect-fc/src/Component.ts index 4bb01f4..beaa315 100644 --- a/packages/effect-fc/src/Component.ts +++ b/packages/effect-fc/src/Component.ts @@ -469,8 +469,7 @@ export const useOnMount: { f: () => Effect.Effect ) { const runtime = yield* Effect.runtime() - // biome-ignore lint/correctness/useExhaustiveDependencies: only computed on mount - return yield* React.useMemo(() => Runtime.runSync(runtime)(Effect.cached(f())), []) + return yield* React.useState(() => Runtime.runSync(runtime)(Effect.cached(f())))[0] }) export const useOnChange: { diff --git a/packages/effect-fc/src/Form.ts b/packages/effect-fc/src/Form.ts index 360598f..ae78538 100644 --- a/packages/effect-fc/src/Form.ts +++ b/packages/effect-fc/src/Form.ts @@ -116,18 +116,18 @@ export const run = ( onNone: () => Effect.void, })), Effect.andThen( - Effect.addFinalizer(() => SubscriptionRef.set(self.validationFiberRef, Option.none())).pipe( + Effect.addFinalizer(() => Ref.set(self.validationFiberRef, Option.none())).pipe( Effect.andThen(Schema.decode(self.schema, { errors: "all" })(encodedValue)), Effect.exit, Effect.andThen(flow( Exit.matchEffect({ - onSuccess: v => SubscriptionRef.set(self.valueRef, Option.some(v)).pipe( - Effect.andThen(SubscriptionRef.set(self.errorRef, Option.none())), + onSuccess: v => Ref.set(self.valueRef, Option.some(v)).pipe( + Effect.andThen(Ref.set(self.errorRef, Option.none())), Effect.as(Option.some(v)), ), onFailure: c => Chunk.findFirst(Cause.failures(c), e => e._tag === "ParseError").pipe( Option.match({ - onSome: e => SubscriptionRef.set(self.errorRef, Option.some(e)), + onSome: e => Ref.set(self.errorRef, Option.some(e)), onNone: () => Effect.void, }), Effect.as(Option.none()), @@ -144,7 +144,7 @@ export const run = ( Effect.forkScoped, ) ), - Effect.andThen(fiber => SubscriptionRef.set(self.validationFiberRef, Option.some(fiber))) + Effect.andThen(fiber => Ref.set(self.validationFiberRef, Option.some(fiber))) ), ) diff --git a/packages/effect-fc/src/SubscriptionRef.ts b/packages/effect-fc/src/SubscriptionRef.ts index c1afcc2..7fb7604 100644 --- a/packages/effect-fc/src/SubscriptionRef.ts +++ b/packages/effect-fc/src/SubscriptionRef.ts @@ -1,4 +1,4 @@ -import { Effect, Equivalence, type Scope, Stream, SubscriptionRef } from "effect" +import { Effect, Equivalence, Ref, type Scope, Stream, SubscriptionRef } from "effect" import * as React from "react" import * as Component from "./Component.js" import * as SetStateAction from "./SetStateAction.js" @@ -18,7 +18,7 @@ export const useSubscriptionRefState: { const setValue = yield* Component.useCallbackSync((setStateAction: React.SetStateAction) => Effect.andThen( - SubscriptionRef.updateAndGet(ref, prevState => SetStateAction.value(setStateAction, prevState)), + Ref.updateAndGet(ref, prevState => SetStateAction.value(setStateAction, prevState)), v => setReactStateValue(v), ), [ref]) @@ -35,7 +35,7 @@ export const useSubscriptionRefFromState: { Stream.changesWith(ref.changes, Equivalence.strict()), v => Effect.sync(() => setValue(v)), )), [setValue]) - yield* Component.useReactEffect(() => SubscriptionRef.set(ref, value), [value]) + yield* Component.useReactEffect(() => Ref.set(ref, value), [value]) return ref })