Skip to content

Commit

Permalink
Adds subscription state string
Browse files Browse the repository at this point in the history
  • Loading branch information
eamodio committed May 22, 2024
1 parent fcfb328 commit 17f2519
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 7 deletions.
38 changes: 31 additions & 7 deletions src/plus/gk/account/subscription.ts
Original file line number Diff line number Diff line change
Expand Up @@ -54,24 +54,48 @@ export interface SubscriptionPreviewTrial {
readonly expiresOn: string;
}

// Note: Pay attention to gitlens:plus:state in package.json when modifying this enum
// NOTE: Pay attention to gitlens:plus:state in package.json when modifying this enum
// NOTE: This is reported in telemetry so we should NOT change the values
export const enum SubscriptionState {
/** Indicates a user who hasn't verified their email address yet */
VerificationRequired = -1,
/** Indicates a Free user who hasn't yet started the preview trial */
Free = 0,
/** Indicates a Free user who is in preview trial */
FreeInPreviewTrial,
FreeInPreviewTrial = 1,
/** Indicates a Free user who's preview has expired trial */
FreePreviewTrialExpired,
FreePreviewTrialExpired = 2,
/** Indicates a Free+ user with a completed trial */
FreePlusInTrial,
FreePlusInTrial = 3,
/** Indicates a Free+ user who's trial has expired and is not yet eligible for reactivation */
FreePlusTrialExpired,
FreePlusTrialExpired = 4,
/** Indicated a Free+ user who's trial has expired and is eligible for reactivation */
FreePlusTrialReactivationEligible,
FreePlusTrialReactivationEligible = 5,
/** Indicates a Paid user */
Paid,
Paid = 6,
}

export function getSubscriptionStateString(state: SubscriptionState | undefined): string {
switch (state) {
case SubscriptionState.VerificationRequired:
return 'verification';
case SubscriptionState.Free:
return 'free';
case SubscriptionState.FreeInPreviewTrial:
return 'preview';
case SubscriptionState.FreePreviewTrialExpired:
return 'preview-expired';
case SubscriptionState.FreePlusInTrial:
return 'trial';
case SubscriptionState.FreePlusTrialExpired:
return 'trial-expired';
case SubscriptionState.FreePlusTrialReactivationEligible:
return 'trial-reactivation-eligible';
case SubscriptionState.Paid:
return 'paid';
default:
return 'unknown';
}
}

export function computeSubscriptionState(subscription: Optional<Subscription, 'state'>): SubscriptionState {
Expand Down
2 changes: 2 additions & 0 deletions src/plus/gk/account/subscriptionService.ts
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@ import {
computeSubscriptionState,
getSubscriptionPlan,
getSubscriptionPlanName,
getSubscriptionStateString,
getSubscriptionTimeRemaining,
getTimeRemaining,
isSubscriptionExpired,
Expand Down Expand Up @@ -1358,5 +1359,6 @@ function flattenSubscription(subscription: Optional<Subscription, 'state'> | und
stringify: true,
}),
'subscription.state': subscription.state,
'subscription.stateString': getSubscriptionStateString(subscription.state),
};
}

0 comments on commit 17f2519

Please sign in to comment.