ソースを参照

Avoids overwriting a trial in progress

main
Eric Amodio 1年前
コミット
fa693a2813
2個のファイルの変更23行の追加4行の削除
  1. +10
    -4
      src/plus/subscription/subscriptionService.ts
  2. +13
    -0
      src/subscription.ts

+ 10
- 4
src/plus/subscription/subscriptionService.ts ファイルの表示

@ -36,6 +36,7 @@ import {
getSubscriptionTimeRemaining,
getTimeRemaining,
isSubscriptionExpired,
isSubscriptionInProTrial,
isSubscriptionPaid,
isSubscriptionTrial,
SubscriptionPlanId,
@ -467,6 +468,9 @@ export class SubscriptionService implements Disposable {
return;
}
// Don't overwrite a trial that is already in progress
if (isSubscriptionInProTrial(this._subscription)) return;
const startedOn = new Date();
let days: number;
@ -658,7 +662,11 @@ export class SubscriptionService implements Disposable {
SubscriptionPlanId.FreePlus,
false,
undefined,
data.user.firstGitLensCheckIn != null ? new Date(data.user.firstGitLensCheckIn) : undefined,
data.user.firstGitLensCheckIn != null
? new Date(data.user.firstGitLensCheckIn)
: data.user.createdDate != null
? new Date(data.user.createdDate)
: undefined,
);
}
@ -685,9 +693,7 @@ export class SubscriptionService implements Disposable {
);
}
if (effective == null) {
effective = { ...actual };
} else if (getSubscriptionPlanPriority(actual.id) >= getSubscriptionPlanPriority(effective.id)) {
if (effective == null || getSubscriptionPlanPriority(actual.id) >= getSubscriptionPlanPriority(effective.id)) {
effective = { ...actual };
}

+ 13
- 0
src/subscription.ts ファイルの表示

@ -206,6 +206,19 @@ export function isSubscriptionTrial(subscription: Optional
return subscription.plan.actual.id !== subscription.plan.effective.id;
}
export function isSubscriptionInProTrial(subscription: Optional<Subscription, 'state'>): boolean {
if (
subscription.account == null ||
!isSubscriptionTrial(subscription) ||
isSubscriptionPreviewTrialExpired(subscription) === false
) {
return false;
}
const remaining = getSubscriptionTimeRemaining(subscription);
return remaining != null ? remaining <= 0 : true;
}
export function isSubscriptionPreviewTrialExpired(subscription: Optional<Subscription, 'state'>): boolean | undefined {
const remaining = getTimeRemaining(subscription.previewTrial?.expiresOn);
return remaining != null ? remaining <= 0 : undefined;

読み込み中…
キャンセル
保存