@@ -83,6 +83,7 @@ import {
8383 getPreviewSubscription ,
8484 getSubscriptionPlan ,
8585 getSubscriptionPlanName ,
86+ getSubscriptionPlanPriority ,
8687 getSubscriptionStateString ,
8788 getSubscriptionTimeRemaining ,
8889 getTimeRemaining ,
@@ -355,7 +356,12 @@ export class SubscriptionService implements Disposable {
355356 registerCommand ( 'gitlens.plus.startPreviewTrial' , ( src ?: Source ) => this . startPreviewTrial ( src ) ) ,
356357 registerCommand ( 'gitlens.plus.reactivateProTrial' , ( src ?: Source ) => this . reactivateProTrial ( src ) ) ,
357358 registerCommand ( 'gitlens.plus.resendVerification' , ( src ?: Source ) => this . resendVerification ( src ) ) ,
358- registerCommand ( 'gitlens.plus.upgrade' , ( src ?: Source ) => this . upgrade ( src ) ) ,
359+ registerCommand ( 'gitlens.plus.upgrade' , ( srcAndPlan ?: Source & { plan ?: SubscriptionPlanId } ) =>
360+ this . upgrade (
361+ srcAndPlan ? { source : srcAndPlan . source , detail : srcAndPlan . detail } : undefined ,
362+ srcAndPlan ?. plan ,
363+ ) ,
364+ ) ,
359365
360366 registerCommand ( 'gitlens.plus.hide' , ( src ?: Source ) => this . setProFeaturesVisibility ( false , src ) ) ,
361367 registerCommand ( 'gitlens.plus.restore' , ( src ?: Source ) => this . setProFeaturesVisibility ( true , src ) ) ,
@@ -908,7 +914,11 @@ export class SubscriptionService implements Disposable {
908914 try {
909915 const session = await this . ensureSession ( false , source ) ;
910916 if ( session != null ) {
911- if ( ( await this . checkUpdatedSubscription ( source ) ) === SubscriptionState . Paid ) {
917+ if (
918+ ( await this . checkUpdatedSubscription ( source ) ) === SubscriptionState . Paid &&
919+ getSubscriptionPlanPriority ( this . _subscription . plan . effective . id ) >=
920+ getSubscriptionPlanPriority ( plan ?? SubscriptionPlanId . Pro )
921+ ) {
912922 return ;
913923 }
914924 }
0 commit comments