Skip to content

Commit 8841d31

Browse files
committed
Keep stale data rendered while a refresh is waiting
1 parent cc34a0d commit 8841d31

2 files changed

Lines changed: 13 additions & 3 deletions

File tree

packages/react/src/lib/async-result.test.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,20 @@ import * as AsyncResult from "effect/unstable/reactivity/AsyncResult";
55
import { isAsyncResultLoading } from "./async-result";
66

77
describe("isAsyncResultLoading", () => {
8-
it("treats initial and waiting async results as loading", () => {
8+
it("treats initial and waiting-without-value async results as loading", () => {
99
expect(isAsyncResultLoading(AsyncResult.initial())).toBe(true);
1010
expect(isAsyncResultLoading(AsyncResult.initial(true))).toBe(true);
11-
expect(isAsyncResultLoading(AsyncResult.success(["cached"], { waiting: true }))).toBe(true);
11+
expect(isAsyncResultLoading(AsyncResult.failure(Cause.fail("boom"), { waiting: true }))).toBe(
12+
true,
13+
);
1214
});
1315

1416
it("does not treat settled success or failure as loading", () => {
1517
expect(isAsyncResultLoading(AsyncResult.success(["ready"]))).toBe(false);
1618
expect(isAsyncResultLoading(AsyncResult.failure(Cause.fail("boom")))).toBe(false);
1719
});
20+
21+
it("keeps stale values rendered while a refresh is waiting", () => {
22+
expect(isAsyncResultLoading(AsyncResult.success(["cached"], { waiting: true }))).toBe(false);
23+
});
1824
});
Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
import * as AsyncResult from "effect/unstable/reactivity/AsyncResult";
2+
import * as Option from "effect/Option";
23

34
export function isAsyncResultLoading<A, E>(result: AsyncResult.AsyncResult<A, E>): boolean {
4-
return AsyncResult.isInitial(result) || AsyncResult.isWaiting(result);
5+
return (
6+
AsyncResult.isInitial(result) ||
7+
(AsyncResult.isWaiting(result) && Option.isNone(AsyncResult.value(result)))
8+
);
59
}

0 commit comments

Comments
 (0)