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>( export const makeProgressLayer = <A, E, P = never>(
state: Lens.Lens<Result<A, E, P>, never, never, never, 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>>, Progress<P>() as Context.Tag<Progress<P> | Progress<never>, Progress<P> | Progress<never>>,
Effect.gen(function*() { {
const lens = Lens.mapEffect( progress: state.pipe(
state, Lens.mapEffect(
a => (isRunning(a) || hasRefreshingFlag(a)) a => (isRunning(a) || hasRefreshingFlag(a))
? Effect.succeed(a.progress) ? Effect.succeed(a)
: Effect.fail(new PreviousResultNotRunningNorRefreshing({ previous: a })), : Effect.fail(new PreviousResultNotRunningNorRefreshing({ previous: a })),
(a, b) => isRunning(a) (_a, b) => Effect.succeed(b),
? Effect.succeed(running(b)) ),
: Effect.succeed(refreshing(a, b) as Final<A, E, P> & Refreshing<P>), 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 },
}),
) )