Skip to content

Commit 715d32c

Browse files
Merge pull request #815 from NullVoxPopuli/sync-remote-data-with-tracked-function-semantics
Update remotedata
2 parents ba5127c + 54e2b50 commit 715d32c

File tree

2 files changed

+33
-4
lines changed

2 files changed

+33
-4
lines changed

.changeset/great-fishes-look.md

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
---
2+
"ember-resources": major
3+
---
4+
5+
The `RemoteData` resource now has the same state changes and semantics as `trackedFunction`.
6+
7+
Breaking Changes:
8+
9+
- `isResolved` is only true when the request succeeds. During migration, you may use `isFinished` for previous behavior.

ember-resources/src/util/remote-data.ts

+24-4
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,29 @@ export class State<T = unknown> {
2626
*/
2727
@tracked status: null | number = null;
2828

29+
/**
30+
* True if the request has succeeded
31+
*/
32+
@tracked isResolved = false;
33+
34+
/**
35+
* True if the request has failed
36+
*/
37+
@tracked isRejected = false;
38+
2939
/**
3040
* true if the request has finished
3141
*/
32-
get isResolved() {
33-
return Boolean(this.value) || Boolean(this.error);
42+
get isFinished() {
43+
return this.isResolved || this.isRejected;
44+
}
45+
46+
/**
47+
* Alias for `isFinished`
48+
* which is in turn an alias for `isResolved || isRejected`
49+
*/
50+
get isSettled() {
51+
return this.isFinished;
3452
}
3553

3654
/**
@@ -44,14 +62,14 @@ export class State<T = unknown> {
4462
* true if the fetch request is in progress
4563
*/
4664
get isLoading() {
47-
return !this.isResolved;
65+
return !this.isFinished;
4866
}
4967

5068
/**
5169
* true if the request throws an exception
5270
*/
5371
get isError() {
54-
return Boolean(this.error);
72+
return this.isRejected;
5573
}
5674
}
5775

@@ -110,9 +128,11 @@ export function remoteData<T = unknown>(
110128
return response.json();
111129
})
112130
.then((data) => {
131+
state.isResolved = true;
113132
state.value = data;
114133
})
115134
.catch((error) => {
135+
state.isRejected = true;
116136
state.error = error;
117137
})
118138
);

0 commit comments

Comments
 (0)