mirror of
https://github.com/misenhower/splatoon3.ink.git
synced 2026-08-19 23:24:11 -05:00
Fix a bug with outdated festival data
This commit is contained in:
@@ -38,8 +38,15 @@ export default class ValueCache
|
||||
return item && item.data;
|
||||
}
|
||||
|
||||
async getCachedAt() {
|
||||
let item = await this._getRawItem();
|
||||
|
||||
return (item && item.cachedAt) ? new Date(item.cachedAt) : null;
|
||||
}
|
||||
|
||||
async setData(data, expires = null) {
|
||||
let serialized = JSON.stringify({ expires, data }, undefined, 2);
|
||||
let cachedAt = new Date;
|
||||
let serialized = JSON.stringify({ expires, data, cachedAt }, undefined, 2);
|
||||
|
||||
await mkdirp(path.dirname(this.path));
|
||||
await fs.writeFile(this.path, serialized);
|
||||
|
||||
@@ -81,13 +81,14 @@ export default class FestivalUpdater extends DataUpdater
|
||||
// We don't need to use the locale for this data
|
||||
// since localization data retrieval happens elsewhere.
|
||||
let data = await cache.getData();
|
||||
let cachedAt = await cache.getCachedAt();
|
||||
|
||||
// How long until this festival ends/ended?
|
||||
// We want to retrieve the latest data until 4 hours after the Splatfest ends
|
||||
let diff = Date.now() - new Date(node.endTime);
|
||||
let forceUpdate = (diff < 4 * 60 * 60 * 1000);
|
||||
let cutoff = new Date(node.endTime);
|
||||
cutoff.setHours(cutoff.getHours() + 4);
|
||||
|
||||
if (forceUpdate || !data) {
|
||||
if (!data || cachedAt < cutoff) {
|
||||
this.console.info(`Getting festival details for ${node.id}`);
|
||||
data = await this.splatnet().getFestDetailData(node.id);
|
||||
await cache.setData(data);
|
||||
|
||||
Reference in New Issue
Block a user