diff --git a/contributions.json b/contributions.json
index bc24c8d1a5cb2..a6e6df3b5d94b 100644
--- a/contributions.json
+++ b/contributions.json
@@ -12658,12 +12658,8 @@
"when": "!gitlens:launchpad:connect && gitlens:plus:required && gitlens:plus:state == 4"
},
{
- "contents": "Save 33% or more on your 1st seat of Pro.",
- "when": "!gitlens:launchpad:connect && gitlens:plus:required && gitlens:plus:state == 4 && (gitlens:promo == pro50 || !gitlens:promo)"
- },
- {
- "contents": "Get the gift of a better DevEx in 2025! Save up to 80% now",
- "when": "!gitlens:launchpad:connect && gitlens:plus:required && gitlens:plus:state == 4 && gitlens:promo == gkholiday"
+ "contents": "Save 55% or more on your 1st seat of Pro.",
+ "when": "!gitlens:launchpad:connect && gitlens:plus:required && gitlens:plus:state == 4 && gitlens:promo == pro50"
},
{
"contents": "Your Pro trial has ended. Please upgrade for full access to Launchpad and other Pro features.",
@@ -12765,12 +12761,8 @@
"when": "gitlens:views:scm:grouped:view == launchpad && !gitlens:launchpad:connect && gitlens:plus:required && gitlens:plus:state == 4"
},
{
- "contents": "Save 33% or more on your 1st seat of Pro.",
- "when": "gitlens:views:scm:grouped:view == launchpad && !gitlens:launchpad:connect && gitlens:plus:required && gitlens:plus:state == 4 && (gitlens:promo == pro50 || !gitlens:promo)"
- },
- {
- "contents": "Get the gift of a better DevEx in 2025! Save up to 80% now",
- "when": "gitlens:views:scm:grouped:view == launchpad && !gitlens:launchpad:connect && gitlens:plus:required && gitlens:plus:state == 4 && gitlens:promo == gkholiday"
+ "contents": "Save 55% or more on your 1st seat of Pro.",
+ "when": "gitlens:views:scm:grouped:view == launchpad && !gitlens:launchpad:connect && gitlens:plus:required && gitlens:plus:state == 4 && gitlens:promo == pro50"
},
{
"contents": "Your Pro trial has ended. Please upgrade for full access to Launchpad and other Pro features.",
@@ -12817,12 +12809,8 @@
"when": "gitlens:views:scm:grouped:view == worktrees && gitlens:plus:required && gitlens:plus:state == 4"
},
{
- "contents": "Save 33% or more on your 1st seat of Pro.",
- "when": "gitlens:views:scm:grouped:view == worktrees && gitlens:plus:required && gitlens:plus:state == 4 && (gitlens:promo == pro50 || !gitlens:promo)"
- },
- {
- "contents": "Get the gift of a better DevEx in 2025! Save up to 80% now",
- "when": "gitlens:views:scm:grouped:view == worktrees && gitlens:plus:required && gitlens:plus:state == 4 && gitlens:promo == gkholiday"
+ "contents": "Save 55% or more on your 1st seat of Pro.",
+ "when": "gitlens:views:scm:grouped:view == worktrees && gitlens:plus:required && gitlens:plus:state == 4 && gitlens:promo == pro50"
},
{
"contents": "Your Pro trial has ended. Please upgrade for full access to Worktrees and other Pro features.",
@@ -12951,12 +12939,8 @@
"when": "gitlens:plus:required && gitlens:plus:state == 4"
},
{
- "contents": "Save 33% or more on your 1st seat of Pro.",
- "when": "gitlens:plus:required && gitlens:plus:state == 4 && (gitlens:promo == pro50 || !gitlens:promo)"
- },
- {
- "contents": "Get the gift of a better DevEx in 2025! Save up to 80% now",
- "when": "gitlens:plus:required && gitlens:plus:state == 4 && gitlens:promo == gkholiday"
+ "contents": "Save 55% or more on your 1st seat of Pro.",
+ "when": "gitlens:plus:required && gitlens:plus:state == 4 && gitlens:promo == pro50"
},
{
"contents": "Your Pro trial has ended. Please upgrade for full access to Worktrees and other Pro features.",
diff --git a/package.json b/package.json
index 088a0f4a1314c..3c6d01cfca59b 100644
--- a/package.json
+++ b/package.json
@@ -19504,13 +19504,8 @@
},
{
"view": "gitlens.views.launchpad",
- "contents": "Save 33% or more on your 1st seat of Pro.",
- "when": "!gitlens:launchpad:connect && gitlens:plus:required && gitlens:plus:state == 4 && (gitlens:promo == pro50 || !gitlens:promo)"
- },
- {
- "view": "gitlens.views.launchpad",
- "contents": "Get the gift of a better DevEx in 2025! Save up to 80% now",
- "when": "!gitlens:launchpad:connect && gitlens:plus:required && gitlens:plus:state == 4 && gitlens:promo == gkholiday"
+ "contents": "Save 55% or more on your 1st seat of Pro.",
+ "when": "!gitlens:launchpad:connect && gitlens:plus:required && gitlens:plus:state == 4 && gitlens:promo == pro50"
},
{
"view": "gitlens.views.launchpad",
@@ -19564,13 +19559,8 @@
},
{
"view": "gitlens.views.scm.grouped",
- "contents": "Save 33% or more on your 1st seat of Pro.",
- "when": "gitlens:views:scm:grouped:view == launchpad && !gitlens:launchpad:connect && gitlens:plus:required && gitlens:plus:state == 4 && (gitlens:promo == pro50 || !gitlens:promo)"
- },
- {
- "view": "gitlens.views.scm.grouped",
- "contents": "Get the gift of a better DevEx in 2025! Save up to 80% now",
- "when": "gitlens:views:scm:grouped:view == launchpad && !gitlens:launchpad:connect && gitlens:plus:required && gitlens:plus:state == 4 && gitlens:promo == gkholiday"
+ "contents": "Save 55% or more on your 1st seat of Pro.",
+ "when": "gitlens:views:scm:grouped:view == launchpad && !gitlens:launchpad:connect && gitlens:plus:required && gitlens:plus:state == 4 && gitlens:promo == pro50"
},
{
"view": "gitlens.views.scm.grouped",
@@ -19629,13 +19619,8 @@
},
{
"view": "gitlens.views.scm.grouped",
- "contents": "Save 33% or more on your 1st seat of Pro.",
- "when": "gitlens:views:scm:grouped:view == worktrees && gitlens:plus:required && gitlens:plus:state == 4 && (gitlens:promo == pro50 || !gitlens:promo)"
- },
- {
- "view": "gitlens.views.scm.grouped",
- "contents": "Get the gift of a better DevEx in 2025! Save up to 80% now",
- "when": "gitlens:views:scm:grouped:view == worktrees && gitlens:plus:required && gitlens:plus:state == 4 && gitlens:promo == gkholiday"
+ "contents": "Save 55% or more on your 1st seat of Pro.",
+ "when": "gitlens:views:scm:grouped:view == worktrees && gitlens:plus:required && gitlens:plus:state == 4 && gitlens:promo == pro50"
},
{
"view": "gitlens.views.scm.grouped",
@@ -19717,13 +19702,8 @@
},
{
"view": "gitlens.views.worktrees",
- "contents": "Save 33% or more on your 1st seat of Pro.",
- "when": "gitlens:plus:required && gitlens:plus:state == 4 && (gitlens:promo == pro50 || !gitlens:promo)"
- },
- {
- "view": "gitlens.views.worktrees",
- "contents": "Get the gift of a better DevEx in 2025! Save up to 80% now",
- "when": "gitlens:plus:required && gitlens:plus:state == 4 && gitlens:promo == gkholiday"
+ "contents": "Save 55% or more on your 1st seat of Pro.",
+ "when": "gitlens:plus:required && gitlens:plus:state == 4 && gitlens:promo == pro50"
},
{
"view": "gitlens.views.worktrees",
diff --git a/src/constants.context.ts b/src/constants.context.ts
index 56efbb1afef88..ec9da13d46ad8 100644
--- a/src/constants.context.ts
+++ b/src/constants.context.ts
@@ -1,6 +1,7 @@
import type { Uri } from 'vscode';
import type { AnnotationStatus, Keys } from './constants';
-import type { PromoKeys, SubscriptionPlanId, SubscriptionState } from './constants.subscription';
+import type { PromoKeys } from './constants.promos';
+import type { SubscriptionPlanId, SubscriptionState } from './constants.subscription';
import type { CustomEditorTypes, GroupableTreeViewTypes, WebviewTypes, WebviewViewTypes } from './constants.views';
import type { WalkthroughContextKeys } from './telemetry/walkthroughStateProvider';
diff --git a/src/constants.promos.ts b/src/constants.promos.ts
new file mode 100644
index 0000000000000..32e7c64971f0b
--- /dev/null
+++ b/src/constants.promos.ts
@@ -0,0 +1,24 @@
+import { SubscriptionState } from './constants.subscription';
+import type { Promo } from './plus/gk/models/promo';
+
+export type PromoKeys = 'pro50';
+
+// Must be ordered by applicable order
+export const promos: Promo[] = [
+ {
+ key: 'pro50',
+ states: [
+ SubscriptionState.Community,
+ SubscriptionState.ProPreview,
+ SubscriptionState.ProPreviewExpired,
+ SubscriptionState.ProTrial,
+ SubscriptionState.ProTrialExpired,
+ SubscriptionState.ProTrialReactivationEligible,
+ ],
+ command: { tooltip: 'Save 55% or more on your 1st seat of Pro.' },
+ locations: ['account', 'badge', 'gate'],
+ quickpick: {
+ detail: '$(star-full) Save 55% or more on your 1st seat of Pro',
+ },
+ },
+];
diff --git a/src/constants.subscription.ts b/src/constants.subscription.ts
index 1a531872f2e61..255cae89af326 100644
--- a/src/constants.subscription.ts
+++ b/src/constants.subscription.ts
@@ -3,8 +3,6 @@ export const proFeaturePreviewUsageDurationInDays = 1;
export const proPreviewLengthInDays = 0;
export const proTrialLengthInDays = 14;
-export type PromoKeys = 'gkholiday' | 'pro50';
-
export const enum SubscriptionPlanId {
Community = 'community',
CommunityWithAccount = 'community-with-account',
diff --git a/src/plus/gk/models/promo.ts b/src/plus/gk/models/promo.ts
index ccc0f3e76ecf2..32d3ed68b7414 100644
--- a/src/plus/gk/models/promo.ts
+++ b/src/plus/gk/models/promo.ts
@@ -1,4 +1,5 @@
-import type { PromoKeys, SubscriptionState } from '../../../constants.subscription';
+import type { PromoKeys } from '../../../constants.promos';
+import type { SubscriptionState } from '../../../constants.subscription';
export type PromoLocation = 'account' | 'badge' | 'gate' | 'home';
diff --git a/src/plus/gk/utils/promo.utils.ts b/src/plus/gk/utils/promo.utils.ts
index d521ec9597ed5..af63d01d8c601 100644
--- a/src/plus/gk/utils/promo.utils.ts
+++ b/src/plus/gk/utils/promo.utils.ts
@@ -1,45 +1,7 @@
-import type { PromoKeys } from '../../../constants.subscription';
-import { SubscriptionState } from '../../../constants.subscription';
+import type { PromoKeys } from '../../../constants.promos';
+import { promos } from '../../../constants.promos';
import type { Promo, PromoLocation } from '../models/promo';
-// Must be ordered by applicable order
-const promos: Promo[] = [
- {
- key: 'gkholiday',
- code: 'GKHOLIDAY',
- states: [
- SubscriptionState.Community,
- SubscriptionState.ProPreview,
- SubscriptionState.ProPreviewExpired,
- SubscriptionState.ProTrial,
- SubscriptionState.ProTrialExpired,
- SubscriptionState.ProTrialReactivationEligible,
- ],
- startsOn: new Date('2024-12-09T06:59:00.000Z').getTime(),
- expiresOn: new Date('2025-01-07T06:59:00.000Z').getTime(),
- command: { tooltip: 'Get the gift of a better DevEx in 2025! Save up to 80% now' },
- quickpick: {
- detail: '$(star-full) Get the gift of a better DevEx in 2025! Save up to 80% now',
- },
- },
- {
- key: 'pro50',
- states: [
- SubscriptionState.Community,
- SubscriptionState.ProPreview,
- SubscriptionState.ProPreviewExpired,
- SubscriptionState.ProTrial,
- SubscriptionState.ProTrialExpired,
- SubscriptionState.ProTrialReactivationEligible,
- ],
- command: { tooltip: 'Save 33% or more on your 1st seat of Pro.' },
- locations: ['account', 'badge', 'gate'],
- quickpick: {
- detail: '$(star-full) Save 33% or more on your 1st seat of Pro',
- },
- },
-];
-
export function getApplicablePromo(
state: number | undefined,
location?: PromoLocation,
diff --git a/src/webviews/apps/shared/components/promo.ts b/src/webviews/apps/shared/components/promo.ts
index b0414a09c7bd2..3747346a32114 100644
--- a/src/webviews/apps/shared/components/promo.ts
+++ b/src/webviews/apps/shared/components/promo.ts
@@ -79,14 +79,9 @@ export class GlPromo extends LitElement {
private renderPromo(promo: Promo) {
switch (promo.key) {
- case 'gkholiday':
- return html`Get the gift of a better DevEx in 2025! Save up to 80% now`;
-
case 'pro50':
return html`Save 33% or more on your 1st seat of ProSave 55% or more on your 1st seat of Pro`;
default: {