From 4b142c890edd85db3cd255e5897cc8a9b864096e Mon Sep 17 00:00:00 2001 From: Matt Isenhower Date: Sat, 22 Apr 2023 14:33:51 -0700 Subject: [PATCH] Only update X-Rank details when needed --- app/data/updaters/XRankDetailUpdater.mjs | 12 +++++++++++- app/data/updaters/XRankUpdater.mjs | 6 +++--- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/app/data/updaters/XRankDetailUpdater.mjs b/app/data/updaters/XRankDetailUpdater.mjs index 8eabfa2..77f7030 100644 --- a/app/data/updaters/XRankDetailUpdater.mjs +++ b/app/data/updaters/XRankDetailUpdater.mjs @@ -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 = []; diff --git a/app/data/updaters/XRankUpdater.mjs b/app/data/updaters/XRankUpdater.mjs index a4796aa..7112a89 100644 --- a/app/data/updaters/XRankUpdater.mjs +++ b/app/data/updaters/XRankUpdater.mjs @@ -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(); } }