fix: use re-fetched timestamp after recompute + rename helper var (#29)
Reviewer 1 flagged: staleness-check read predicted_calculated_at from the original cachedPlayer snapshot even after recompute, so newly calculated ratings (predicted_calculated_at = NULL in snapshot) were immediately nulled by the staleness branch. Fix: read predicted_calculated_at from updatedPlayer too. Reviewer 2 nit: rename thisMonths → secondTuesday for consistency with the original variable name in getNextPDGAUpdateDate.
This commit is contained in:
@@ -42,19 +42,21 @@ async function getPlayerDataFromDB(pdgaNumber, { includeMonthlyHistory = true }
|
||||
let stdDev = cachedPlayer.std_dev;
|
||||
let excludedRoundsCount = cachedPlayer.excluded_rounds_count;
|
||||
let cutoffRating = cachedPlayer.cutoff_rating;
|
||||
let predictedCalculatedAtRaw = cachedPlayer.predicted_calculated_at;
|
||||
if (!predictedRating || predictedRating === 0) {
|
||||
predictedRating = await getPredictedRatingFromDB(pdgaNumber);
|
||||
const updatedPlayer = await getPlayerFromDB(pdgaNumber);
|
||||
stdDev = updatedPlayer?.std_dev;
|
||||
excludedRoundsCount = updatedPlayer?.excluded_rounds_count;
|
||||
cutoffRating = updatedPlayer?.cutoff_rating;
|
||||
predictedCalculatedAtRaw = updatedPlayer?.predicted_calculated_at;
|
||||
}
|
||||
|
||||
// Staleness-check: invalidate cached predicted_rating if the PDGA cycle has
|
||||
// rolled over since it was calculated. Don't recompute — round_history may be
|
||||
// equally stale. UI will show "—" until the next manual refresh.
|
||||
const predictedCalculatedAt = cachedPlayer.predicted_calculated_at
|
||||
? new Date(cachedPlayer.predicted_calculated_at)
|
||||
const predictedCalculatedAt = predictedCalculatedAtRaw
|
||||
? new Date(predictedCalculatedAtRaw)
|
||||
: null;
|
||||
const previousUpdate = getPreviousPDGAUpdateDate();
|
||||
const hasPredicted = predictedRating !== null && predictedRating !== 0;
|
||||
|
||||
Reference in New Issue
Block a user