diff options
| author | Oskar Nyberg <oskar@mullvad.net> | 2020-06-15 20:18:22 +0200 |
|---|---|---|
| committer | Oskar Nyberg <oskar@mullvad.net> | 2020-06-24 11:23:12 +0200 |
| commit | aa750c58a4e7dddbfb8b76b4df932b3188461229 (patch) | |
| tree | 21d5b03196063f437a1c9148afaa1b5d648ba1c8 /gui/src | |
| parent | 0db07414743e8dbd5c00f810a138ff276fbf92f6 (diff) | |
| download | mullvadvpn-aa750c58a4e7dddbfb8b76b4df932b3188461229.tar.xz mullvadvpn-aa750c58a4e7dddbfb8b76b4df932b3188461229.zip | |
Fetch account data one minute before expiry
Diffstat (limited to 'gui/src')
| -rw-r--r-- | gui/src/main/account-data-cache.ts | 23 |
1 files changed, 18 insertions, 5 deletions
diff --git a/gui/src/main/account-data-cache.ts b/gui/src/main/account-data-cache.ts index ac829ca0f3..5c178e83a6 100644 --- a/gui/src/main/account-data-cache.ts +++ b/gui/src/main/account-data-cache.ts @@ -1,5 +1,6 @@ import log from 'electron-log'; import moment from 'moment'; +import { hasExpired } from '../shared/account-expiry'; import { AccountToken, IAccountData } from '../shared/daemon-rpc-types'; import consumePromise from '../shared/promise'; import { Scheduler } from '../shared/scheduler'; @@ -85,7 +86,12 @@ export default class AccountDataCache { if (this.currentAccount === accountToken) { this.setValue(accountData); - this.scheduleRefetchIfExpired(accountToken, accountData); + + const refetchDelay = this.calculateRefetchDelay(accountData.expiry); + if (refetchDelay) { + this.scheduleFetch(accountToken, refetchDelay); + } + this.waitStrategy.reset(); this.performingFetch = false; } @@ -97,10 +103,17 @@ export default class AccountDataCache { } } - private scheduleRefetchIfExpired(accountToken: AccountToken, accountData: IAccountData) { - const hasExpired = moment(accountData.expiry).isSameOrBefore(new Date()); - if (hasExpired) { - this.scheduleFetch(accountToken, EXPIRED_ACCOUNT_REFRESH_PERIOD); + private calculateRefetchDelay(accountExpiry: string) { + const currentDate = new Date(); + const oneMinuteBeforeExpiry = moment(accountExpiry).subtract(1, 'minute'); + const closeToExpiry = moment(accountExpiry).isSameOrBefore(moment().add(3, 'days')); + + if (hasExpired(accountExpiry)) { + return EXPIRED_ACCOUNT_REFRESH_PERIOD; + } else if (oneMinuteBeforeExpiry.isSameOrAfter(currentDate) && closeToExpiry) { + return oneMinuteBeforeExpiry.diff(currentDate); + } else { + return undefined; } } |
