summaryrefslogtreecommitdiffhomepage
path: root/gui/src/main
diff options
context:
space:
mode:
authorOskar Nyberg <oskar@mullvad.net>2020-02-28 16:15:07 +0100
committerOskar Nyberg <oskar@mullvad.net>2020-04-06 10:37:05 +0200
commit43294fbf8bead7f2bb28a84e8ff6fddc7100ec23 (patch)
tree7d5ca2e2f3d0cfcd30b2f11bb0eaa4ef7dda9cd3 /gui/src/main
parent808d2f753c64da3a3e5f49bb0fdf52767faa2e30 (diff)
downloadmullvadvpn-43294fbf8bead7f2bb28a84e8ff6fddc7100ec23.tar.xz
mullvadvpn-43294fbf8bead7f2bb28a84e8ff6fddc7100ec23.zip
Make welcome screen disappear after adding time to account
Diffstat (limited to 'gui/src/main')
-rw-r--r--gui/src/main/account-data-cache.ts15
-rw-r--r--gui/src/main/index.ts4
2 files changed, 17 insertions, 2 deletions
diff --git a/gui/src/main/account-data-cache.ts b/gui/src/main/account-data-cache.ts
index 97a94eb7c3..7db2c05ca8 100644
--- a/gui/src/main/account-data-cache.ts
+++ b/gui/src/main/account-data-cache.ts
@@ -1,7 +1,10 @@
import log from 'electron-log';
+import moment from 'moment';
import { AccountToken, IAccountData } from '../shared/daemon-rpc-types';
import consumePromise from '../shared/promise';
+const EXPIRED_ACCOUNT_REFRESH_PERIOD = 60_000;
+
export enum AccountFetchRetryAction {
stop,
retry,
@@ -77,6 +80,7 @@ export default class AccountDataCache {
if (this.currentAccount === accountToken) {
this.setValue(accountData);
+ this.scheduleRefetchIfExpired(accountToken, accountData);
}
} catch (error) {
if (this.currentAccount === accountToken) {
@@ -85,6 +89,13 @@ 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 handleFetchError(accountToken: AccountToken, error: Error) {
let shouldRetry = true;
@@ -107,6 +118,10 @@ export default class AccountDataCache {
log.warn(`Failed to fetch account data. Retrying in ${delay} ms`);
+ this.scheduleFetch(accountToken, delay);
+ }
+
+ private scheduleFetch(accountToken: AccountToken, delay: number) {
this.fetchRetryTimeout = global.setTimeout(() => {
this.fetchRetryTimeout = undefined;
consumePromise(this.performFetch(accountToken));
diff --git a/gui/src/main/index.ts b/gui/src/main/index.ts
index 01aec17d62..28956d8c88 100644
--- a/gui/src/main/index.ts
+++ b/gui/src/main/index.ts
@@ -901,7 +901,7 @@ class ApplicationMain {
// cancel notifications when window appears
this.notificationController.cancelPendingNotifications();
- this.updateAccountExpiryIfNeeded();
+ this.updateAccountData();
});
windowController.window.on('hide', () => {
@@ -1159,7 +1159,7 @@ class ApplicationMain {
}
}
- private updateAccountExpiryIfNeeded() {
+ private updateAccountData() {
if (this.connectedToDaemon && this.settings.accountToken) {
this.accountDataCache.fetch(this.settings.accountToken);
}