Cache data in browser storage, and load from local cache when present #189
@@ -27,6 +27,7 @@ export default Route.extend({
|
|||||||
if (this.kredits.contributorsNeedFetch) {
|
if (this.kredits.contributorsNeedFetch) {
|
||||||
schedule('afterRender', this.kredits, this.kredits.fetchContributors);
|
schedule('afterRender', this.kredits, this.kredits.fetchContributors);
|
||||||
}
|
}
|
||||||
|
schedule('afterRender', this.kredits, this.kredits.fetchContributions);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
+14
-5
@@ -22,7 +22,6 @@ export default Service.extend({
|
|||||||
|
|
||||||
browserCache: service(),
|
browserCache: service(),
|
||||||
contributorsNeedFetch: false,
|
contributorsNeedFetch: false,
|
||||||
contributionsNeedFetch: false,
|
|
||||||
|
|
||||||
currentBlock: null,
|
currentBlock: null,
|
||||||
currentUserAccounts: null, // default to not having an account. this is the wen web3 is loaded.
|
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();
|
const numCachedContributions = await this.browserCache.contributions.length();
|
||||||
// if (numCachedContributions > 0) {
|
if (numCachedContributions > 0) {
|
||||||
// TODO promises.push(this.loadContributionsFromCache);
|
await this.loadContributionsFromCache();
|
||||||
// } else {
|
} else {
|
||||||
await this.fetchContributions({ page: { size: 30 } });
|
await this.fetchContributions({ page: { size: 30 } });
|
||||||
// }
|
}
|
||||||
|
|
||||||
return Promise.resolve();
|
return Promise.resolve();
|
||||||
},
|
},
|
||||||
@@ -278,6 +277,8 @@ export default Service.extend({
|
|||||||
return contributions.map(data => {
|
return contributions.map(data => {
|
||||||
const contribution = Contribution.create(processContributionData(data));
|
const contribution = Contribution.create(processContributionData(data));
|
||||||
contribution.set('contributor', this.contributors.findBy('id', data.contributorId.toString()));
|
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);
|
this.contributions.pushObject(contribution);
|
||||||
return contribution;
|
return contribution;
|
||||||
});
|
});
|
||||||
@@ -300,6 +301,14 @@ export default Service.extend({
|
|||||||
return Promise.resolve();
|
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) {
|
veto (contributionId) {
|
||||||
console.debug('[kredits] veto against', contributionId);
|
console.debug('[kredits] veto against', contributionId);
|
||||||
const contribution = this.contributions.findBy('id', contributionId);
|
const contribution = this.contributions.findBy('id', contributionId);
|
||||||
|
|||||||
Reference in New Issue
Block a user