From f82b61343a976dc794c7796f07ad42283edbd959 Mon Sep 17 00:00:00 2001 From: DDC Date: Fri, 31 Jan 2025 10:26:43 -0500 Subject: [PATCH] Storage Add On: Allow higher term cart item to be added via query param (#98899) * Storage Add On: Allow higher term cart item to be added via query param * Allow only 350gb add on * Review fixes * Fix: Add tracks event --- client/lib/signup/step-actions/index.js | 36 +++++++------------ .../data-stores/src/add-ons/add-ons-list.ts | 6 +++- 2 files changed, 18 insertions(+), 24 deletions(-) diff --git a/client/lib/signup/step-actions/index.js b/client/lib/signup/step-actions/index.js index 6ab1d6e27b1629..2379184b2aeb0e 100644 --- a/client/lib/signup/step-actions/index.js +++ b/client/lib/signup/step-actions/index.js @@ -3,6 +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_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'; @@ -1246,29 +1248,17 @@ 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 ) ) { + const selectedAddOn = getAddOn( selectedStorage ); + cartItem.push( { + product_slug: PRODUCT_1GB_SPACE, + quantity: selectedAddOn.quantity, + 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 } ); 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 ); +};