From 820bf1954e205b9eeecf71219c4438b0475b6cc1 Mon Sep 17 00:00:00 2001 From: Jesse Kelly Date: Sun, 21 Apr 2024 15:22:55 -0600 Subject: [PATCH] reused readSub --- packages/rx/src/Rx.ts | 43 ++++++++++++++++--------------------------- 1 file changed, 16 insertions(+), 27 deletions(-) diff --git a/packages/rx/src/Rx.ts b/packages/rx/src/Rx.ts index ce30004..bb170c0 100644 --- a/packages/rx/src/Rx.ts +++ b/packages/rx/src/Rx.ts @@ -662,25 +662,29 @@ function makeStream( // constructors - subscription ref // ----------------------------------------------------------------------------- -const makeSubRef = ( - refRx: Rx | Result.Result, any>> -) => { - function read(get: Context) { - const ref = get(refRx) - if (SubscriptionRef.SubscriptionRefTypeId in ref) { +/** @internal */ +const readSub = (subRx: Rx | Result.Result, any>>) => (get: Context) => { + const sub = get(subRx) + if (Subscribable.TypeId in sub) { get.addFinalizer( - ref.changes.pipe( + sub.changes.pipe( Stream.runForEach((value) => get.setSelf(value)), Effect.runCallback ) ) - return Effect.runSync(SubscriptionRef.get(ref)) - } else if (ref._tag !== "Success") { - return ref + return Effect.runSync(sub.get) + } else if (sub._tag !== "Success") { + return sub } - return makeStream(get, ref.value.changes, Result.initial(true)) + return makeStream(get, sub.value.changes, Result.initial(true)) } + +const makeSubRef = ( + refRx: Rx | Result.Result, any>> +) => { + const read = readSub(refRx); + function write(ctx: WriteContext>, value: any) { const ref = ctx.get(refRx) if (SubscriptionRef.SubscriptionRefTypeId in ref) { @@ -733,22 +737,7 @@ export const subRef: { export const makeSub = ( subRx: Rx | Result.Result, any>> ) => { - function read(get: Context) { - const sub = get(subRx) - if (Subscribable.TypeId in sub) { - get.addFinalizer( - sub.changes.pipe( - Stream.runForEach((value) => get.setSelf(value)), - Effect.runCallback - ) - ) - return Effect.runSync(sub.get) - } else if (sub._tag !== "Success") { - return sub - } - return makeStream(get, sub.value.changes, Result.initial(true)) - } - + const read = readSub(subRx) return readable(read) }