From b7d47a297bb9fecc2e44e4d0ae8cb4698b1b0698 Mon Sep 17 00:00:00 2001 From: Matt Isenhower Date: Sat, 22 Apr 2023 12:41:00 -0700 Subject: [PATCH] Retrieve data for previous X-Rank seasons as well as current ones --- app/data/updaters/XRankUpdater.mjs | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/app/data/updaters/XRankUpdater.mjs b/app/data/updaters/XRankUpdater.mjs index 9833524..a4796aa 100644 --- a/app/data/updaters/XRankUpdater.mjs +++ b/app/data/updaters/XRankUpdater.mjs @@ -33,20 +33,25 @@ export default class XRankUpdater extends DataUpdater async getData(locale) { let result = await this.splatnet(locale).getXRankingData(this.divisionKey); + let seasons = this.getSeasons(result.data); - this.deriveSeasonIds(result); - - let seasonId = result.data.xRanking.currentSeason.id; - await this.updateSeasonDetail(seasonId); + for (let season of seasons) { + this.deriveSeasonId(season); + await this.updateSeasonDetail(season.id); + } return result; } - deriveSeasonIds(data) { - jsonpath.apply(data, '$..currentSeason', node => ({ - '__splatoon3ink_id': getXRankSeasonId(node.id), - ...node, - })); + getSeasons(data) { + let seasons = data.xRanking.pastSeasons?.nodes ?? []; + seasons.unshift(data.xRanking.currentSeason); + + return seasons; + } + + deriveSeasonId(season) { + season.__splatoon3ink_id = getXRankSeasonId(season.id); } async updateSeasonDetail(seasonId) {