Load contributions from cache if present

And then fetch more from network. Also, only load 30 from network before
first render (with nothing cached), then load more after the page has
rendered.
This commit is contained in:
2020-05-28 13:59:10 +02:00
parent 69141a31c4
commit d4b546bfcd
2 changed files with 15 additions and 5 deletions
+14 -5
View File
@@ -22,7 +22,6 @@ export default Service.extend({
browserCache: service(),
contributorsNeedFetch: false,
contributionsNeedFetch: false,
currentBlock: null,
currentUserAccounts: null, // default to not having an account. this is the wen web3 is loaded.
@@ -186,11 +185,11 @@ export default Service.extend({
}
const numCachedContributions = await this.browserCache.contributions.length();
// if (numCachedContributions > 0) {
// TODO promises.push(this.loadContributionsFromCache);
// } else {
if (numCachedContributions > 0) {
await this.loadContributionsFromCache();
} else {
await this.fetchContributions({ page: { size: 30 } });
// }
}
return Promise.resolve();
},
@@ -278,6 +277,8 @@ export default Service.extend({
return contributions.map(data => {
const contribution = Contribution.create(processContributionData(data));
contribution.set('contributor', this.contributors.findBy('id', data.contributorId.toString()));
const loadedContribution = this.contributions.findBy('id', contribution.id);
if (loadedContribution) { this.contributions.removeObject(loadedContribution); }
this.contributions.pushObject(contribution);
return contribution;
});
@@ -300,6 +301,14 @@ export default Service.extend({
return Promise.resolve();
},
async loadContributionsFromCache () {
return this.browserCache.contributions.iterate((value/*, key , iterationNumber */) => {
this.contributions.pushObject(Contribution.create(JSON.parse(value)));
}).then((/* result */) => {
console.debug(`[kredits] Loaded ${this.contributions.length} contributions from cache`);
});
},
veto (contributionId) {
console.debug('[kredits] veto against', contributionId);
const contribution = this.contributions.findBy('id', contributionId);