From e73cfc751cac44af99a6d94bc3285e40783254a3 Mon Sep 17 00:00:00 2001 From: Dehan Date: Fri, 24 Jan 2025 11:38:18 -0500 Subject: [PATCH 1/4] Storage Add On: Allow higher term cart item to be added via query param --- client/lib/signup/step-actions/index.js | 31 +++++-------------- packages/data-stores/src/add-ons/constants.ts | 25 +++++++++++++++ 2 files changed, 33 insertions(+), 23 deletions(-) diff --git a/client/lib/signup/step-actions/index.js b/client/lib/signup/step-actions/index.js index 6ab1d6e27b1629..e900b610b06772 100644 --- a/client/lib/signup/step-actions/index.js +++ b/client/lib/signup/step-actions/index.js @@ -3,6 +3,7 @@ import config from '@automattic/calypso-config'; import { WPCOM_DIFM_LITE, PRODUCT_1GB_SPACE, isDomainTransfer } from '@automattic/calypso-products'; import { getUrlParts } from '@automattic/calypso-url'; import { Site, AddOns } from '@automattic/data-stores'; +import { STORAGE_ADD_ON_DEFINITIONS, STORAGE_ADD_ONS } from '@automattic/data-stores/src/add-ons'; import { isBlankCanvasDesign } from '@automattic/design-picker'; import { guessTimezone, getLanguage } from '@automattic/i18n-utils'; import { isOnboardingGuidedFlow } from '@automattic/onboarding'; @@ -1246,29 +1247,13 @@ export function maybeAddStorageAddonToCart( stepName, defaultDependencies, nextP const state = store.getState(); const selectedStorage = get( getSignupDependencyStore( state ), 'storage', null ); - switch ( selectedStorage ) { - case AddOns.ADD_ON_50GB_STORAGE: - cartItem.push( { - product_slug: PRODUCT_1GB_SPACE, - quantity: 50, - volume: 1, - extra: { feature_slug: AddOns.ADD_ON_50GB_STORAGE }, - } ); - recordTracksEvent( 'calypso_signup_storage_add_on_selected', { - add_on_slug: AddOns.ADD_ON_50GB_STORAGE, - } ); - break; - case AddOns.ADD_ON_100GB_STORAGE: - cartItem.push( { - product_slug: PRODUCT_1GB_SPACE, - quantity: 100, - volume: 1, - extra: { feature_slug: AddOns.ADD_ON_100GB_STORAGE }, - } ); - recordTracksEvent( 'calypso_signup_storage_add_on_selected', { - add_on_slug: AddOns.ADD_ON_100GB_STORAGE, - } ); - break; + if ( STORAGE_ADD_ONS.includes( selectedStorage ) ) { + cartItem.push( { + product_slug: PRODUCT_1GB_SPACE, + quantity: STORAGE_ADD_ON_DEFINITIONS[ selectedStorage ].quantity, + volume: 1, + extra: { feature_slug: AddOns.ADD_ON_50GB_STORAGE }, + } ); } submitSignupStep( { stepName, cartItem, wasSkipped: true }, { cartItem } ); diff --git a/packages/data-stores/src/add-ons/constants.ts b/packages/data-stores/src/add-ons/constants.ts index 76334bab2bb5df..cd5cfff81c07a0 100644 --- a/packages/data-stores/src/add-ons/constants.ts +++ b/packages/data-stores/src/add-ons/constants.ts @@ -10,6 +10,7 @@ export const ADD_ON_200GB_STORAGE = '200gb-storage-add-on'; export const ADD_ON_250GB_STORAGE = '250gb-storage-add-on'; export const ADD_ON_300GB_STORAGE = '300gb-storage-add-on'; export const ADD_ON_350GB_STORAGE = '350gb-storage-add-on'; +export const ADD_ON_400GB_STORAGE = '400gb-storage-add-on'; export const ADD_ONS = < const >[ ADD_ON_JETPACK_AI_MONTHLY, @@ -33,3 +34,27 @@ export const STORAGE_ADD_ONS = < const >[ ADD_ON_300GB_STORAGE, ADD_ON_350GB_STORAGE, ]; + +export const STORAGE_ADD_ON_DEFINITIONS = { + [ ADD_ON_50GB_STORAGE ]: { + quantity: 50, + }, + [ ADD_ON_100GB_STORAGE ]: { + quantity: 100, + }, + [ ADD_ON_150GB_STORAGE ]: { + quantity: 150, + }, + [ ADD_ON_200GB_STORAGE ]: { + quantity: 200, + }, + [ ADD_ON_250GB_STORAGE ]: { + quantity: 250, + }, + [ ADD_ON_300GB_STORAGE ]: { + quantity: 300, + }, + [ ADD_ON_350GB_STORAGE ]: { + quantity: 350, + }, +}; From f27725f6c91c8cd4cb928930deb083ae9e56f814 Mon Sep 17 00:00:00 2001 From: Dehan Date: Fri, 24 Jan 2025 12:48:57 -0500 Subject: [PATCH 2/4] Allow only 350gb add on --- packages/data-stores/src/add-ons/constants.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/data-stores/src/add-ons/constants.ts b/packages/data-stores/src/add-ons/constants.ts index cd5cfff81c07a0..77c2734e9a3175 100644 --- a/packages/data-stores/src/add-ons/constants.ts +++ b/packages/data-stores/src/add-ons/constants.ts @@ -10,7 +10,6 @@ export const ADD_ON_200GB_STORAGE = '200gb-storage-add-on'; export const ADD_ON_250GB_STORAGE = '250gb-storage-add-on'; export const ADD_ON_300GB_STORAGE = '300gb-storage-add-on'; export const ADD_ON_350GB_STORAGE = '350gb-storage-add-on'; -export const ADD_ON_400GB_STORAGE = '400gb-storage-add-on'; export const ADD_ONS = < const >[ ADD_ON_JETPACK_AI_MONTHLY, From d8b89604b7453051255550cc9b27b055f32a6ea0 Mon Sep 17 00:00:00 2001 From: Dehan Date: Mon, 27 Jan 2025 14:20:08 -0500 Subject: [PATCH 3/4] Review fixes --- client/lib/signup/step-actions/index.js | 6 +++-- .../data-stores/src/add-ons/add-ons-list.ts | 6 ++++- packages/data-stores/src/add-ons/constants.ts | 24 ------------------- 3 files changed, 9 insertions(+), 27 deletions(-) diff --git a/client/lib/signup/step-actions/index.js b/client/lib/signup/step-actions/index.js index e900b610b06772..ea449ff92b59bf 100644 --- a/client/lib/signup/step-actions/index.js +++ b/client/lib/signup/step-actions/index.js @@ -3,7 +3,8 @@ import config from '@automattic/calypso-config'; import { WPCOM_DIFM_LITE, PRODUCT_1GB_SPACE, isDomainTransfer } from '@automattic/calypso-products'; import { getUrlParts } from '@automattic/calypso-url'; import { Site, AddOns } from '@automattic/data-stores'; -import { STORAGE_ADD_ON_DEFINITIONS, STORAGE_ADD_ONS } from '@automattic/data-stores/src/add-ons'; +import { STORAGE_ADD_ONS } from '@automattic/data-stores/src/add-ons'; +import { getAddOn } from '@automattic/data-stores/src/add-ons/add-ons-list'; import { isBlankCanvasDesign } from '@automattic/design-picker'; import { guessTimezone, getLanguage } from '@automattic/i18n-utils'; import { isOnboardingGuidedFlow } from '@automattic/onboarding'; @@ -1248,9 +1249,10 @@ export function maybeAddStorageAddonToCart( stepName, defaultDependencies, nextP const selectedStorage = get( getSignupDependencyStore( state ), 'storage', null ); if ( STORAGE_ADD_ONS.includes( selectedStorage ) ) { + const selectedAddOn = getAddOn( selectedStorage ); cartItem.push( { product_slug: PRODUCT_1GB_SPACE, - quantity: STORAGE_ADD_ON_DEFINITIONS[ selectedStorage ].quantity, + quantity: selectedAddOn.quantity, volume: 1, extra: { feature_slug: AddOns.ADD_ON_50GB_STORAGE }, } ); diff --git a/packages/data-stores/src/add-ons/add-ons-list.ts b/packages/data-stores/src/add-ons/add-ons-list.ts index 47837a572dc3fc..697dea2a65af92 100644 --- a/packages/data-stores/src/add-ons/add-ons-list.ts +++ b/packages/data-stores/src/add-ons/add-ons-list.ts @@ -21,7 +21,7 @@ import { import customDesignIcon from './icons/custom-design'; import spaceUpgradeIcon from './icons/space-upgrade'; import unlimitedThemesIcon from './icons/unlimited-themes'; -import type { AddOnMeta } from './types'; +import type { AddOnMeta, AddOnSlug } from './types'; export const getAddOnsList = (): AddOnMeta[] => { const defaultAddOns: AddOnMeta[] = [ @@ -110,3 +110,7 @@ export const getAddOnsList = (): AddOnMeta[] => { return defaultAddOns; }; + +export const getAddOn = ( addOnSlug: AddOnSlug ): AddOnMeta | undefined => { + return getAddOnsList().find( ( addOn ) => addOn.addOnSlug === addOnSlug ); +}; diff --git a/packages/data-stores/src/add-ons/constants.ts b/packages/data-stores/src/add-ons/constants.ts index 77c2734e9a3175..76334bab2bb5df 100644 --- a/packages/data-stores/src/add-ons/constants.ts +++ b/packages/data-stores/src/add-ons/constants.ts @@ -33,27 +33,3 @@ export const STORAGE_ADD_ONS = < const >[ ADD_ON_300GB_STORAGE, ADD_ON_350GB_STORAGE, ]; - -export const STORAGE_ADD_ON_DEFINITIONS = { - [ ADD_ON_50GB_STORAGE ]: { - quantity: 50, - }, - [ ADD_ON_100GB_STORAGE ]: { - quantity: 100, - }, - [ ADD_ON_150GB_STORAGE ]: { - quantity: 150, - }, - [ ADD_ON_200GB_STORAGE ]: { - quantity: 200, - }, - [ ADD_ON_250GB_STORAGE ]: { - quantity: 250, - }, - [ ADD_ON_300GB_STORAGE ]: { - quantity: 300, - }, - [ ADD_ON_350GB_STORAGE ]: { - quantity: 350, - }, -}; From c85e1829b4d33ae02f393e9de83ade0dffc224f5 Mon Sep 17 00:00:00 2001 From: Dehan Date: Wed, 29 Jan 2025 12:19:49 -0500 Subject: [PATCH 4/4] Fix: Add tracks event --- client/lib/signup/step-actions/index.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/client/lib/signup/step-actions/index.js b/client/lib/signup/step-actions/index.js index ea449ff92b59bf..2379184b2aeb0e 100644 --- a/client/lib/signup/step-actions/index.js +++ b/client/lib/signup/step-actions/index.js @@ -1256,6 +1256,9 @@ export function maybeAddStorageAddonToCart( stepName, defaultDependencies, nextP volume: 1, extra: { feature_slug: AddOns.ADD_ON_50GB_STORAGE }, } ); + recordTracksEvent( 'calypso_signup_storage_add_on_selected', { + add_on_slug: selectedAddOn.addOnSlug, + } ); } submitSignupStep( { stepName, cartItem, wasSkipped: true }, { cartItem } );