From 287c98c707004b66c68e7b736cee5dfdcd73c9a8 Mon Sep 17 00:00:00 2001 From: Kevin Ansfield Date: Wed, 10 Mar 2021 10:06:06 +0000 Subject: [PATCH] Fixed membersStats service stale-data logic no issue - the stale data checks would always return false because the calculation was reversed - `old date - new date` will always result in a negative number so it would never be greater than 60000 - switched to `new date - old date` to get a positive number so the `>` comparison works - moved `1 * 60 * 1000` into a constant so it's easier to the intended behaviour at a glance --- ghost/admin/app/services/members-stats.js | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/ghost/admin/app/services/members-stats.js b/ghost/admin/app/services/members-stats.js index 550d104f7b..710e40b05d 100644 --- a/ghost/admin/app/services/members-stats.js +++ b/ghost/admin/app/services/members-stats.js @@ -4,6 +4,8 @@ import {inject as service} from '@ember/service'; import {task} from 'ember-concurrency-decorators'; import {tracked} from '@glimmer/tracking'; +const ONE_MINUTE = 1 * 60 * 1000; + export default class MembersStatsService extends Service { @service ajax; @service ghostPaths; @@ -18,7 +20,7 @@ export default class MembersStatsService extends Service { fetch() { let daysChanged = this._lastFetchedDays !== this.days; - let staleData = this._lastFetched && this._lastFetched - new Date() > 1 * 60 * 1000; + let staleData = this._lastFetched && (new Date() - this._lastFetched) > ONE_MINUTE; // return an already in-progress promise unless params have changed if (this._fetchTask.isRunning && !this._forceRefresh && !daysChanged) { @@ -34,7 +36,7 @@ export default class MembersStatsService extends Service { } fetchTimeline(options = {}) { - let staleData = this._lastFetchedTimeline && this._lastFetchedTimeline - new Date() > 1 * 60 * 1000; + let staleData = this._lastFetchedTimeline && (new Date() - this._lastFetchedTimeline) > ONE_MINUTE; let differentLimit = this._lastFetchedTimelineLimit && this._lastFetchedTimelineLimit !== options.limit; if (this._fetchTimelineTask.isRunning) { @@ -49,7 +51,7 @@ export default class MembersStatsService extends Service { } fetchCounts() { - let staleData = this._lastFetchedCounts && this._lastFetchedCounts - new Date() > 1 * 60 * 1000; + let staleData = this._lastFetchedCounts && (new Date() - this._lastFetchedCounts) > ONE_MINUTE; // return an already in-progress promise unless params have changed if (this._fetchCountsTask.isRunning) { @@ -65,7 +67,7 @@ export default class MembersStatsService extends Service { } fetchNewsletterStats() { - let staleData = this._lastFetchedNewsletterStats && this._lastFetchedNewsletterStats - new Date() > 1 * 60 * 1000; + let staleData = this._lastFetchedNewsletterStats && (new Date() - this._lastFetchedNewsletterStats) > ONE_MINUTE; // return an already in-progress promise unless params have changed if (this._fetchNewsletterStatsTask.isRunning) { @@ -127,7 +129,7 @@ export default class MembersStatsService extends Service { } fetchMRR() { - let staleData = this._lastFetchedMRR && this._lastFetchedMRR - new Date() > 1 * 60 * 1000; + let staleData = this._lastFetchedMRR && (new Date() - this._lastFetchedMRR) > ONE_MINUTE; // return an already in-progress promise unless params have changed if (this._fetchMRRTask.isRunning) {