Skip to content

We know about `.state`, too!

Choose a tag to compare

@chriskrycho chriskrycho released this 12 Apr 15:34
· 1177 commits to main since this release
cdd2c98

Added ⭐

Following on from 0.2.0's support for narrowing with .isPending, .isResolved, and .isRejected, TrackedAsyncData instances cab now be "narrowed" by checking the .state property (#6):

import TrackedAsyncData from 'ember-async-data/tracked-async-data';

let data = new TrackedAsyncData(Promise.resolve('string'));
switch (data.state) {
  case 'PENDING';
    data.value; // null (and a warning for accessing in an invalid state!)
    data.error; // null (and a warning for accessing in an invalid state!)
    break;
  case 'RESOLVED':
    data.value; // string
    data.error; // null (and a warning for accessing in an invalid state!)
    break;
  case 'REJECTED':
    data.value; // null (and a warning for accessing in an invalid state!)
    data.error; // unknown
    break;
  default:
    break;
}

Fixed 🛠️

Decorated .state with @dependentKeyCompat so it can be used as a dependent key with classic computed properties.