Browse Source

Ensures logout persists

main
Eric Amodio 3 years ago
parent
commit
d2065fc7fe
2 changed files with 18 additions and 4 deletions
  1. +16
    -2
      src/premium/subscription/subscriptionService.ts
  2. +2
    -2
      src/webviews/apps/premium/home/home.ts

+ 16
- 2
src/premium/subscription/subscriptionService.ts View File

@ -20,7 +20,7 @@ import type { Container } from '../../container';
import { setContext } from '../../context';
import { RepositoriesChangeEvent } from '../../git/gitProviderService';
import { Logger } from '../../logger';
import { StorageKeys } from '../../storage';
import { StorageKeys, WorkspaceStorageKeys } from '../../storage';
import {
computeSubscriptionState,
getSubscriptionPlan,
@ -115,6 +115,10 @@ export class SubscriptionService implements Disposable {
return Uri.parse('https://gitkraken.com');
}
private get connectedKey(): `${WorkspaceStorageKeys.ConnectedPrefix}${string}` {
return `${WorkspaceStorageKeys.ConnectedPrefix}gitkraken`;
}
private _etag: number = 0;
get etag(): number {
return this._etag;
@ -161,12 +165,16 @@ export class SubscriptionService implements Disposable {
async loginOrSignUp(): Promise<boolean> {
void this.showHomeView();
await this.container.storage.deleteWorkspace(this.connectedKey);
const session = await this.ensureSession(true);
return Boolean(session);
}
logout(): void {
this._sessionPromise = undefined;
void this.container.storage.storeWorkspace(this.connectedKey, false);
this.reset(false);
}
@ -381,7 +389,7 @@ export class SubscriptionService implements Disposable {
}
if (effective == null) {
effective = actual;
effective = { ...actual };
}
this.changeSubscription({
@ -404,6 +412,12 @@ export class SubscriptionService implements Disposable {
if (this._session != null) return this._session;
if (this._session === null && !createIfNeeded) return undefined;
if (createIfNeeded) {
await this.container.storage.deleteWorkspace(this.connectedKey);
} else if (this.container.storage.getWorkspace<boolean>(this.connectedKey) === false) {
return undefined;
}
if (this._sessionPromise === undefined) {
this._sessionPromise = this.getOrCreateSession(createIfNeeded);
}

+ 2
- 2
src/webviews/apps/premium/home/home.ts View File

@ -70,7 +70,7 @@ export class HomeApp extends App {
this.insertTemplate('state:free', this.$slot2);
break;
case SubscriptionState.FreeInPreview: {
const remaining = getSubscriptionTimeRemaining(subscription, 'days');
const remaining = getSubscriptionTimeRemaining(subscription, 'days') ?? 0;
this.insertTemplate('state:free-preview', this.$slot1, {
previewDays: `${remaining === 1 ? `${remaining} more day` : `${remaining} more days`}`,
});
@ -82,7 +82,7 @@ export class HomeApp extends App {
this.insertTemplate('welcome', this.$slot2);
break;
case SubscriptionState.FreePlusInTrial: {
const remaining = getSubscriptionTimeRemaining(subscription, 'days');
const remaining = getSubscriptionTimeRemaining(subscription, 'days') ?? 0;
this.insertTemplate('state:plus-trial', this.$slot1, {
trialDays: `${remaining === 1 ? `${remaining} day` : `${remaining} days`}`,
});

Loading…
Cancel
Save