0.1.3 #4
@@ -41,6 +41,7 @@ export const useInput: {
|
|||||||
internalRef.pipe(
|
internalRef.pipe(
|
||||||
Effect.andThen(Schema.decode(options.schema)),
|
Effect.andThen(Schema.decode(options.schema)),
|
||||||
Effect.andThen(decodedInternalValue => !(options.equivalence ?? Equal.equals)(upstreamValue, decodedInternalValue)),
|
Effect.andThen(decodedInternalValue => !(options.equivalence ?? Equal.equals)(upstreamValue, decodedInternalValue)),
|
||||||
|
Effect.catchTag("ParseError", () => Effect.succeed(false)),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ export const useOptionalInput: {
|
|||||||
|
|
||||||
yield* useFork(() => Effect.all([
|
yield* useFork(() => Effect.all([
|
||||||
// Sync the upstream state with the internal state
|
// Sync the upstream state with the internal state
|
||||||
// Only mutate the internal state if the upstream encoded value is actually different. This avoids infinite re-render loops.
|
// Only mutate the internal state if the upstream value is actually different. This avoids infinite re-render loops.
|
||||||
Stream.runForEach(options.ref.changes, Option.match({
|
Stream.runForEach(options.ref.changes, Option.match({
|
||||||
onSome: upstreamValue => Effect.whenEffect(
|
onSome: upstreamValue => Effect.whenEffect(
|
||||||
Effect.andThen(
|
Effect.andThen(
|
||||||
@@ -59,6 +59,7 @@ export const useOptionalInput: {
|
|||||||
internalRef.pipe(
|
internalRef.pipe(
|
||||||
Effect.andThen(Schema.decode(options.schema)),
|
Effect.andThen(Schema.decode(options.schema)),
|
||||||
Effect.andThen(decodedInternalValue => !(options.equivalence ?? Equal.equals)(upstreamValue, decodedInternalValue)),
|
Effect.andThen(decodedInternalValue => !(options.equivalence ?? Equal.equals)(upstreamValue, decodedInternalValue)),
|
||||||
|
Effect.catchTag("ParseError", () => Effect.succeed(false)),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user