Make contribution-status helper recompute

When any of the depending properties of the contribution changes, the helper recomputes its output.
This commit is contained in:
2019-09-20 18:27:40 +02:00
parent fe4af46852
commit 8e7430ebb9
2 changed files with 29 additions and 1 deletions
+28
View File
@@ -1,6 +1,7 @@
import Helper from '@ember/component/helper';
import { inject as service } from '@ember/service';
import { alias } from '@ember/object/computed';
import { once } from '@ember/runloop';
export default Helper.extend({
@@ -8,6 +9,8 @@ export default Helper.extend({
currentBlock: alias('kredits.currentBlock'),
compute([contribution]) {
this.setupRecompute(contribution);
if (contribution.vetoed) {
return 'vetoed';
} else if (contribution.confirmedAt > this.currentBlock) {
@@ -15,6 +18,31 @@ export default Helper.extend({
} else {
return 'confirmed'
}
},
destroy () {
if (this.teardown) this.teardown();
this._super(...arguments);
},
setupRecompute (contribution) {
if (this.teardown) this.teardown();
contribution.addObserver('vetoed' , this, this.triggerRecompute);
contribution.addObserver('confirmedAt' , this, this.triggerRecompute);
contribution.addObserver('currentBlock' , this, this.triggerRecompute);
this.teardown = () => {
contribution.removeObserver('vetoed', this, this.triggerRecompute);
contribution.removeObserver('confirmedAt', this, this.triggerRecompute);
contribution.removeObserver('currentBlock', this, this.triggerRecompute);
};
},
triggerRecompute () {
once(this, function () {
this.recompute();
});
}
});