Only update X-Rank details when needed

This commit is contained in:
Matt Isenhower 2023-04-22 14:33:51 -07:00
parent 142f2a82c5
commit 4b142c890e
2 changed files with 14 additions and 4 deletions

View File

@ -1,3 +1,4 @@
import { olderThan } from "../../common/fs.mjs";
import prefixedConsole from "../../common/prefixedConsole.mjs";
import { getXRankSeasonId } from "../../common/util.mjs";
import DataUpdater from "./DataUpdater.mjs";
@ -15,10 +16,11 @@ export default class XRankDetailUpdater extends DataUpdater
'$..image3dThumbnail.url',
];
constructor(seasonId, xRankDetailType) {
constructor(seasonId, endTime, xRankDetailType) {
super();
this.seasonId = seasonId;
this.endTime = endTime;
this.xRankDetailType = xRankDetailType;
let readableId = getXRankSeasonId(seasonId);
@ -31,6 +33,14 @@ export default class XRankDetailUpdater extends DataUpdater
return this._console;
}
shouldUpdate() {
// We want to update this data until 4 hours after the season ends
let cutoff = new Date(this.endTime);
cutoff.setHours(cutoff.getHours() + 4);
return olderThan(this.getPath(this.filename), cutoff);
}
async getData(locale) {
let result;
let edges = [];

View File

@ -37,7 +37,7 @@ export default class XRankUpdater extends DataUpdater
for (let season of seasons) {
this.deriveSeasonId(season);
await this.updateSeasonDetail(season.id);
await this.updateSeasonDetail(season);
}
return result;
@ -54,9 +54,9 @@ export default class XRankUpdater extends DataUpdater
season.__splatoon3ink_id = getXRankSeasonId(season.id);
}
async updateSeasonDetail(seasonId) {
async updateSeasonDetail(season) {
for (let type of this.splatnet().getXRankingDetailQueryTypes()) {
let updater = new XRankDetailUpdater(seasonId, type);
let updater = new XRankDetailUpdater(season.id, season.endTime, type);
await updater.updateIfNeeded();
}
}