Skip to content

Commit 76f3da2

Browse files
committed
update w-async
1 parent 242302e commit 76f3da2

File tree

2 files changed

+37
-22
lines changed

2 files changed

+37
-22
lines changed
Lines changed: 30 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,38 @@
1-
import Component from '@ember/component';
2-
import layout from '../templates/components/w-async';
3-
import { and } from '@ember/object/computed';
1+
import Component from "@ember/component";
42
import { computed } from '@ember/object';
5-
import { next } from '@ember/runloop';
3+
import layout from '../templates/components/w-async';
4+
import { later } from '@ember/runloop';
65

7-
export default class WAsync extends Component {
6+
export default class WAsyncComponent extends Component {
87
layout = layout
9-
showLoading = 'w-async/loading'
10-
fireTrigger = false
11-
12-
@and('task.isRunning', 'showLoading') isLoading
13-
14-
@computed('task.last')
15-
get result() {
16-
return this.task.last.isError ?
17-
this.task.lastErrored.error :
18-
this.task.lastSuccessful.value
19-
}
20-
8+
219
didReceiveAttrs() {
22-
if (this.autoFire || this.fireTrigger) {
10+
this._super(...arguments);
11+
if (this.promise) {
12+
this.set('task', {
13+
isRunning: true,
14+
last: {value: null}
15+
})
16+
17+
this.promise.then(resolved => {
18+
this.set('task', {
19+
isRunning: false,
20+
last: {
21+
value: resolved
22+
}
23+
})
24+
})
25+
}
26+
else if (this.triggered) {
2327
this.task.perform()
24-
next(() => this.set('fireTrigger', false))
28+
later(() => this.set('triggered', false))
2529
}
30+
else if (this.autoFire) this.task.perform();
31+
}
32+
33+
@computed('task.{isRunning,last.value}')
34+
get showLoader() {
35+
const { task } = this
36+
return task.isRunning && !task.last.value
2637
}
2738
}
Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
1-
{{#if isLoading}}
2-
{{component loadingComponent}}
1+
{{#if showLoader}}
2+
{{#if loaderComponent}}
3+
{{loaderComponent}}
4+
{{else}}
5+
Loading <span class="dot-loader"></span>
6+
{{/if}}
37
{{else}}
4-
{{yield result task.last.isError}}
8+
{{yield task.last.value}}
59
{{/if}}

0 commit comments

Comments
 (0)