Refactor Result
Some checks failed
Lint / lint (push) Failing after 41s

This commit is contained in:
Julien Valverdé
2026-03-31 02:26:32 +02:00
parent 9978f6811f
commit 717f264aa1

View File

@@ -174,20 +174,24 @@ export class PreviousResultNotRunningNorRefreshing extends Data.TaggedError("@ef
export const makeProgressLayer = <A, E, P = never>(
state: Lens.Lens<Result<A, E, P>, never, never, never, never>
): Layer.Layer<Progress<P> | Progress<never>, never, never> => Layer.effect(
): Layer.Layer<Progress<P> | Progress<never>, never, never> => Layer.succeed(
Progress<P>() as Context.Tag<Progress<P> | Progress<never>, Progress<P> | Progress<never>>,
Effect.gen(function*() {
const lens = Lens.mapEffect(
state,
a => (isRunning(a) || hasRefreshingFlag(a))
? Effect.succeed(a.progress)
: Effect.fail(new PreviousResultNotRunningNorRefreshing({ previous: a })),
(a, b) => isRunning(a)
? Effect.succeed(running(b))
: Effect.succeed(refreshing(a, b) as Final<A, E, P> & Refreshing<P>),
{
progress: state.pipe(
Lens.mapEffect(
a => (isRunning(a) || hasRefreshingFlag(a))
? Effect.succeed(a)
: Effect.fail(new PreviousResultNotRunningNorRefreshing({ previous: a })),
(_a, b) => Effect.succeed(b),
),
Lens.map(
a => a.progress,
(a, b) => isRunning(a)
? running(b)
: refreshing(a, b) as Final<A, E, P> & Refreshing<P>,
),
)
return { progress: lens } as any
}),
},
)