From 110b0813f8036558fc5ee1fab6ddd2360e75ecb1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Valverd=C3=A9?= Date: Sun, 20 Apr 2025 06:14:58 +0200 Subject: [PATCH] Refactoring --- packages/example/src/routes/tests.tsx | 2 +- .../reffuse/src/types/SubscriptionSubRef.ts | 30 +++++++++---------- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/packages/example/src/routes/tests.tsx b/packages/example/src/routes/tests.tsx index a79c689..55faa45 100644 --- a/packages/example/src/routes/tests.tsx +++ b/packages/example/src/routes/tests.tsx @@ -13,7 +13,7 @@ export const Route = createFileRoute("/tests")({ function RouteComponent() { const deepRef = R.useRef({ value: "poulet" }) - const deepValueRef = useMemo(() => SubscriptionSubRef.make( + const deepValueRef = useMemo(() => SubscriptionSubRef.makeFromGetSet( deepRef, b => b.value, (b, a) => ({ ...b, value: a }), diff --git a/packages/reffuse/src/types/SubscriptionSubRef.ts b/packages/reffuse/src/types/SubscriptionSubRef.ts index b7c666a..4fdca0d 100644 --- a/packages/reffuse/src/types/SubscriptionSubRef.ts +++ b/packages/reffuse/src/types/SubscriptionSubRef.ts @@ -2,7 +2,7 @@ import { Effect, Effectable, Readable, Ref, Stream, Subscribable, SubscriptionRe export interface SubscriptionSubRef extends SubscriptionRef.SubscriptionRef { - readonly ref: SubscriptionRef.SubscriptionRef + readonly parent: SubscriptionRef.SubscriptionRef } @@ -19,12 +19,12 @@ class SubscriptionSubRefImpl extends Effectable.Class imp readonly get: Effect.Effect constructor( - readonly ref: SubscriptionRef.SubscriptionRef, - readonly select: (value: B) => A, - readonly setter: (value: B, subValue: A) => B, + readonly parent: SubscriptionRef.SubscriptionRef, + readonly getter: (parentValue: B) => A, + readonly setter: (parentValue: B, value: A) => B, ) { super() - this.get = Ref.get(this.ref).pipe(Effect.map(this.select)) + this.get = Ref.get(this.parent).pipe(Effect.map(this.getter)) } commit() { @@ -33,8 +33,8 @@ class SubscriptionSubRefImpl extends Effectable.Class imp get changes(): Stream.Stream { return this.get.pipe( - Effect.map(a => this.ref.changes.pipe( - Stream.map(this.select), + Effect.map(a => this.parent.changes.pipe( + Stream.map(this.getter), s => Stream.concat(Stream.make(a), s), )), Stream.unwrap, @@ -47,17 +47,17 @@ class SubscriptionSubRefImpl extends Effectable.Class imp modifyEffect(f: (a: A) => Effect.Effect): Effect.Effect { return Effect.Do.pipe( - Effect.bind("b", () => Ref.get(this.ref)), - Effect.bind("ca", ({ b }) => f(this.select(b))), - Effect.tap(({ b, ca: [, a] }) => Ref.set(this.ref, this.setter(b, a))), + Effect.bind("b", () => Ref.get(this.parent)), + Effect.bind("ca", ({ b }) => f(this.getter(b))), + Effect.tap(({ b, ca: [, a] }) => Ref.set(this.parent, this.setter(b, a))), Effect.map(({ ca: [c] }) => c), ) } } -export const make = ( - ref: SubscriptionRef.SubscriptionRef, - select: (value: B) => A, - setter: (value: B, subValue: A) => B, -): SubscriptionSubRef => new SubscriptionSubRefImpl(ref, select, setter) +export const makeFromGetSet = ( + parent: SubscriptionRef.SubscriptionRef, + getter: (parentValue: B) => A, + setter: (parentValue: B, value: A) => B, +): SubscriptionSubRef => new SubscriptionSubRefImpl(parent, getter, setter)