From f4ba244f41e70d60bde26212fbecd7d85526d433 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9rgio=20Gomes?= Date: Thu, 30 Jul 2020 15:28:34 +0100 Subject: [PATCH 01/71] Split assertValidProduct into a new utils folder --- client/lib/products-values/index.js | 14 +++----------- .../utils/assert-valid-product.js | 19 +++++++++++++++++++ 2 files changed, 22 insertions(+), 11 deletions(-) create mode 100644 client/lib/products-values/utils/assert-valid-product.js diff --git a/client/lib/products-values/index.js b/client/lib/products-values/index.js index 6f73daf3040b9..158e909747de2 100644 --- a/client/lib/products-values/index.js +++ b/client/lib/products-values/index.js @@ -1,7 +1,7 @@ /** * External dependencies */ -import { assign, difference, get, includes, isEmpty, pick } from 'lodash'; +import { assign, get, includes, pick } from 'lodash'; /** * Internal dependencies @@ -46,6 +46,8 @@ import { import { domainProductSlugs } from 'lib/domains/constants'; import schema from './schema.json'; +import { assertValidProduct } from './utils/assert-valid-product'; + const productDependencies = { domain: { domain_redemption: true, @@ -76,16 +78,6 @@ const productDependencies = { }, }; -function assertValidProduct( product ) { - const missingAttributes = difference( schema.required, Object.keys( product ) ); - - if ( ! isEmpty( missingAttributes ) ) { - throw new Error( - 'Missing required attributes for ProductValue: [' + missingAttributes.join( ', ' ) + ']' - ); - } -} - export function formatProduct( product ) { return assign( {}, product, { product_slug: product.product_slug || product.productSlug, diff --git a/client/lib/products-values/utils/assert-valid-product.js b/client/lib/products-values/utils/assert-valid-product.js new file mode 100644 index 0000000000000..32ce0870cf7cb --- /dev/null +++ b/client/lib/products-values/utils/assert-valid-product.js @@ -0,0 +1,19 @@ +/** + * External dependencies + */ +import { difference, isEmpty } from 'lodash'; + +/** + * Internal dependencies + */ +import schema from 'lib/products-values/schema.json'; + +export function assertValidProduct( product ) { + const missingAttributes = difference( schema.required, Object.keys( product ) ); + + if ( ! isEmpty( missingAttributes ) ) { + throw new Error( + 'Missing required attributes for ProductValue: [' + missingAttributes.join( ', ' ) + ']' + ); + } +} From 9650cf7abe91f6a3dd60f8b523d53bc5ec002bf6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9rgio=20Gomes?= Date: Thu, 30 Jul 2020 15:30:45 +0100 Subject: [PATCH 02/71] Split out formatProduct --- client/lib/products-values/format-product.js | 18 ++++++++++++++++++ client/lib/products-values/index.js | 17 +++-------------- 2 files changed, 21 insertions(+), 14 deletions(-) create mode 100644 client/lib/products-values/format-product.js diff --git a/client/lib/products-values/format-product.js b/client/lib/products-values/format-product.js new file mode 100644 index 0000000000000..87b3df51f695e --- /dev/null +++ b/client/lib/products-values/format-product.js @@ -0,0 +1,18 @@ +/** + * External dependencies + */ +import { assign } from 'lodash'; + +export function formatProduct( product ) { + return assign( {}, product, { + product_slug: product.product_slug || product.productSlug, + product_type: product.product_type || product.productType, + included_domain_purchase_amount: + product.included_domain_purchase_amount || product.includedDomainPurchaseAmount, + is_domain_registration: + product.is_domain_registration !== undefined + ? product.is_domain_registration + : product.isDomainRegistration, + free_trial: product.free_trial || product.freeTrial, + } ); +} diff --git a/client/lib/products-values/index.js b/client/lib/products-values/index.js index 158e909747de2..550fa25c4ab1b 100644 --- a/client/lib/products-values/index.js +++ b/client/lib/products-values/index.js @@ -1,7 +1,7 @@ /** * External dependencies */ -import { assign, get, includes, pick } from 'lodash'; +import { get, includes, pick } from 'lodash'; /** * Internal dependencies @@ -47,6 +47,7 @@ import { domainProductSlugs } from 'lib/domains/constants'; import schema from './schema.json'; import { assertValidProduct } from './utils/assert-valid-product'; +import { formatProduct } from './format-product'; const productDependencies = { domain: { @@ -78,19 +79,7 @@ const productDependencies = { }, }; -export function formatProduct( product ) { - return assign( {}, product, { - product_slug: product.product_slug || product.productSlug, - product_type: product.product_type || product.productType, - included_domain_purchase_amount: - product.included_domain_purchase_amount || product.includedDomainPurchaseAmount, - is_domain_registration: - product.is_domain_registration !== undefined - ? product.is_domain_registration - : product.isDomainRegistration, - free_trial: product.free_trial || product.freeTrial, - } ); -} +export { formatProduct } from './format-product'; export function isChargeback( product ) { product = formatProduct( product ); From 47404868d4998474cfb502beb7e2a96c40aafd14 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9rgio=20Gomes?= Date: Thu, 30 Jul 2020 15:36:39 +0100 Subject: [PATCH 03/71] Split out isChargeback --- client/lib/products-values/index.js | 9 +-------- client/lib/products-values/is-chargeback.js | 13 +++++++++++++ 2 files changed, 14 insertions(+), 8 deletions(-) create mode 100644 client/lib/products-values/is-chargeback.js diff --git a/client/lib/products-values/index.js b/client/lib/products-values/index.js index 550fa25c4ab1b..b5f8db325eeb1 100644 --- a/client/lib/products-values/index.js +++ b/client/lib/products-values/index.js @@ -28,7 +28,6 @@ import { PLAN_JETPACK_FREE, PLAN_HOST_BUNDLE, PLAN_WPCOM_ENTERPRISE, - PLAN_CHARGEBACK, PLAN_MONTHLY_PERIOD, PLAN_ANNUAL_PERIOD, PLAN_BIENNIAL_PERIOD, @@ -80,13 +79,7 @@ const productDependencies = { }; export { formatProduct } from './format-product'; - -export function isChargeback( product ) { - product = formatProduct( product ); - assertValidProduct( product ); - - return product.product_slug === PLAN_CHARGEBACK; -} +export { isChargeback } from './is-chargeback'; export function includesProduct( products, product ) { product = formatProduct( product ); diff --git a/client/lib/products-values/is-chargeback.js b/client/lib/products-values/is-chargeback.js new file mode 100644 index 0000000000000..565126bcfcc7d --- /dev/null +++ b/client/lib/products-values/is-chargeback.js @@ -0,0 +1,13 @@ +/** + * Internal dependencies + */ +import { PLAN_CHARGEBACK } from 'lib/plans/constants'; +import { assertValidProduct } from 'lib/products-values/utils/assert-valid-product'; +import { formatProduct } from 'lib/products-values/format-product'; + +export function isChargeback( product ) { + product = formatProduct( product ); + assertValidProduct( product ); + + return product.product_slug === PLAN_CHARGEBACK; +} From 2dd9f0f6fc62f1379a984b76e75bb7cffd712183 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9rgio=20Gomes?= Date: Thu, 30 Jul 2020 15:38:13 +0100 Subject: [PATCH 04/71] Split out includesProduct --- client/lib/products-values/includes-product.js | 12 ++++++++++++ client/lib/products-values/index.js | 8 +------- 2 files changed, 13 insertions(+), 7 deletions(-) create mode 100644 client/lib/products-values/includes-product.js diff --git a/client/lib/products-values/includes-product.js b/client/lib/products-values/includes-product.js new file mode 100644 index 0000000000000..f35c42839fa36 --- /dev/null +++ b/client/lib/products-values/includes-product.js @@ -0,0 +1,12 @@ +/** + * Internal dependencies + */ +import { assertValidProduct } from 'lib/products-values/utils/assert-valid-product'; +import { formatProduct } from 'lib/products-values/format-product'; + +export function includesProduct( products, product ) { + product = formatProduct( product ); + assertValidProduct( product ); + + return products.indexOf( product.product_slug ) >= 0; +} diff --git a/client/lib/products-values/index.js b/client/lib/products-values/index.js index b5f8db325eeb1..aa6b9ef023d97 100644 --- a/client/lib/products-values/index.js +++ b/client/lib/products-values/index.js @@ -80,13 +80,7 @@ const productDependencies = { export { formatProduct } from './format-product'; export { isChargeback } from './is-chargeback'; - -export function includesProduct( products, product ) { - product = formatProduct( product ); - assertValidProduct( product ); - - return products.indexOf( product.product_slug ) >= 0; -} +export { includesProduct } from './includes-product'; export function isFreePlan( product ) { product = formatProduct( product ); From 1e8b4eea10e624c3cecef1d9f97469994c7166ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9rgio=20Gomes?= Date: Thu, 30 Jul 2020 15:39:23 +0100 Subject: [PATCH 05/71] Split out isFreePlan --- client/lib/products-values/index.js | 9 +-------- client/lib/products-values/is-free-plan.js | 13 +++++++++++++ 2 files changed, 14 insertions(+), 8 deletions(-) create mode 100644 client/lib/products-values/is-free-plan.js diff --git a/client/lib/products-values/index.js b/client/lib/products-values/index.js index aa6b9ef023d97..022f7a0d2fd24 100644 --- a/client/lib/products-values/index.js +++ b/client/lib/products-values/index.js @@ -24,7 +24,6 @@ import { PLAN_PREMIUM_2_YEARS, PLAN_PERSONAL, PLAN_PERSONAL_2_YEARS, - PLAN_FREE, PLAN_JETPACK_FREE, PLAN_HOST_BUNDLE, PLAN_WPCOM_ENTERPRISE, @@ -81,13 +80,7 @@ const productDependencies = { export { formatProduct } from './format-product'; export { isChargeback } from './is-chargeback'; export { includesProduct } from './includes-product'; - -export function isFreePlan( product ) { - product = formatProduct( product ); - assertValidProduct( product ); - - return product.product_slug === PLAN_FREE; -} +export { isFreePlan } from './is-free-plan'; export function isFreeJetpackPlan( product ) { product = formatProduct( product ); diff --git a/client/lib/products-values/is-free-plan.js b/client/lib/products-values/is-free-plan.js new file mode 100644 index 0000000000000..d9aa2f6b540b6 --- /dev/null +++ b/client/lib/products-values/is-free-plan.js @@ -0,0 +1,13 @@ +/** + * Internal dependencies + */ +import { PLAN_FREE } from 'lib/plans/constants'; +import { assertValidProduct } from 'lib/products-values/utils/assert-valid-product'; +import { formatProduct } from 'lib/products-values/format-product'; + +export function isFreePlan( product ) { + product = formatProduct( product ); + assertValidProduct( product ); + + return product.product_slug === PLAN_FREE; +} From 375cc99d96c1b8b7d0d16e74dccdff79b31c82d6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9rgio=20Gomes?= Date: Thu, 30 Jul 2020 15:41:07 +0100 Subject: [PATCH 06/71] Split out isFreeJetpackPlan --- client/lib/products-values/index.js | 9 +-------- client/lib/products-values/is-free-jetpack-plan.js | 13 +++++++++++++ 2 files changed, 14 insertions(+), 8 deletions(-) create mode 100644 client/lib/products-values/is-free-jetpack-plan.js diff --git a/client/lib/products-values/index.js b/client/lib/products-values/index.js index 022f7a0d2fd24..481e7be23f1b3 100644 --- a/client/lib/products-values/index.js +++ b/client/lib/products-values/index.js @@ -24,7 +24,6 @@ import { PLAN_PREMIUM_2_YEARS, PLAN_PERSONAL, PLAN_PERSONAL_2_YEARS, - PLAN_JETPACK_FREE, PLAN_HOST_BUNDLE, PLAN_WPCOM_ENTERPRISE, PLAN_MONTHLY_PERIOD, @@ -81,13 +80,7 @@ export { formatProduct } from './format-product'; export { isChargeback } from './is-chargeback'; export { includesProduct } from './includes-product'; export { isFreePlan } from './is-free-plan'; - -export function isFreeJetpackPlan( product ) { - product = formatProduct( product ); - assertValidProduct( product ); - - return product.product_slug === PLAN_JETPACK_FREE; -} +export { isFreeJetpackPlan } from './is-free-jetpack-plan'; export function isFreeTrial( product ) { product = formatProduct( product ); diff --git a/client/lib/products-values/is-free-jetpack-plan.js b/client/lib/products-values/is-free-jetpack-plan.js new file mode 100644 index 0000000000000..d91df544aa5d5 --- /dev/null +++ b/client/lib/products-values/is-free-jetpack-plan.js @@ -0,0 +1,13 @@ +/** + * Internal dependencies + */ +import { PLAN_JETPACK_FREE } from 'lib/plans/constants'; +import { assertValidProduct } from 'lib/products-values/utils/assert-valid-product'; +import { formatProduct } from 'lib/products-values/format-product'; + +export function isFreeJetpackPlan( product ) { + product = formatProduct( product ); + assertValidProduct( product ); + + return product.product_slug === PLAN_JETPACK_FREE; +} From f41a5d48b6b09a4913ef13f766eb3a57ebda1049 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9rgio=20Gomes?= Date: Thu, 30 Jul 2020 15:42:12 +0100 Subject: [PATCH 07/71] Split out isFreeTrial --- client/lib/products-values/index.js | 8 +------- client/lib/products-values/is-free-trial.js | 12 ++++++++++++ 2 files changed, 13 insertions(+), 7 deletions(-) create mode 100644 client/lib/products-values/is-free-trial.js diff --git a/client/lib/products-values/index.js b/client/lib/products-values/index.js index 481e7be23f1b3..dee37249fb906 100644 --- a/client/lib/products-values/index.js +++ b/client/lib/products-values/index.js @@ -81,13 +81,7 @@ export { isChargeback } from './is-chargeback'; export { includesProduct } from './includes-product'; export { isFreePlan } from './is-free-plan'; export { isFreeJetpackPlan } from './is-free-jetpack-plan'; - -export function isFreeTrial( product ) { - product = formatProduct( product ); - assertValidProduct( product ); - - return Boolean( product.free_trial ); -} +export { isFreeTrial } from './is-free-trial'; export function isPersonal( product ) { product = formatProduct( product ); diff --git a/client/lib/products-values/is-free-trial.js b/client/lib/products-values/is-free-trial.js new file mode 100644 index 0000000000000..cf47895e24ddb --- /dev/null +++ b/client/lib/products-values/is-free-trial.js @@ -0,0 +1,12 @@ +/** + * Internal dependencies + */ +import { assertValidProduct } from 'lib/products-values/utils/assert-valid-product'; +import { formatProduct } from 'lib/products-values/format-product'; + +export function isFreeTrial( product ) { + product = formatProduct( product ); + assertValidProduct( product ); + + return Boolean( product.free_trial ); +} From bbd91a5ef80cc15389e30dbc979d5a1989ea4ac5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9rgio=20Gomes?= Date: Thu, 30 Jul 2020 15:43:52 +0100 Subject: [PATCH 08/71] Split out isPersonal --- client/lib/products-values/index.js | 10 ++-------- client/lib/products-values/is-personal.js | 13 +++++++++++++ 2 files changed, 15 insertions(+), 8 deletions(-) create mode 100644 client/lib/products-values/is-personal.js diff --git a/client/lib/products-values/index.js b/client/lib/products-values/index.js index dee37249fb906..8fff8dea4b30f 100644 --- a/client/lib/products-values/index.js +++ b/client/lib/products-values/index.js @@ -37,7 +37,6 @@ import { isEcommercePlan, isBusinessPlan, isPremiumPlan, - isPersonalPlan, isBloggerPlan, } from 'lib/plans'; import { domainProductSlugs } from 'lib/domains/constants'; @@ -45,6 +44,7 @@ import schema from './schema.json'; import { assertValidProduct } from './utils/assert-valid-product'; import { formatProduct } from './format-product'; +import { isPersonal } from './is-personal'; const productDependencies = { domain: { @@ -82,13 +82,7 @@ export { includesProduct } from './includes-product'; export { isFreePlan } from './is-free-plan'; export { isFreeJetpackPlan } from './is-free-jetpack-plan'; export { isFreeTrial } from './is-free-trial'; - -export function isPersonal( product ) { - product = formatProduct( product ); - assertValidProduct( product ); - - return isPersonalPlan( product.product_slug ); -} +export { isPersonal } from './is-personal'; export function isBlogger( product ) { product = formatProduct( product ); diff --git a/client/lib/products-values/is-personal.js b/client/lib/products-values/is-personal.js new file mode 100644 index 0000000000000..4a80690b75ac8 --- /dev/null +++ b/client/lib/products-values/is-personal.js @@ -0,0 +1,13 @@ +/** + * Internal dependencies + */ +import { isPersonalPlan } from 'lib/plans'; +import { assertValidProduct } from 'lib/products-values/utils/assert-valid-product'; +import { formatProduct } from 'lib/products-values/format-product'; + +export function isPersonal( product ) { + product = formatProduct( product ); + assertValidProduct( product ); + + return isPersonalPlan( product.product_slug ); +} From d5de7d33b0a72b375e4e534c19b83c22d294d987 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9rgio=20Gomes?= Date: Thu, 30 Jul 2020 15:45:32 +0100 Subject: [PATCH 09/71] Split out isBlogger --- client/lib/products-values/index.js | 17 +++-------------- client/lib/products-values/is-blogger.js | 13 +++++++++++++ 2 files changed, 16 insertions(+), 14 deletions(-) create mode 100644 client/lib/products-values/is-blogger.js diff --git a/client/lib/products-values/index.js b/client/lib/products-values/index.js index 8fff8dea4b30f..ff1e8a04b51bb 100644 --- a/client/lib/products-values/index.js +++ b/client/lib/products-values/index.js @@ -32,19 +32,14 @@ import { GROUP_JETPACK, } from 'lib/plans/constants'; -import { - planMatches, - isEcommercePlan, - isBusinessPlan, - isPremiumPlan, - isBloggerPlan, -} from 'lib/plans'; +import { planMatches, isEcommercePlan, isBusinessPlan, isPremiumPlan } from 'lib/plans'; import { domainProductSlugs } from 'lib/domains/constants'; import schema from './schema.json'; import { assertValidProduct } from './utils/assert-valid-product'; import { formatProduct } from './format-product'; import { isPersonal } from './is-personal'; +import { isBlogger } from './is-blogger'; const productDependencies = { domain: { @@ -83,13 +78,7 @@ export { isFreePlan } from './is-free-plan'; export { isFreeJetpackPlan } from './is-free-jetpack-plan'; export { isFreeTrial } from './is-free-trial'; export { isPersonal } from './is-personal'; - -export function isBlogger( product ) { - product = formatProduct( product ); - assertValidProduct( product ); - - return isBloggerPlan( product.product_slug ); -} +export { isBlogger } from './is-blogger'; export function isPremium( product ) { product = formatProduct( product ); diff --git a/client/lib/products-values/is-blogger.js b/client/lib/products-values/is-blogger.js new file mode 100644 index 0000000000000..371540c8b0400 --- /dev/null +++ b/client/lib/products-values/is-blogger.js @@ -0,0 +1,13 @@ +/** + * Internal dependencies + */ +import { isBloggerPlan } from 'lib/plans'; +import { assertValidProduct } from 'lib/products-values/utils/assert-valid-product'; +import { formatProduct } from 'lib/products-values/format-product'; + +export function isBlogger( product ) { + product = formatProduct( product ); + assertValidProduct( product ); + + return isBloggerPlan( product.product_slug ); +} From b49ce12d618f5bfc76fdb6c2b21b7755ec45c1e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9rgio=20Gomes?= Date: Thu, 30 Jul 2020 15:46:51 +0100 Subject: [PATCH 10/71] Split out isPremium --- client/lib/products-values/index.js | 11 +++-------- client/lib/products-values/is-premium.js | 13 +++++++++++++ 2 files changed, 16 insertions(+), 8 deletions(-) create mode 100644 client/lib/products-values/is-premium.js diff --git a/client/lib/products-values/index.js b/client/lib/products-values/index.js index ff1e8a04b51bb..c3b4df0e4e411 100644 --- a/client/lib/products-values/index.js +++ b/client/lib/products-values/index.js @@ -32,7 +32,7 @@ import { GROUP_JETPACK, } from 'lib/plans/constants'; -import { planMatches, isEcommercePlan, isBusinessPlan, isPremiumPlan } from 'lib/plans'; +import { planMatches, isEcommercePlan, isBusinessPlan } from 'lib/plans'; import { domainProductSlugs } from 'lib/domains/constants'; import schema from './schema.json'; @@ -40,6 +40,7 @@ import { assertValidProduct } from './utils/assert-valid-product'; import { formatProduct } from './format-product'; import { isPersonal } from './is-personal'; import { isBlogger } from './is-blogger'; +import { isPremium } from './is-premium'; const productDependencies = { domain: { @@ -79,13 +80,7 @@ export { isFreeJetpackPlan } from './is-free-jetpack-plan'; export { isFreeTrial } from './is-free-trial'; export { isPersonal } from './is-personal'; export { isBlogger } from './is-blogger'; - -export function isPremium( product ) { - product = formatProduct( product ); - assertValidProduct( product ); - - return isPremiumPlan( product.product_slug ); -} +export { isPremium } from './is-premium'; export function isBusiness( product ) { product = formatProduct( product ); diff --git a/client/lib/products-values/is-premium.js b/client/lib/products-values/is-premium.js new file mode 100644 index 0000000000000..ae7961834c2f1 --- /dev/null +++ b/client/lib/products-values/is-premium.js @@ -0,0 +1,13 @@ +/** + * Internal dependencies + */ +import { isPremiumPlan } from 'lib/plans'; +import { assertValidProduct } from 'lib/products-values/utils/assert-valid-product'; +import { formatProduct } from 'lib/products-values/format-product'; + +export function isPremium( product ) { + product = formatProduct( product ); + assertValidProduct( product ); + + return isPremiumPlan( product.product_slug ); +} From e69c4d9bc5e448a08dc80846682998c0129830ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9rgio=20Gomes?= Date: Thu, 30 Jul 2020 15:48:08 +0100 Subject: [PATCH 11/71] Split out isBusiness --- client/lib/products-values/index.js | 11 +++-------- client/lib/products-values/is-business.js | 13 +++++++++++++ 2 files changed, 16 insertions(+), 8 deletions(-) create mode 100644 client/lib/products-values/is-business.js diff --git a/client/lib/products-values/index.js b/client/lib/products-values/index.js index c3b4df0e4e411..5365156ad5158 100644 --- a/client/lib/products-values/index.js +++ b/client/lib/products-values/index.js @@ -32,7 +32,7 @@ import { GROUP_JETPACK, } from 'lib/plans/constants'; -import { planMatches, isEcommercePlan, isBusinessPlan } from 'lib/plans'; +import { planMatches, isEcommercePlan } from 'lib/plans'; import { domainProductSlugs } from 'lib/domains/constants'; import schema from './schema.json'; @@ -41,6 +41,7 @@ import { formatProduct } from './format-product'; import { isPersonal } from './is-personal'; import { isBlogger } from './is-blogger'; import { isPremium } from './is-premium'; +import { isBusiness } from './is-business'; const productDependencies = { domain: { @@ -81,13 +82,7 @@ export { isFreeTrial } from './is-free-trial'; export { isPersonal } from './is-personal'; export { isBlogger } from './is-blogger'; export { isPremium } from './is-premium'; - -export function isBusiness( product ) { - product = formatProduct( product ); - assertValidProduct( product ); - - return isBusinessPlan( product.product_slug ); -} +export { isBusiness } from './is-business'; export function isEcommerce( product ) { product = formatProduct( product ); diff --git a/client/lib/products-values/is-business.js b/client/lib/products-values/is-business.js new file mode 100644 index 0000000000000..854a32765975b --- /dev/null +++ b/client/lib/products-values/is-business.js @@ -0,0 +1,13 @@ +/** + * Internal dependencies + */ +import { isBusinessPlan } from 'lib/plans'; +import { assertValidProduct } from 'lib/products-values/utils/assert-valid-product'; +import { formatProduct } from 'lib/products-values/format-product'; + +export function isBusiness( product ) { + product = formatProduct( product ); + assertValidProduct( product ); + + return isBusinessPlan( product.product_slug ); +} From 10fb5b37d3f3b15cd93c69ac9bf608ad17a41736 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9rgio=20Gomes?= Date: Thu, 30 Jul 2020 15:49:35 +0100 Subject: [PATCH 12/71] Split out isEcommerce --- client/lib/products-values/index.js | 11 +++-------- client/lib/products-values/is-ecommerce.js | 13 +++++++++++++ 2 files changed, 16 insertions(+), 8 deletions(-) create mode 100644 client/lib/products-values/is-ecommerce.js diff --git a/client/lib/products-values/index.js b/client/lib/products-values/index.js index 5365156ad5158..4094229c29d2a 100644 --- a/client/lib/products-values/index.js +++ b/client/lib/products-values/index.js @@ -32,7 +32,7 @@ import { GROUP_JETPACK, } from 'lib/plans/constants'; -import { planMatches, isEcommercePlan } from 'lib/plans'; +import { planMatches } from 'lib/plans'; import { domainProductSlugs } from 'lib/domains/constants'; import schema from './schema.json'; @@ -42,6 +42,7 @@ import { isPersonal } from './is-personal'; import { isBlogger } from './is-blogger'; import { isPremium } from './is-premium'; import { isBusiness } from './is-business'; +import { isEcommerce } from './is-ecommerce'; const productDependencies = { domain: { @@ -83,13 +84,7 @@ export { isPersonal } from './is-personal'; export { isBlogger } from './is-blogger'; export { isPremium } from './is-premium'; export { isBusiness } from './is-business'; - -export function isEcommerce( product ) { - product = formatProduct( product ); - assertValidProduct( product ); - - return isEcommercePlan( product.product_slug ); -} +export { isEcommerce } from './is-ecommerce'; export function isEnterprise( product ) { product = formatProduct( product ); diff --git a/client/lib/products-values/is-ecommerce.js b/client/lib/products-values/is-ecommerce.js new file mode 100644 index 0000000000000..5425d43a0bab7 --- /dev/null +++ b/client/lib/products-values/is-ecommerce.js @@ -0,0 +1,13 @@ +/** + * Internal dependencies + */ +import { isEcommercePlan } from 'lib/plans'; +import { assertValidProduct } from 'lib/products-values/utils/assert-valid-product'; +import { formatProduct } from 'lib/products-values/format-product'; + +export function isEcommerce( product ) { + product = formatProduct( product ); + assertValidProduct( product ); + + return isEcommercePlan( product.product_slug ); +} From cc1a1dd8b87d44d37e942a50830b74a98debdfa8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9rgio=20Gomes?= Date: Thu, 30 Jul 2020 15:53:16 +0100 Subject: [PATCH 13/71] Split out isEnterprise --- client/lib/products-values/index.js | 10 ++-------- client/lib/products-values/is-enterprise.js | 13 +++++++++++++ 2 files changed, 15 insertions(+), 8 deletions(-) create mode 100644 client/lib/products-values/is-enterprise.js diff --git a/client/lib/products-values/index.js b/client/lib/products-values/index.js index 4094229c29d2a..76eff2e6111ea 100644 --- a/client/lib/products-values/index.js +++ b/client/lib/products-values/index.js @@ -25,7 +25,6 @@ import { PLAN_PERSONAL, PLAN_PERSONAL_2_YEARS, PLAN_HOST_BUNDLE, - PLAN_WPCOM_ENTERPRISE, PLAN_MONTHLY_PERIOD, PLAN_ANNUAL_PERIOD, PLAN_BIENNIAL_PERIOD, @@ -43,6 +42,7 @@ import { isBlogger } from './is-blogger'; import { isPremium } from './is-premium'; import { isBusiness } from './is-business'; import { isEcommerce } from './is-ecommerce'; +import { isEnterprise } from './is-enterprise'; const productDependencies = { domain: { @@ -85,13 +85,7 @@ export { isBlogger } from './is-blogger'; export { isPremium } from './is-premium'; export { isBusiness } from './is-business'; export { isEcommerce } from './is-ecommerce'; - -export function isEnterprise( product ) { - product = formatProduct( product ); - assertValidProduct( product ); - - return product.product_slug === PLAN_WPCOM_ENTERPRISE; -} +export { isEnterprise } from './is-enterprise'; export function isJetpackPlanSlug( productSlug ) { return planMatches( productSlug, { group: GROUP_JETPACK } ); diff --git a/client/lib/products-values/is-enterprise.js b/client/lib/products-values/is-enterprise.js new file mode 100644 index 0000000000000..ad34e1f27c34e --- /dev/null +++ b/client/lib/products-values/is-enterprise.js @@ -0,0 +1,13 @@ +/** + * Internal dependencies + */ +import { PLAN_WPCOM_ENTERPRISE } from 'lib/plans/constants'; +import { assertValidProduct } from 'lib/products-values/utils/assert-valid-product'; +import { formatProduct } from 'lib/products-values/format-product'; + +export function isEnterprise( product ) { + product = formatProduct( product ); + assertValidProduct( product ); + + return product.product_slug === PLAN_WPCOM_ENTERPRISE; +} From dd65e4b59e9dbf2505d496e7b67042b64d4e82e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9rgio=20Gomes?= Date: Thu, 30 Jul 2020 15:55:36 +0100 Subject: [PATCH 14/71] Split out isJetpackPlanSlug --- client/lib/products-values/index.js | 8 ++------ client/lib/products-values/is-jetpack-plan-slug.js | 9 +++++++++ 2 files changed, 11 insertions(+), 6 deletions(-) create mode 100644 client/lib/products-values/is-jetpack-plan-slug.js diff --git a/client/lib/products-values/index.js b/client/lib/products-values/index.js index 76eff2e6111ea..25013c6201aeb 100644 --- a/client/lib/products-values/index.js +++ b/client/lib/products-values/index.js @@ -28,10 +28,8 @@ import { PLAN_MONTHLY_PERIOD, PLAN_ANNUAL_PERIOD, PLAN_BIENNIAL_PERIOD, - GROUP_JETPACK, } from 'lib/plans/constants'; -import { planMatches } from 'lib/plans'; import { domainProductSlugs } from 'lib/domains/constants'; import schema from './schema.json'; @@ -43,6 +41,7 @@ import { isPremium } from './is-premium'; import { isBusiness } from './is-business'; import { isEcommerce } from './is-ecommerce'; import { isEnterprise } from './is-enterprise'; +import { isJetpackPlanSlug } from './is-jetpack-plan-slug'; const productDependencies = { domain: { @@ -86,10 +85,7 @@ export { isPremium } from './is-premium'; export { isBusiness } from './is-business'; export { isEcommerce } from './is-ecommerce'; export { isEnterprise } from './is-enterprise'; - -export function isJetpackPlanSlug( productSlug ) { - return planMatches( productSlug, { group: GROUP_JETPACK } ); -} +export { isJetpackPlanSlug } from './is-jetpack-plan-slug'; export function isJetpackPlan( product ) { product = formatProduct( product ); diff --git a/client/lib/products-values/is-jetpack-plan-slug.js b/client/lib/products-values/is-jetpack-plan-slug.js new file mode 100644 index 0000000000000..5beac01aec88a --- /dev/null +++ b/client/lib/products-values/is-jetpack-plan-slug.js @@ -0,0 +1,9 @@ +/** + * Internal dependencies + */ +import { GROUP_JETPACK } from 'lib/plans/constants'; +import { planMatches } from 'lib/plans'; + +export function isJetpackPlanSlug( productSlug ) { + return planMatches( productSlug, { group: GROUP_JETPACK } ); +} From 1534e3b5ebacebfa647c7875e7e1557089b768fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9rgio=20Gomes?= Date: Thu, 30 Jul 2020 15:57:14 +0100 Subject: [PATCH 15/71] Split out isJetpackPlan --- client/lib/products-values/index.js | 10 ++-------- client/lib/products-values/is-jetpack-plan.js | 13 +++++++++++++ 2 files changed, 15 insertions(+), 8 deletions(-) create mode 100644 client/lib/products-values/is-jetpack-plan.js diff --git a/client/lib/products-values/index.js b/client/lib/products-values/index.js index 25013c6201aeb..21c065e02cf66 100644 --- a/client/lib/products-values/index.js +++ b/client/lib/products-values/index.js @@ -41,7 +41,7 @@ import { isPremium } from './is-premium'; import { isBusiness } from './is-business'; import { isEcommerce } from './is-ecommerce'; import { isEnterprise } from './is-enterprise'; -import { isJetpackPlanSlug } from './is-jetpack-plan-slug'; +import { isJetpackPlan } from './is-jetpack-plan'; const productDependencies = { domain: { @@ -86,13 +86,7 @@ export { isBusiness } from './is-business'; export { isEcommerce } from './is-ecommerce'; export { isEnterprise } from './is-enterprise'; export { isJetpackPlanSlug } from './is-jetpack-plan-slug'; - -export function isJetpackPlan( product ) { - product = formatProduct( product ); - assertValidProduct( product ); - - return isJetpackPlanSlug( product.product_slug ); -} +export { isJetpackPlan } from './is-jetpack-plan'; export function isJetpackBusiness( product ) { product = formatProduct( product ); diff --git a/client/lib/products-values/is-jetpack-plan.js b/client/lib/products-values/is-jetpack-plan.js new file mode 100644 index 0000000000000..2476c6ec0bc9d --- /dev/null +++ b/client/lib/products-values/is-jetpack-plan.js @@ -0,0 +1,13 @@ +/** + * Internal dependencies + */ +import { assertValidProduct } from 'lib/products-values/utils/assert-valid-product'; +import { formatProduct } from 'lib/products-values/format-product'; +import { isJetpackPlanSlug } from 'lib/products-values/is-jetpack-plan-slug'; + +export function isJetpackPlan( product ) { + product = formatProduct( product ); + assertValidProduct( product ); + + return isJetpackPlanSlug( product.product_slug ); +} From 1c9617ff41912c46e7e260dd233d8cac7356e97e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9rgio=20Gomes?= Date: Thu, 30 Jul 2020 15:59:09 +0100 Subject: [PATCH 16/71] Split out isJetpackBusiness --- client/lib/products-values/index.js | 8 +------- client/lib/products-values/is-jetpack-business.js | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 7 deletions(-) create mode 100644 client/lib/products-values/is-jetpack-business.js diff --git a/client/lib/products-values/index.js b/client/lib/products-values/index.js index 21c065e02cf66..359a972546763 100644 --- a/client/lib/products-values/index.js +++ b/client/lib/products-values/index.js @@ -87,13 +87,7 @@ export { isEcommerce } from './is-ecommerce'; export { isEnterprise } from './is-enterprise'; export { isJetpackPlanSlug } from './is-jetpack-plan-slug'; export { isJetpackPlan } from './is-jetpack-plan'; - -export function isJetpackBusiness( product ) { - product = formatProduct( product ); - assertValidProduct( product ); - - return isBusiness( product ) && isJetpackPlan( product ); -} +export { isJetpackBusiness } from './is-jetpack-business'; export function isJetpackPremium( product ) { product = formatProduct( product ); diff --git a/client/lib/products-values/is-jetpack-business.js b/client/lib/products-values/is-jetpack-business.js new file mode 100644 index 0000000000000..f1936d1f1c6fa --- /dev/null +++ b/client/lib/products-values/is-jetpack-business.js @@ -0,0 +1,14 @@ +/** + * Internal dependencies + */ +import { assertValidProduct } from 'lib/products-values/utils/assert-valid-product'; +import { formatProduct } from 'lib/products-values/format-product'; +import { isJetpackPlan } from 'lib/products-values/is-jetpack-plan'; +import { isBusiness } from 'lib/products-values/is-business'; + +export function isJetpackBusiness( product ) { + product = formatProduct( product ); + assertValidProduct( product ); + + return isBusiness( product ) && isJetpackPlan( product ); +} From 1c8b46ae5d9e961e7f77c8a657c608d2d739d994 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9rgio=20Gomes?= Date: Thu, 30 Jul 2020 16:00:26 +0100 Subject: [PATCH 17/71] Split out isJetpackPremium --- client/lib/products-values/index.js | 8 +------- client/lib/products-values/is-jetpack-premium.js | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 7 deletions(-) create mode 100644 client/lib/products-values/is-jetpack-premium.js diff --git a/client/lib/products-values/index.js b/client/lib/products-values/index.js index 359a972546763..52c632c2742e5 100644 --- a/client/lib/products-values/index.js +++ b/client/lib/products-values/index.js @@ -88,13 +88,7 @@ export { isEnterprise } from './is-enterprise'; export { isJetpackPlanSlug } from './is-jetpack-plan-slug'; export { isJetpackPlan } from './is-jetpack-plan'; export { isJetpackBusiness } from './is-jetpack-business'; - -export function isJetpackPremium( product ) { - product = formatProduct( product ); - assertValidProduct( product ); - - return isPremium( product ) && isJetpackPlan( product ); -} +export { isJetpackPremium } from './is-jetpack-premium'; export function isVipPlan( product ) { product = formatProduct( product ); diff --git a/client/lib/products-values/is-jetpack-premium.js b/client/lib/products-values/is-jetpack-premium.js new file mode 100644 index 0000000000000..460d961a01b0a --- /dev/null +++ b/client/lib/products-values/is-jetpack-premium.js @@ -0,0 +1,14 @@ +/** + * Internal dependencies + */ +import { assertValidProduct } from 'lib/products-values/utils/assert-valid-product'; +import { formatProduct } from 'lib/products-values/format-product'; +import { isJetpackPlan } from 'lib/products-values/is-jetpack-plan'; +import { isPremium } from 'lib/products-values/is-premium'; + +export function isJetpackPremium( product ) { + product = formatProduct( product ); + assertValidProduct( product ); + + return isPremium( product ) && isJetpackPlan( product ); +} From f74a1b8f4ec56005d9e4e069453a09a8428f8aa2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9rgio=20Gomes?= Date: Thu, 30 Jul 2020 16:01:36 +0100 Subject: [PATCH 18/71] Split out isVipPlan --- client/lib/products-values/index.js | 8 +------- client/lib/products-values/is-vip-plan.js | 12 ++++++++++++ 2 files changed, 13 insertions(+), 7 deletions(-) create mode 100644 client/lib/products-values/is-vip-plan.js diff --git a/client/lib/products-values/index.js b/client/lib/products-values/index.js index 52c632c2742e5..33ef037ed4699 100644 --- a/client/lib/products-values/index.js +++ b/client/lib/products-values/index.js @@ -89,13 +89,7 @@ export { isJetpackPlanSlug } from './is-jetpack-plan-slug'; export { isJetpackPlan } from './is-jetpack-plan'; export { isJetpackBusiness } from './is-jetpack-business'; export { isJetpackPremium } from './is-jetpack-premium'; - -export function isVipPlan( product ) { - product = formatProduct( product ); - assertValidProduct( product ); - - return 'vip' === product.product_slug; -} +export { isVipPlan } from './is-vip-plan'; export function isJetpackMonthlyPlan( product ) { return isMonthly( product ) && isJetpackPlan( product ); diff --git a/client/lib/products-values/is-vip-plan.js b/client/lib/products-values/is-vip-plan.js new file mode 100644 index 0000000000000..99e3385db70c9 --- /dev/null +++ b/client/lib/products-values/is-vip-plan.js @@ -0,0 +1,12 @@ +/** + * Internal dependencies + */ +import { assertValidProduct } from 'lib/products-values/utils/assert-valid-product'; +import { formatProduct } from 'lib/products-values/format-product'; + +export function isVipPlan( product ) { + product = formatProduct( product ); + assertValidProduct( product ); + + return 'vip' === product.product_slug; +} From a215613d521f51e3c768ce365633e0ff0e1e30dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9rgio=20Gomes?= Date: Thu, 30 Jul 2020 16:04:23 +0100 Subject: [PATCH 19/71] Split out isMonthly --- client/lib/products-values/index.js | 10 ++-------- client/lib/products-values/is-monthly.js | 13 +++++++++++++ 2 files changed, 15 insertions(+), 8 deletions(-) create mode 100644 client/lib/products-values/is-monthly.js diff --git a/client/lib/products-values/index.js b/client/lib/products-values/index.js index 33ef037ed4699..d57b4c920249f 100644 --- a/client/lib/products-values/index.js +++ b/client/lib/products-values/index.js @@ -25,7 +25,6 @@ import { PLAN_PERSONAL, PLAN_PERSONAL_2_YEARS, PLAN_HOST_BUNDLE, - PLAN_MONTHLY_PERIOD, PLAN_ANNUAL_PERIOD, PLAN_BIENNIAL_PERIOD, } from 'lib/plans/constants'; @@ -42,6 +41,7 @@ import { isBusiness } from './is-business'; import { isEcommerce } from './is-ecommerce'; import { isEnterprise } from './is-enterprise'; import { isJetpackPlan } from './is-jetpack-plan'; +import { isMonthly } from './is-monthly'; const productDependencies = { domain: { @@ -90,6 +90,7 @@ export { isJetpackPlan } from './is-jetpack-plan'; export { isJetpackBusiness } from './is-jetpack-business'; export { isJetpackPremium } from './is-jetpack-premium'; export { isVipPlan } from './is-vip-plan'; +export { isMonthly } from './is-monthly'; export function isJetpackMonthlyPlan( product ) { return isMonthly( product ) && isJetpackPlan( product ); @@ -152,13 +153,6 @@ export function getProductFromSlug( productSlug ) { return productSlug; // Consistent behavior with `getPlan`. } -export function isMonthly( rawProduct ) { - const product = formatProduct( rawProduct ); - assertValidProduct( product ); - - return parseInt( product.bill_period, 10 ) === PLAN_MONTHLY_PERIOD; -} - export function isYearly( rawProduct ) { const product = formatProduct( rawProduct ); assertValidProduct( product ); diff --git a/client/lib/products-values/is-monthly.js b/client/lib/products-values/is-monthly.js new file mode 100644 index 0000000000000..cfd6a3483cbe6 --- /dev/null +++ b/client/lib/products-values/is-monthly.js @@ -0,0 +1,13 @@ +/** + * Internal dependencies + */ +import { PLAN_MONTHLY_PERIOD } from 'lib/plans/constants'; +import { assertValidProduct } from 'lib/products-values/utils/assert-valid-product'; +import { formatProduct } from 'lib/products-values/format-product'; + +export function isMonthly( rawProduct ) { + const product = formatProduct( rawProduct ); + assertValidProduct( product ); + + return parseInt( product.bill_period, 10 ) === PLAN_MONTHLY_PERIOD; +} From 8477b53510d9e7f2ddb49ce5a718bc0b59fa30aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9rgio=20Gomes?= Date: Thu, 30 Jul 2020 16:05:44 +0100 Subject: [PATCH 20/71] Split out isYearly --- client/lib/products-values/index.js | 9 +-------- client/lib/products-values/is-yearly.js | 13 +++++++++++++ 2 files changed, 14 insertions(+), 8 deletions(-) create mode 100644 client/lib/products-values/is-yearly.js diff --git a/client/lib/products-values/index.js b/client/lib/products-values/index.js index d57b4c920249f..b622ee235ca34 100644 --- a/client/lib/products-values/index.js +++ b/client/lib/products-values/index.js @@ -25,7 +25,6 @@ import { PLAN_PERSONAL, PLAN_PERSONAL_2_YEARS, PLAN_HOST_BUNDLE, - PLAN_ANNUAL_PERIOD, PLAN_BIENNIAL_PERIOD, } from 'lib/plans/constants'; @@ -91,6 +90,7 @@ export { isJetpackBusiness } from './is-jetpack-business'; export { isJetpackPremium } from './is-jetpack-premium'; export { isVipPlan } from './is-vip-plan'; export { isMonthly } from './is-monthly'; +export { isYearly } from './is-yearly'; export function isJetpackMonthlyPlan( product ) { return isMonthly( product ) && isJetpackPlan( product ); @@ -153,13 +153,6 @@ export function getProductFromSlug( productSlug ) { return productSlug; // Consistent behavior with `getPlan`. } -export function isYearly( rawProduct ) { - const product = formatProduct( rawProduct ); - assertValidProduct( product ); - - return parseInt( product.bill_period, 10 ) === PLAN_ANNUAL_PERIOD; -} - export function isBiennially( rawProduct ) { const product = formatProduct( rawProduct ); assertValidProduct( product ); diff --git a/client/lib/products-values/is-yearly.js b/client/lib/products-values/is-yearly.js new file mode 100644 index 0000000000000..bf8218d87fd30 --- /dev/null +++ b/client/lib/products-values/is-yearly.js @@ -0,0 +1,13 @@ +/** + * Internal dependencies + */ +import { PLAN_ANNUAL_PERIOD } from 'lib/plans/constants'; +import { assertValidProduct } from 'lib/products-values/utils/assert-valid-product'; +import { formatProduct } from 'lib/products-values/format-product'; + +export function isYearly( rawProduct ) { + const product = formatProduct( rawProduct ); + assertValidProduct( product ); + + return parseInt( product.bill_period, 10 ) === PLAN_ANNUAL_PERIOD; +} From 754ab727aa0c3d5d36fcd08d2cc6a278fca70e12 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9rgio=20Gomes?= Date: Thu, 30 Jul 2020 16:07:44 +0100 Subject: [PATCH 21/71] Split out isBiennially --- client/lib/products-values/index.js | 9 +-------- client/lib/products-values/is-biennially.js | 13 +++++++++++++ 2 files changed, 14 insertions(+), 8 deletions(-) create mode 100644 client/lib/products-values/is-biennially.js diff --git a/client/lib/products-values/index.js b/client/lib/products-values/index.js index b622ee235ca34..08235bd08d098 100644 --- a/client/lib/products-values/index.js +++ b/client/lib/products-values/index.js @@ -25,7 +25,6 @@ import { PLAN_PERSONAL, PLAN_PERSONAL_2_YEARS, PLAN_HOST_BUNDLE, - PLAN_BIENNIAL_PERIOD, } from 'lib/plans/constants'; import { domainProductSlugs } from 'lib/domains/constants'; @@ -91,6 +90,7 @@ export { isJetpackPremium } from './is-jetpack-premium'; export { isVipPlan } from './is-vip-plan'; export { isMonthly } from './is-monthly'; export { isYearly } from './is-yearly'; +export { isBiennially } from './is-biennially'; export function isJetpackMonthlyPlan( product ) { return isMonthly( product ) && isJetpackPlan( product ); @@ -153,13 +153,6 @@ export function getProductFromSlug( productSlug ) { return productSlug; // Consistent behavior with `getPlan`. } -export function isBiennially( rawProduct ) { - const product = formatProduct( rawProduct ); - assertValidProduct( product ); - - return parseInt( product.bill_period, 10 ) === PLAN_BIENNIAL_PERIOD; -} - export function isJpphpBundle( product ) { product = formatProduct( product ); assertValidProduct( product ); diff --git a/client/lib/products-values/is-biennially.js b/client/lib/products-values/is-biennially.js new file mode 100644 index 0000000000000..ab3375cb70424 --- /dev/null +++ b/client/lib/products-values/is-biennially.js @@ -0,0 +1,13 @@ +/** + * Internal dependencies + */ +import { PLAN_BIENNIAL_PERIOD } from 'lib/plans/constants'; +import { assertValidProduct } from 'lib/products-values/utils/assert-valid-product'; +import { formatProduct } from 'lib/products-values/format-product'; + +export function isBiennially( rawProduct ) { + const product = formatProduct( rawProduct ); + assertValidProduct( product ); + + return parseInt( product.bill_period, 10 ) === PLAN_BIENNIAL_PERIOD; +} From c365962a16919aba871b2062bc0833a7366e966b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9rgio=20Gomes?= Date: Thu, 30 Jul 2020 16:09:16 +0100 Subject: [PATCH 22/71] Split out isJetpackMonthlyPlan --- client/lib/products-values/index.js | 6 +----- client/lib/products-values/is-jetpack-monthly-plan.js | 9 +++++++++ 2 files changed, 10 insertions(+), 5 deletions(-) create mode 100644 client/lib/products-values/is-jetpack-monthly-plan.js diff --git a/client/lib/products-values/index.js b/client/lib/products-values/index.js index 08235bd08d098..f4e2164364cf8 100644 --- a/client/lib/products-values/index.js +++ b/client/lib/products-values/index.js @@ -39,7 +39,6 @@ import { isBusiness } from './is-business'; import { isEcommerce } from './is-ecommerce'; import { isEnterprise } from './is-enterprise'; import { isJetpackPlan } from './is-jetpack-plan'; -import { isMonthly } from './is-monthly'; const productDependencies = { domain: { @@ -91,10 +90,7 @@ export { isVipPlan } from './is-vip-plan'; export { isMonthly } from './is-monthly'; export { isYearly } from './is-yearly'; export { isBiennially } from './is-biennially'; - -export function isJetpackMonthlyPlan( product ) { - return isMonthly( product ) && isJetpackPlan( product ); -} +export { isJetpackMonthlyPlan } from './is-jetpack-monthly-plan'; export function isJetpackBackupSlug( productSlug ) { return includes( JETPACK_BACKUP_PRODUCTS, productSlug ); diff --git a/client/lib/products-values/is-jetpack-monthly-plan.js b/client/lib/products-values/is-jetpack-monthly-plan.js new file mode 100644 index 0000000000000..a8cd18bccb9c6 --- /dev/null +++ b/client/lib/products-values/is-jetpack-monthly-plan.js @@ -0,0 +1,9 @@ +/** + * Internal dependencies + */ +import { isJetpackPlan } from 'lib/products-values/is-jetpack-plan'; +import { isMonthly } from 'lib/products-values/is-monthly'; + +export function isJetpackMonthlyPlan( product ) { + return isMonthly( product ) && isJetpackPlan( product ); +} From 17ed48906df0f21c78b2b7a2edced8fa208f9ff8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9rgio=20Gomes?= Date: Thu, 30 Jul 2020 16:11:39 +0100 Subject: [PATCH 23/71] Split out isJetpackBackupSlug --- client/lib/products-values/index.js | 6 ++---- client/lib/products-values/is-jetpack-backup-slug.js | 9 +++++++++ 2 files changed, 11 insertions(+), 4 deletions(-) create mode 100644 client/lib/products-values/is-jetpack-backup-slug.js diff --git a/client/lib/products-values/index.js b/client/lib/products-values/index.js index f4e2164364cf8..1fca06af55455 100644 --- a/client/lib/products-values/index.js +++ b/client/lib/products-values/index.js @@ -39,6 +39,7 @@ import { isBusiness } from './is-business'; import { isEcommerce } from './is-ecommerce'; import { isEnterprise } from './is-enterprise'; import { isJetpackPlan } from './is-jetpack-plan'; +import { isJetpackBackupSlug } from './is-jetpack-backup-slug'; const productDependencies = { domain: { @@ -91,10 +92,7 @@ export { isMonthly } from './is-monthly'; export { isYearly } from './is-yearly'; export { isBiennially } from './is-biennially'; export { isJetpackMonthlyPlan } from './is-jetpack-monthly-plan'; - -export function isJetpackBackupSlug( productSlug ) { - return includes( JETPACK_BACKUP_PRODUCTS, productSlug ); -} +export { isJetpackBackupSlug } from './is-jetpack-backup-slug'; export function isJetpackBackup( product ) { product = formatProduct( product ); diff --git a/client/lib/products-values/is-jetpack-backup-slug.js b/client/lib/products-values/is-jetpack-backup-slug.js new file mode 100644 index 0000000000000..95bfb7f50cbba --- /dev/null +++ b/client/lib/products-values/is-jetpack-backup-slug.js @@ -0,0 +1,9 @@ +/** + * External dependencies + */ +import { includes } from 'lodash'; +import { JETPACK_BACKUP_PRODUCTS } from 'lib/products-values/constants'; + +export function isJetpackBackupSlug( productSlug ) { + return includes( JETPACK_BACKUP_PRODUCTS, productSlug ); +} From e548c07d043f7ba44c393d1f0279acd3ac49e8ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9rgio=20Gomes?= Date: Thu, 30 Jul 2020 16:12:59 +0100 Subject: [PATCH 24/71] Split out isJetpackBackup --- client/lib/products-values/index.js | 8 +------- client/lib/products-values/is-jetpack-backup.js | 13 +++++++++++++ 2 files changed, 14 insertions(+), 7 deletions(-) create mode 100644 client/lib/products-values/is-jetpack-backup.js diff --git a/client/lib/products-values/index.js b/client/lib/products-values/index.js index 1fca06af55455..ac6d29cfd0cbd 100644 --- a/client/lib/products-values/index.js +++ b/client/lib/products-values/index.js @@ -93,13 +93,7 @@ export { isYearly } from './is-yearly'; export { isBiennially } from './is-biennially'; export { isJetpackMonthlyPlan } from './is-jetpack-monthly-plan'; export { isJetpackBackupSlug } from './is-jetpack-backup-slug'; - -export function isJetpackBackup( product ) { - product = formatProduct( product ); - assertValidProduct( product ); - - return isJetpackBackupSlug( product.product_slug ); -} +export { isJetpackBackup } from './is-jetpack-backup'; export function isJetpackScanSlug( productSlug ) { return JETPACK_SCAN_PRODUCTS.includes( productSlug ); diff --git a/client/lib/products-values/is-jetpack-backup.js b/client/lib/products-values/is-jetpack-backup.js new file mode 100644 index 0000000000000..4d642ef027b72 --- /dev/null +++ b/client/lib/products-values/is-jetpack-backup.js @@ -0,0 +1,13 @@ +/** + * Internal dependencies + */ +import { assertValidProduct } from 'lib/products-values/utils/assert-valid-product'; +import { formatProduct } from 'lib/products-values/format-product'; +import { isJetpackBackupSlug } from 'lib/products-values/is-jetpack-backup-slug'; + +export function isJetpackBackup( product ) { + product = formatProduct( product ); + assertValidProduct( product ); + + return isJetpackBackupSlug( product.product_slug ); +} From 42a25c97941d4e2e64009f5e12ac2c62680bc4ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9rgio=20Gomes?= Date: Thu, 30 Jul 2020 16:14:41 +0100 Subject: [PATCH 25/71] Split out isJetpackScanSlug --- client/lib/products-values/index.js | 6 ++---- client/lib/products-values/is-jetpack-scan-slug.js | 8 ++++++++ 2 files changed, 10 insertions(+), 4 deletions(-) create mode 100644 client/lib/products-values/is-jetpack-scan-slug.js diff --git a/client/lib/products-values/index.js b/client/lib/products-values/index.js index ac6d29cfd0cbd..b6e056c5f00b6 100644 --- a/client/lib/products-values/index.js +++ b/client/lib/products-values/index.js @@ -40,6 +40,7 @@ import { isEcommerce } from './is-ecommerce'; import { isEnterprise } from './is-enterprise'; import { isJetpackPlan } from './is-jetpack-plan'; import { isJetpackBackupSlug } from './is-jetpack-backup-slug'; +import { isJetpackScanSlug } from './is-jetpack-scan-slug'; const productDependencies = { domain: { @@ -94,10 +95,7 @@ export { isBiennially } from './is-biennially'; export { isJetpackMonthlyPlan } from './is-jetpack-monthly-plan'; export { isJetpackBackupSlug } from './is-jetpack-backup-slug'; export { isJetpackBackup } from './is-jetpack-backup'; - -export function isJetpackScanSlug( productSlug ) { - return JETPACK_SCAN_PRODUCTS.includes( productSlug ); -} +export { isJetpackScanSlug } from './is-jetpack-scan-slug'; export function isJetpackAntiSpamSlug( productSlug ) { return JETPACK_ANTI_SPAM_PRODUCTS.includes( productSlug ); diff --git a/client/lib/products-values/is-jetpack-scan-slug.js b/client/lib/products-values/is-jetpack-scan-slug.js new file mode 100644 index 0000000000000..9e88b78c51292 --- /dev/null +++ b/client/lib/products-values/is-jetpack-scan-slug.js @@ -0,0 +1,8 @@ +/** + * External dependencies + */ +import { JETPACK_SCAN_PRODUCTS } from 'lib/products-values/constants'; + +export function isJetpackScanSlug( productSlug ) { + return JETPACK_SCAN_PRODUCTS.includes( productSlug ); +} From 909d8e7b436ddad7cbc592b7ac0c7ce07b620bd6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9rgio=20Gomes?= Date: Thu, 30 Jul 2020 16:16:17 +0100 Subject: [PATCH 26/71] Split out isJetpackAntiSpamSlug --- client/lib/products-values/index.js | 7 ++----- client/lib/products-values/is-jetpack-anti-spam-slug.js | 8 ++++++++ 2 files changed, 10 insertions(+), 5 deletions(-) create mode 100644 client/lib/products-values/is-jetpack-anti-spam-slug.js diff --git a/client/lib/products-values/index.js b/client/lib/products-values/index.js index b6e056c5f00b6..6e8fd74dc4a18 100644 --- a/client/lib/products-values/index.js +++ b/client/lib/products-values/index.js @@ -13,7 +13,6 @@ import { JETPACK_BACKUP_PRODUCTS, JETPACK_PRODUCTS_LIST, JETPACK_SCAN_PRODUCTS, - JETPACK_ANTI_SPAM_PRODUCTS, } from './constants'; import { PRODUCTS_LIST } from './products-list'; import { @@ -41,6 +40,7 @@ import { isEnterprise } from './is-enterprise'; import { isJetpackPlan } from './is-jetpack-plan'; import { isJetpackBackupSlug } from './is-jetpack-backup-slug'; import { isJetpackScanSlug } from './is-jetpack-scan-slug'; +import { isJetpackAntiSpamSlug } from './is-jetpack-anti-spam-slug'; const productDependencies = { domain: { @@ -96,10 +96,7 @@ export { isJetpackMonthlyPlan } from './is-jetpack-monthly-plan'; export { isJetpackBackupSlug } from './is-jetpack-backup-slug'; export { isJetpackBackup } from './is-jetpack-backup'; export { isJetpackScanSlug } from './is-jetpack-scan-slug'; - -export function isJetpackAntiSpamSlug( productSlug ) { - return JETPACK_ANTI_SPAM_PRODUCTS.includes( productSlug ); -} +export { isJetpackAntiSpamSlug } from './is-jetpack-anti-spam-slug'; export function isJetpackScan( product ) { product = formatProduct( product ); diff --git a/client/lib/products-values/is-jetpack-anti-spam-slug.js b/client/lib/products-values/is-jetpack-anti-spam-slug.js new file mode 100644 index 0000000000000..1becd1c0b9b51 --- /dev/null +++ b/client/lib/products-values/is-jetpack-anti-spam-slug.js @@ -0,0 +1,8 @@ +/** + * External dependencies + */ +import { JETPACK_ANTI_SPAM_PRODUCTS } from 'lib/products-values/constants'; + +export function isJetpackAntiSpamSlug( productSlug ) { + return JETPACK_ANTI_SPAM_PRODUCTS.includes( productSlug ); +} From 72335eeb7d75b13504f95db84edde80430b19840 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9rgio=20Gomes?= Date: Thu, 30 Jul 2020 16:17:55 +0100 Subject: [PATCH 27/71] Split out isJetpackScan --- client/lib/products-values/index.js | 9 +-------- client/lib/products-values/is-jetpack-scan.js | 13 +++++++++++++ 2 files changed, 14 insertions(+), 8 deletions(-) create mode 100644 client/lib/products-values/is-jetpack-scan.js diff --git a/client/lib/products-values/index.js b/client/lib/products-values/index.js index 6e8fd74dc4a18..b298d9aae9d92 100644 --- a/client/lib/products-values/index.js +++ b/client/lib/products-values/index.js @@ -39,7 +39,6 @@ import { isEcommerce } from './is-ecommerce'; import { isEnterprise } from './is-enterprise'; import { isJetpackPlan } from './is-jetpack-plan'; import { isJetpackBackupSlug } from './is-jetpack-backup-slug'; -import { isJetpackScanSlug } from './is-jetpack-scan-slug'; import { isJetpackAntiSpamSlug } from './is-jetpack-anti-spam-slug'; const productDependencies = { @@ -97,13 +96,7 @@ export { isJetpackBackupSlug } from './is-jetpack-backup-slug'; export { isJetpackBackup } from './is-jetpack-backup'; export { isJetpackScanSlug } from './is-jetpack-scan-slug'; export { isJetpackAntiSpamSlug } from './is-jetpack-anti-spam-slug'; - -export function isJetpackScan( product ) { - product = formatProduct( product ); - assertValidProduct( product ); - - return isJetpackScanSlug( product.product_slug ); -} +export { isJetpackScan } from './is-jetpack-scan'; export function isJetpackAntiSpam( product ) { product = formatProduct( product ); diff --git a/client/lib/products-values/is-jetpack-scan.js b/client/lib/products-values/is-jetpack-scan.js new file mode 100644 index 0000000000000..68421dbcfbb15 --- /dev/null +++ b/client/lib/products-values/is-jetpack-scan.js @@ -0,0 +1,13 @@ +/** + * Internal dependencies + */ +import { assertValidProduct } from 'lib/products-values/utils/assert-valid-product'; +import { formatProduct } from 'lib/products-values/format-product'; +import { isJetpackScanSlug } from 'lib/products-values/is-jetpack-scan-slug'; + +export function isJetpackScan( product ) { + product = formatProduct( product ); + assertValidProduct( product ); + + return isJetpackScanSlug( product.product_slug ); +} From 2d9fa388989591698ab65f0c49e1c9323bce2b1e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9rgio=20Gomes?= Date: Thu, 30 Jul 2020 16:19:09 +0100 Subject: [PATCH 28/71] Split out isJetpackAntiSpam --- client/lib/products-values/index.js | 9 +-------- client/lib/products-values/is-jetpack-anti-spam.js | 13 +++++++++++++ 2 files changed, 14 insertions(+), 8 deletions(-) create mode 100644 client/lib/products-values/is-jetpack-anti-spam.js diff --git a/client/lib/products-values/index.js b/client/lib/products-values/index.js index b298d9aae9d92..668e5427d89ed 100644 --- a/client/lib/products-values/index.js +++ b/client/lib/products-values/index.js @@ -39,7 +39,6 @@ import { isEcommerce } from './is-ecommerce'; import { isEnterprise } from './is-enterprise'; import { isJetpackPlan } from './is-jetpack-plan'; import { isJetpackBackupSlug } from './is-jetpack-backup-slug'; -import { isJetpackAntiSpamSlug } from './is-jetpack-anti-spam-slug'; const productDependencies = { domain: { @@ -97,13 +96,7 @@ export { isJetpackBackup } from './is-jetpack-backup'; export { isJetpackScanSlug } from './is-jetpack-scan-slug'; export { isJetpackAntiSpamSlug } from './is-jetpack-anti-spam-slug'; export { isJetpackScan } from './is-jetpack-scan'; - -export function isJetpackAntiSpam( product ) { - product = formatProduct( product ); - assertValidProduct( product ); - - return isJetpackAntiSpamSlug( product.product_slug ); -} +export { isJetpackAntiSpam } from './is-jetpack-anti-spam'; export function isJetpackCloudProductSlug( productSlug ) { return ( diff --git a/client/lib/products-values/is-jetpack-anti-spam.js b/client/lib/products-values/is-jetpack-anti-spam.js new file mode 100644 index 0000000000000..26335a0824118 --- /dev/null +++ b/client/lib/products-values/is-jetpack-anti-spam.js @@ -0,0 +1,13 @@ +/** + * Internal dependencies + */ +import { assertValidProduct } from 'lib/products-values/utils/assert-valid-product'; +import { formatProduct } from 'lib/products-values/format-product'; +import { isJetpackAntiSpamSlug } from 'lib/products-values/is-jetpack-anti-spam-slug'; + +export function isJetpackAntiSpam( product ) { + product = formatProduct( product ); + assertValidProduct( product ); + + return isJetpackAntiSpamSlug( product.product_slug ); +} From 21516646399b517a2e0f5103609c91298858164b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9rgio=20Gomes?= Date: Thu, 30 Jul 2020 16:20:51 +0100 Subject: [PATCH 29/71] Split out isJetpackCloudProductSlug --- client/lib/products-values/index.js | 9 +-------- .../products-values/is-jetpack-cloud-product-slug.js | 10 ++++++++++ 2 files changed, 11 insertions(+), 8 deletions(-) create mode 100644 client/lib/products-values/is-jetpack-cloud-product-slug.js diff --git a/client/lib/products-values/index.js b/client/lib/products-values/index.js index 668e5427d89ed..63312f66b80df 100644 --- a/client/lib/products-values/index.js +++ b/client/lib/products-values/index.js @@ -10,9 +10,7 @@ import { isGSuiteOrExtraLicenseProductSlug } from 'lib/gsuite'; import { getJetpackProductsDisplayNames, getJetpackProductsTaglines, - JETPACK_BACKUP_PRODUCTS, JETPACK_PRODUCTS_LIST, - JETPACK_SCAN_PRODUCTS, } from './constants'; import { PRODUCTS_LIST } from './products-list'; import { @@ -97,12 +95,7 @@ export { isJetpackScanSlug } from './is-jetpack-scan-slug'; export { isJetpackAntiSpamSlug } from './is-jetpack-anti-spam-slug'; export { isJetpackScan } from './is-jetpack-scan'; export { isJetpackAntiSpam } from './is-jetpack-anti-spam'; - -export function isJetpackCloudProductSlug( productSlug ) { - return ( - JETPACK_SCAN_PRODUCTS.includes( productSlug ) || JETPACK_BACKUP_PRODUCTS.includes( productSlug ) - ); -} +export { isJetpackCloudProductSlug } from './is-jetpack-cloud-product-slug'; export function isJetpackProductSlug( productSlug ) { return includes( JETPACK_PRODUCTS_LIST, productSlug ); diff --git a/client/lib/products-values/is-jetpack-cloud-product-slug.js b/client/lib/products-values/is-jetpack-cloud-product-slug.js new file mode 100644 index 0000000000000..be52c27707577 --- /dev/null +++ b/client/lib/products-values/is-jetpack-cloud-product-slug.js @@ -0,0 +1,10 @@ +/** + * External dependencies + */ +import { JETPACK_BACKUP_PRODUCTS, JETPACK_SCAN_PRODUCTS } from 'lib/products-values/constants'; + +export function isJetpackCloudProductSlug( productSlug ) { + return ( + JETPACK_SCAN_PRODUCTS.includes( productSlug ) || JETPACK_BACKUP_PRODUCTS.includes( productSlug ) + ); +} From 3126d0139fd6e9a00a2c015209ee525764d7b90c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9rgio=20Gomes?= Date: Thu, 30 Jul 2020 16:22:43 +0100 Subject: [PATCH 30/71] Split out isJetpackProductSlug --- client/lib/products-values/index.js | 8 +++----- .../lib/products-values/is-jetpack-product-slug.js | 13 +++++++++++++ 2 files changed, 16 insertions(+), 5 deletions(-) create mode 100644 client/lib/products-values/is-jetpack-product-slug.js diff --git a/client/lib/products-values/index.js b/client/lib/products-values/index.js index 63312f66b80df..64da4e350e557 100644 --- a/client/lib/products-values/index.js +++ b/client/lib/products-values/index.js @@ -1,7 +1,7 @@ /** * External dependencies */ -import { get, includes, pick } from 'lodash'; +import { get, pick } from 'lodash'; /** * Internal dependencies @@ -37,6 +37,7 @@ import { isEcommerce } from './is-ecommerce'; import { isEnterprise } from './is-enterprise'; import { isJetpackPlan } from './is-jetpack-plan'; import { isJetpackBackupSlug } from './is-jetpack-backup-slug'; +import { isJetpackProductSlug } from './is-jetpack-product-slug'; const productDependencies = { domain: { @@ -96,10 +97,7 @@ export { isJetpackAntiSpamSlug } from './is-jetpack-anti-spam-slug'; export { isJetpackScan } from './is-jetpack-scan'; export { isJetpackAntiSpam } from './is-jetpack-anti-spam'; export { isJetpackCloudProductSlug } from './is-jetpack-cloud-product-slug'; - -export function isJetpackProductSlug( productSlug ) { - return includes( JETPACK_PRODUCTS_LIST, productSlug ); -} +export { isJetpackProductSlug } from './is-jetpack-product-slug'; export function isJetpackProduct( product ) { product = formatProduct( product ); diff --git a/client/lib/products-values/is-jetpack-product-slug.js b/client/lib/products-values/is-jetpack-product-slug.js new file mode 100644 index 0000000000000..5d53aa6277fab --- /dev/null +++ b/client/lib/products-values/is-jetpack-product-slug.js @@ -0,0 +1,13 @@ +/** + * External dependencies + */ +import { includes } from 'lodash'; + +/** + * External dependencies + */ +import { JETPACK_PRODUCTS_LIST } from 'lib/products-values/constants'; + +export function isJetpackProductSlug( productSlug ) { + return includes( JETPACK_PRODUCTS_LIST, productSlug ); +} From ca8daf42428a4e2a22908ab5aae3326d2ab2bebc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9rgio=20Gomes?= Date: Thu, 30 Jul 2020 16:23:57 +0100 Subject: [PATCH 31/71] Split out isJetpackProduct --- client/lib/products-values/index.js | 9 +-------- client/lib/products-values/is-jetpack-product.js | 13 +++++++++++++ 2 files changed, 14 insertions(+), 8 deletions(-) create mode 100644 client/lib/products-values/is-jetpack-product.js diff --git a/client/lib/products-values/index.js b/client/lib/products-values/index.js index 64da4e350e557..ad930340a09a4 100644 --- a/client/lib/products-values/index.js +++ b/client/lib/products-values/index.js @@ -37,7 +37,6 @@ import { isEcommerce } from './is-ecommerce'; import { isEnterprise } from './is-enterprise'; import { isJetpackPlan } from './is-jetpack-plan'; import { isJetpackBackupSlug } from './is-jetpack-backup-slug'; -import { isJetpackProductSlug } from './is-jetpack-product-slug'; const productDependencies = { domain: { @@ -98,13 +97,7 @@ export { isJetpackScan } from './is-jetpack-scan'; export { isJetpackAntiSpam } from './is-jetpack-anti-spam'; export { isJetpackCloudProductSlug } from './is-jetpack-cloud-product-slug'; export { isJetpackProductSlug } from './is-jetpack-product-slug'; - -export function isJetpackProduct( product ) { - product = formatProduct( product ); - assertValidProduct( product ); - - return isJetpackProductSlug( product.product_slug ); -} +export { isJetpackProduct } from './is-jetpack-product'; export function getProductFromSlug( productSlug ) { if ( PRODUCTS_LIST[ productSlug ] ) { diff --git a/client/lib/products-values/is-jetpack-product.js b/client/lib/products-values/is-jetpack-product.js new file mode 100644 index 0000000000000..cca30151072c4 --- /dev/null +++ b/client/lib/products-values/is-jetpack-product.js @@ -0,0 +1,13 @@ +/** + * Internal dependencies + */ +import { assertValidProduct } from 'lib/products-values/utils/assert-valid-product'; +import { formatProduct } from 'lib/products-values/format-product'; +import { isJetpackProductSlug } from 'lib/products-values/is-jetpack-product-slug'; + +export function isJetpackProduct( product ) { + product = formatProduct( product ); + assertValidProduct( product ); + + return isJetpackProductSlug( product.product_slug ); +} From ac1a6977fbbbef78b6f4a26d57c78ad97e4bd300 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9rgio=20Gomes?= Date: Thu, 30 Jul 2020 16:42:01 +0100 Subject: [PATCH 32/71] Move translated constants to new translations file --- client/lib/products-values/constants.js | 289 ----------------- client/lib/products-values/index.js | 7 +- client/lib/products-values/products-list.ts | 3 +- client/lib/products-values/test/index.js | 8 +- client/lib/products-values/translations.js | 294 ++++++++++++++++++ client/lib/purchases/index.js | 2 +- client/my-sites/plans-features-main/index.jsx | 7 +- 7 files changed, 303 insertions(+), 307 deletions(-) create mode 100644 client/lib/products-values/translations.js diff --git a/client/lib/products-values/constants.js b/client/lib/products-values/constants.js index 0a4d7000f5cc1..4956cbd43d24c 100644 --- a/client/lib/products-values/constants.js +++ b/client/lib/products-values/constants.js @@ -1,9 +1,3 @@ -/** - * External dependencies - */ -import React from 'react'; -import { numberFormat, translate } from 'i18n-calypso'; - /** * Internal dependencies */ @@ -94,286 +88,3 @@ export const JETPACK_PRODUCT_PRICE_MATRIX = { ratio: 12, }, }; - -// Translatable strings -export const getJetpackProductsShortNames = () => { - return { - [ PRODUCT_JETPACK_BACKUP_DAILY ]: translate( 'Daily Backups' ), - [ PRODUCT_JETPACK_BACKUP_DAILY_MONTHLY ]: translate( 'Daily Backups' ), - [ PRODUCT_JETPACK_BACKUP_REALTIME ]: translate( 'Real-Time Backups' ), - [ PRODUCT_JETPACK_BACKUP_REALTIME_MONTHLY ]: translate( 'Real-Time Backups' ), - [ PRODUCT_JETPACK_SEARCH ]: translate( 'Search' ), - [ PRODUCT_JETPACK_SEARCH_MONTHLY ]: translate( 'Search' ), - [ PRODUCT_WPCOM_SEARCH ]: translate( 'Search' ), - [ PRODUCT_WPCOM_SEARCH_MONTHLY ]: translate( 'Search' ), - [ PRODUCT_JETPACK_SCAN ]: translate( 'Daily Scan' ), - [ PRODUCT_JETPACK_SCAN_MONTHLY ]: translate( 'Daily Scan' ), - [ PRODUCT_JETPACK_ANTI_SPAM ]: translate( 'Anti-Spam' ), - [ PRODUCT_JETPACK_ANTI_SPAM_MONTHLY ]: translate( 'Anti-Spam' ), - }; -}; - -export const getJetpackProductsDisplayNames = () => { - const backupDaily = ( - <> - { translate( 'Jetpack Backup {{em}}Daily{{/em}}', { - components: { - em: , - }, - } ) }{ ' ' } - - ); - const backupRealtime = ( - <> - { ' ' } - { translate( 'Jetpack Backup {{em}}Real-Time{{/em}}', { - components: { - em: , - }, - } ) }{ ' ' } - - ); - const search = translate( 'Jetpack Search' ); - const scanDaily = ( - <> - { translate( 'Jetpack Scan {{em}}Daily{{/em}}', { - components: { - em: , - }, - } ) }{ ' ' } - - ); - - const antiSpam = <>{ translate( 'Jetpack Anti-Spam' ) }; - return { - [ PRODUCT_JETPACK_BACKUP_DAILY ]: backupDaily, - [ PRODUCT_JETPACK_BACKUP_DAILY_MONTHLY ]: backupDaily, - [ PRODUCT_JETPACK_BACKUP_REALTIME ]: backupRealtime, - [ PRODUCT_JETPACK_BACKUP_REALTIME_MONTHLY ]: backupRealtime, - [ PRODUCT_JETPACK_SEARCH ]: search, - [ PRODUCT_JETPACK_SEARCH_MONTHLY ]: search, - [ PRODUCT_WPCOM_SEARCH ]: search, - [ PRODUCT_WPCOM_SEARCH_MONTHLY ]: search, - [ PRODUCT_JETPACK_SCAN ]: scanDaily, - [ PRODUCT_JETPACK_SCAN_MONTHLY ]: scanDaily, - [ PRODUCT_JETPACK_ANTI_SPAM ]: antiSpam, - [ PRODUCT_JETPACK_ANTI_SPAM_MONTHLY ]: antiSpam, - }; -}; -export const getJetpackProductsTaglines = () => { - const searchTagline = translate( 'Search your site.' ); - const scanTagline = translate( 'Scan your site.' ); - const antiSpamTagline = translate( 'Automatically clear spam from comments and forms.' ); - return { - [ PRODUCT_JETPACK_BACKUP_DAILY ]: translate( - 'Your data is being securely backed up every day with a 30-day archive.' - ), - [ PRODUCT_JETPACK_BACKUP_DAILY_MONTHLY ]: translate( - 'Your data is being securely backed up every day with a 30-day archive.' - ), - [ PRODUCT_JETPACK_BACKUP_REALTIME ]: translate( - 'Your data is being securely backed up as you edit.' - ), - [ PRODUCT_JETPACK_BACKUP_REALTIME_MONTHLY ]: translate( - 'Your data is being securely backed up as you edit.' - ), - [ PRODUCT_JETPACK_SEARCH ]: searchTagline, - [ PRODUCT_JETPACK_SEARCH_MONTHLY ]: searchTagline, - [ PRODUCT_WPCOM_SEARCH ]: searchTagline, - [ PRODUCT_WPCOM_SEARCH_MONTHLY ]: searchTagline, - [ PRODUCT_JETPACK_SCAN ]: scanTagline, - [ PRODUCT_JETPACK_SCAN_MONTHLY ]: scanTagline, - [ PRODUCT_JETPACK_ANTI_SPAM ]: antiSpamTagline, - [ PRODUCT_JETPACK_ANTI_SPAM_MONTHLY ]: antiSpamTagline, - }; -}; - -export const getJetpackProductsDescriptions = () => { - const searchDescription = translate( - 'Incredibly powerful and customizable, Jetpack Search helps your visitors instantly find the right content – right when they need it.' - ); - const scanDescription = translate( - 'Automatic scanning and one-click fixes keep your site one step ahead of security threats.' - ); - const antiSpamDescription = translate( - 'Automatically clear spam from comments and forms. Save time, get more responses, give your visitors a better experience – all without lifting a finger.' - ); - return { - [ PRODUCT_JETPACK_BACKUP_DAILY ]: translate( - 'Always-on backups ensure you never lose your site. Your changes are saved every day with a 30-day archive.' - ), - [ PRODUCT_JETPACK_BACKUP_DAILY_MONTHLY ]: translate( - 'Always-on backups ensure you never lose your site. Your changes are saved every day with a 30-day archive.' - ), - [ PRODUCT_JETPACK_BACKUP_REALTIME ]: translate( - 'Always-on backups ensure you never lose your site. Your changes are saved as you edit and you have unlimited backup archives.' - ), - [ PRODUCT_JETPACK_BACKUP_REALTIME_MONTHLY ]: translate( - 'Always-on backups ensure you never lose your site. Your changes are saved as you edit and you have unlimited backup archives.' - ), - [ PRODUCT_JETPACK_SEARCH ]: searchDescription, - [ PRODUCT_JETPACK_SEARCH_MONTHLY ]: searchDescription, - [ PRODUCT_JETPACK_SCAN ]: scanDescription, - [ PRODUCT_JETPACK_SCAN_MONTHLY ]: scanDescription, - [ PRODUCT_JETPACK_ANTI_SPAM ]: antiSpamDescription, - [ PRODUCT_JETPACK_ANTI_SPAM_MONTHLY ]: antiSpamDescription, - }; -}; - -export const getJetpackProducts = () => { - const output = [ - { - title: translate( 'Jetpack Backup' ), - description: translate( - 'Always-on backups ensure you never lose your site. Choose from real-time or daily backups.' - ), - hasPromo: true, - id: PRODUCT_JETPACK_BACKUP, - link: { - label: translate( 'Which backup option is best for me?' ), - props: { - location: 'product_jetpack_backup_description', - slug: 'which-one-do-i-need', - }, - url: JETPACK_BACKUP_PRODUCT_LANDING_PAGE_URL, - }, - options: { - yearly: JETPACK_BACKUP_PRODUCTS_YEARLY, - monthly: JETPACK_BACKUP_PRODUCTS_MONTHLY, - }, - optionShortNames: getJetpackProductsShortNames(), - optionDisplayNames: getJetpackProductsDisplayNames(), - optionDescriptions: getJetpackProductsDescriptions(), - optionsLabel: translate( 'Select a backup option:' ), - slugs: JETPACK_BACKUP_PRODUCTS, - }, - ]; - isEnabled( 'jetpack/scan-product' ) && - output.push( { - title: translate( 'Jetpack Scan' ), - description: getJetpackProductsDescriptions()[ PRODUCT_JETPACK_SCAN ], - // There is only one option per billing interval, but this - // component still needs the full display with radio buttons. - forceRadios: true, - hasPromo: false, - id: PRODUCT_JETPACK_SCAN, - link: { - label: translate( 'Learn more' ), - props: { - location: 'product_jetpack_scan_description', - slug: 'learn-more-scan', - }, - url: JETPACK_SCAN_PRODUCT_LANDING_PAGE_URL, - }, - options: { - yearly: [ PRODUCT_JETPACK_SCAN ], - monthly: [ PRODUCT_JETPACK_SCAN_MONTHLY ], - }, - optionShortNames: getJetpackProductsShortNames(), - optionDisplayNames: getJetpackProductsDisplayNames(), - optionDescriptions: getJetpackProductsDescriptions(), - optionsLabel: translate( 'Select a product option:' ), - slugs: JETPACK_SCAN_PRODUCTS, - } ); - isEnabled( 'jetpack/anti-spam-product' ) && - output.push( { - title: translate( 'Jetpack Anti-Spam' ), - description: getJetpackProductsDescriptions()[ PRODUCT_JETPACK_ANTI_SPAM ], - // There is only one option per billing interval, but this - // component still needs the full display with radio buttons. - forceRadios: true, - hasPromo: false, - id: PRODUCT_JETPACK_ANTI_SPAM, - link: { - label: translate( 'Learn more' ), - props: { - location: 'product_jetpack_anti_spam_description', - slug: 'learn-more-anti-spam', - }, - url: JETPACK_ANTI_SPAM_PRODUCT_LANDING_PAGE_URL, - }, - options: { - yearly: [ PRODUCT_JETPACK_ANTI_SPAM ], - monthly: [ PRODUCT_JETPACK_ANTI_SPAM_MONTHLY ], - }, - optionShortNames: getJetpackProductsShortNames(), - optionDisplayNames: getJetpackProductsDisplayNames(), - optionDescriptions: getJetpackProductsDescriptions(), - optionsLabel: translate( 'Select a product option:' ), - slugs: JETPACK_ANTI_SPAM_PRODUCTS, - } ); - isEnabled( 'jetpack/search-product' ) && - output.push( { - title: translate( 'Jetpack Search' ), - description: getJetpackProductsDescriptions()[ PRODUCT_JETPACK_SEARCH ], - // There is only one option per billing interval, but this - // component still needs the full display with radio buttons. - forceRadios: true, - hasPromo: false, - id: PRODUCT_JETPACK_SEARCH, - link: { - label: translate( 'Learn more' ), - props: { - location: 'product_jetpack_search_description', - slug: 'learn-more-search', - }, - url: JETPACK_SEARCH_PRODUCT_LANDING_PAGE_URL, - }, - options: { - yearly: [ PRODUCT_JETPACK_SEARCH ], - monthly: [ PRODUCT_JETPACK_SEARCH_MONTHLY ], - }, - optionShortNamesCallback: ( productObject ) => { - const numberOfDefinedTiers = 5; - switch ( productObject.price_tier_slug ) { - case JETPACK_SEARCH_TIER_UP_TO_100_RECORDS: - return translate( 'Tier 1: Up to 100 records' ); - case JETPACK_SEARCH_TIER_UP_TO_1K_RECORDS: - return translate( 'Tier 2: Up to 1,000 records' ); - case JETPACK_SEARCH_TIER_UP_TO_10K_RECORDS: - return translate( 'Tier 3: Up to 10,000 records' ); - case JETPACK_SEARCH_TIER_UP_TO_100K_RECORDS: - return translate( 'Tier 4: Up to 100,000 records' ); - case JETPACK_SEARCH_TIER_UP_TO_1M_RECORDS: - return translate( 'Tier 5: Up to 1,000,000 records' ); - case JETPACK_SEARCH_TIER_MORE_THAN_1M_RECORDS: { - // This is a catch-all tier with prices increasing - // proportionally per million records, so define fake - // tiers here to show the user what they will actually - // pay and why. - const tierNumber = - numberOfDefinedTiers + - Math.floor( productObject.price_tier_usage_quantity / 1000000 ); - const tierMaximumRecords = - 1000000 * Math.ceil( productObject.price_tier_usage_quantity / 1000000 ); - return translate( 'Tier %(tierNumber)d: Up to %(tierMaximumRecords)s records', { - args: { - tierNumber, - tierMaximumRecords: numberFormat( tierMaximumRecords ), - }, - } ); - } - default: - return null; - } - }, - optionActionButtonNames: getJetpackProductsShortNames(), - optionDisplayNames: getJetpackProductsDisplayNames(), - optionDescriptions: getJetpackProductsDescriptions(), - optionsLabelCallback: ( productObject ) => { - return translate( - 'Your current site record size: %(numberOfRecords)s record', - 'Your current site record size: %(numberOfRecords)s records', - { - count: productObject.price_tier_usage_quantity, - args: { - numberOfRecords: numberFormat( productObject.price_tier_usage_quantity ), - }, - } - ); - }, - slugs: JETPACK_SEARCH_PRODUCTS, - } ); - - return output; -}; diff --git a/client/lib/products-values/index.js b/client/lib/products-values/index.js index ad930340a09a4..5b4a387c1a448 100644 --- a/client/lib/products-values/index.js +++ b/client/lib/products-values/index.js @@ -7,11 +7,8 @@ import { get, pick } from 'lodash'; * Internal dependencies */ import { isGSuiteOrExtraLicenseProductSlug } from 'lib/gsuite'; -import { - getJetpackProductsDisplayNames, - getJetpackProductsTaglines, - JETPACK_PRODUCTS_LIST, -} from './constants'; +import { JETPACK_PRODUCTS_LIST } from './constants'; +import { getJetpackProductsDisplayNames, getJetpackProductsTaglines } from './translations'; import { PRODUCTS_LIST } from './products-list'; import { PLAN_BUSINESS_MONTHLY, diff --git a/client/lib/products-values/products-list.ts b/client/lib/products-values/products-list.ts index 1ebe688ba507f..cf9d872b47057 100644 --- a/client/lib/products-values/products-list.ts +++ b/client/lib/products-values/products-list.ts @@ -2,6 +2,7 @@ * Internal dependencies */ import * as constants from './constants'; +import { getJetpackProductsShortNames } from './translations'; import { TERM_ANNUALLY, TERM_MONTHLY, @@ -9,7 +10,7 @@ import { PLAN_ANNUAL_PERIOD, } from 'lib/plans/constants'; -const PRODUCT_SHORT_NAMES = constants.getJetpackProductsShortNames(); +const PRODUCT_SHORT_NAMES = getJetpackProductsShortNames(); export const PRODUCTS_LIST = { [ constants.PRODUCT_JETPACK_BACKUP_DAILY ]: { diff --git a/client/lib/products-values/test/index.js b/client/lib/products-values/test/index.js index 259c37a4a80d5..ad2c137b95df6 100644 --- a/client/lib/products-values/test/index.js +++ b/client/lib/products-values/test/index.js @@ -19,12 +19,8 @@ import { getJetpackProductDisplayName, getJetpackProductTagline, } from '..'; -import { - JETPACK_BACKUP_PRODUCTS, - JETPACK_PRODUCTS_LIST, - getJetpackProductsDisplayNames, - getJetpackProductsTaglines, -} from '../constants'; +import { JETPACK_BACKUP_PRODUCTS, JETPACK_PRODUCTS_LIST } from '../constants'; +import { getJetpackProductsDisplayNames, getJetpackProductsTaglines } from '../translations'; import { JETPACK_PLANS, PLAN_FREE, diff --git a/client/lib/products-values/translations.js b/client/lib/products-values/translations.js new file mode 100644 index 0000000000000..c3e3895b4ed85 --- /dev/null +++ b/client/lib/products-values/translations.js @@ -0,0 +1,294 @@ +/** + * External dependencies + */ +import React from 'react'; +import { numberFormat, translate } from 'i18n-calypso'; + +/** + * Internal dependencies + */ +import { isEnabled } from 'config'; +import * as CONSTANTS from './constants.js'; + +// Translatable strings +export const getJetpackProductsShortNames = () => { + return { + [ CONSTANTS.PRODUCT_JETPACK_BACKUP_DAILY ]: translate( 'Daily Backups' ), + [ CONSTANTS.PRODUCT_JETPACK_BACKUP_DAILY_MONTHLY ]: translate( 'Daily Backups' ), + [ CONSTANTS.PRODUCT_JETPACK_BACKUP_REALTIME ]: translate( 'Real-Time Backups' ), + [ CONSTANTS.PRODUCT_JETPACK_BACKUP_REALTIME_MONTHLY ]: translate( 'Real-Time Backups' ), + [ CONSTANTS.PRODUCT_JETPACK_SEARCH ]: translate( 'Search' ), + [ CONSTANTS.PRODUCT_JETPACK_SEARCH_MONTHLY ]: translate( 'Search' ), + [ CONSTANTS.PRODUCT_WPCOM_SEARCH ]: translate( 'Search' ), + [ CONSTANTS.PRODUCT_WPCOM_SEARCH_MONTHLY ]: translate( 'Search' ), + [ CONSTANTS.PRODUCT_JETPACK_SCAN ]: translate( 'Daily Scan' ), + [ CONSTANTS.PRODUCT_JETPACK_SCAN_MONTHLY ]: translate( 'Daily Scan' ), + [ CONSTANTS.PRODUCT_JETPACK_ANTI_SPAM ]: translate( 'Anti-Spam' ), + [ CONSTANTS.PRODUCT_JETPACK_ANTI_SPAM_MONTHLY ]: translate( 'Anti-Spam' ), + }; +}; + +export const getJetpackProductsDisplayNames = () => { + const backupDaily = ( + <> + { translate( 'Jetpack Backup {{em}}Daily{{/em}}', { + components: { + em: , + }, + } ) }{ ' ' } + + ); + const backupRealtime = ( + <> + { ' ' } + { translate( 'Jetpack Backup {{em}}Real-Time{{/em}}', { + components: { + em: , + }, + } ) }{ ' ' } + + ); + const search = translate( 'Jetpack Search' ); + const scanDaily = ( + <> + { translate( 'Jetpack Scan {{em}}Daily{{/em}}', { + components: { + em: , + }, + } ) }{ ' ' } + + ); + + const antiSpam = <>{ translate( 'Jetpack Anti-Spam' ) }; + return { + [ CONSTANTS.PRODUCT_JETPACK_BACKUP_DAILY ]: backupDaily, + [ CONSTANTS.PRODUCT_JETPACK_BACKUP_DAILY_MONTHLY ]: backupDaily, + [ CONSTANTS.PRODUCT_JETPACK_BACKUP_REALTIME ]: backupRealtime, + [ CONSTANTS.PRODUCT_JETPACK_BACKUP_REALTIME_MONTHLY ]: backupRealtime, + [ CONSTANTS.PRODUCT_JETPACK_SEARCH ]: search, + [ CONSTANTS.PRODUCT_JETPACK_SEARCH_MONTHLY ]: search, + [ CONSTANTS.PRODUCT_WPCOM_SEARCH ]: search, + [ CONSTANTS.PRODUCT_WPCOM_SEARCH_MONTHLY ]: search, + [ CONSTANTS.PRODUCT_JETPACK_SCAN ]: scanDaily, + [ CONSTANTS.PRODUCT_JETPACK_SCAN_MONTHLY ]: scanDaily, + [ CONSTANTS.PRODUCT_JETPACK_ANTI_SPAM ]: antiSpam, + [ CONSTANTS.PRODUCT_JETPACK_ANTI_SPAM_MONTHLY ]: antiSpam, + }; +}; +export const getJetpackProductsTaglines = () => { + const searchTagline = translate( 'Search your site.' ); + const scanTagline = translate( 'Scan your site.' ); + const antiSpamTagline = translate( 'Automatically clear spam from comments and forms.' ); + return { + [ CONSTANTS.PRODUCT_JETPACK_BACKUP_DAILY ]: translate( + 'Your data is being securely backed up every day with a 30-day archive.' + ), + [ CONSTANTS.PRODUCT_JETPACK_BACKUP_DAILY_MONTHLY ]: translate( + 'Your data is being securely backed up every day with a 30-day archive.' + ), + [ CONSTANTS.PRODUCT_JETPACK_BACKUP_REALTIME ]: translate( + 'Your data is being securely backed up as you edit.' + ), + [ CONSTANTS.PRODUCT_JETPACK_BACKUP_REALTIME_MONTHLY ]: translate( + 'Your data is being securely backed up as you edit.' + ), + [ CONSTANTS.PRODUCT_JETPACK_SEARCH ]: searchTagline, + [ CONSTANTS.PRODUCT_JETPACK_SEARCH_MONTHLY ]: searchTagline, + [ CONSTANTS.PRODUCT_WPCOM_SEARCH ]: searchTagline, + [ CONSTANTS.PRODUCT_WPCOM_SEARCH_MONTHLY ]: searchTagline, + [ CONSTANTS.PRODUCT_JETPACK_SCAN ]: scanTagline, + [ CONSTANTS.PRODUCT_JETPACK_SCAN_MONTHLY ]: scanTagline, + [ CONSTANTS.PRODUCT_JETPACK_ANTI_SPAM ]: antiSpamTagline, + [ CONSTANTS.PRODUCT_JETPACK_ANTI_SPAM_MONTHLY ]: antiSpamTagline, + }; +}; + +export const getJetpackProductsDescriptions = () => { + const searchDescription = translate( + 'Incredibly powerful and customizable, Jetpack Search helps your visitors instantly find the right content – right when they need it.' + ); + const scanDescription = translate( + 'Automatic scanning and one-click fixes keep your site one step ahead of security threats.' + ); + const antiSpamDescription = translate( + 'Automatically clear spam from comments and forms. Save time, get more responses, give your visitors a better experience – all without lifting a finger.' + ); + return { + [ CONSTANTS.PRODUCT_JETPACK_BACKUP_DAILY ]: translate( + 'Always-on backups ensure you never lose your site. Your changes are saved every day with a 30-day archive.' + ), + [ CONSTANTS.PRODUCT_JETPACK_BACKUP_DAILY_MONTHLY ]: translate( + 'Always-on backups ensure you never lose your site. Your changes are saved every day with a 30-day archive.' + ), + [ CONSTANTS.PRODUCT_JETPACK_BACKUP_REALTIME ]: translate( + 'Always-on backups ensure you never lose your site. Your changes are saved as you edit and you have unlimited backup archives.' + ), + [ CONSTANTS.PRODUCT_JETPACK_BACKUP_REALTIME_MONTHLY ]: translate( + 'Always-on backups ensure you never lose your site. Your changes are saved as you edit and you have unlimited backup archives.' + ), + [ CONSTANTS.PRODUCT_JETPACK_SEARCH ]: searchDescription, + [ CONSTANTS.PRODUCT_JETPACK_SEARCH_MONTHLY ]: searchDescription, + [ CONSTANTS.PRODUCT_JETPACK_SCAN ]: scanDescription, + [ CONSTANTS.PRODUCT_JETPACK_SCAN_MONTHLY ]: scanDescription, + [ CONSTANTS.PRODUCT_JETPACK_ANTI_SPAM ]: antiSpamDescription, + [ CONSTANTS.PRODUCT_JETPACK_ANTI_SPAM_MONTHLY ]: antiSpamDescription, + }; +}; + +export const getJetpackProducts = () => { + const output = [ + { + title: translate( 'Jetpack Backup' ), + description: translate( + 'Always-on backups ensure you never lose your site. Choose from real-time or daily backups.' + ), + hasPromo: true, + id: CONSTANTS.PRODUCT_JETPACK_BACKUP, + link: { + label: translate( 'Which backup option is best for me?' ), + props: { + location: 'product_jetpack_backup_description', + slug: 'which-one-do-i-need', + }, + url: CONSTANTS.JETPACK_BACKUP_PRODUCT_LANDING_PAGE_URL, + }, + options: { + yearly: CONSTANTS.JETPACK_BACKUP_PRODUCTS_YEARLY, + monthly: CONSTANTS.JETPACK_BACKUP_PRODUCTS_MONTHLY, + }, + optionShortNames: getJetpackProductsShortNames(), + optionDisplayNames: getJetpackProductsDisplayNames(), + optionDescriptions: getJetpackProductsDescriptions(), + optionsLabel: translate( 'Select a backup option:' ), + slugs: CONSTANTS.JETPACK_BACKUP_PRODUCTS, + }, + ]; + isEnabled( 'jetpack/scan-product' ) && + output.push( { + title: translate( 'Jetpack Scan' ), + description: getJetpackProductsDescriptions()[ CONSTANTS.PRODUCT_JETPACK_SCAN ], + // There is only one option per billing interval, but this + // component still needs the full display with radio buttons. + forceRadios: true, + hasPromo: false, + id: CONSTANTS.PRODUCT_JETPACK_SCAN, + link: { + label: translate( 'Learn more' ), + props: { + location: 'product_jetpack_scan_description', + slug: 'learn-more-scan', + }, + url: CONSTANTS.JETPACK_SCAN_PRODUCT_LANDING_PAGE_URL, + }, + options: { + yearly: [ CONSTANTS.PRODUCT_JETPACK_SCAN ], + monthly: [ CONSTANTS.PRODUCT_JETPACK_SCAN_MONTHLY ], + }, + optionShortNames: getJetpackProductsShortNames(), + optionDisplayNames: getJetpackProductsDisplayNames(), + optionDescriptions: getJetpackProductsDescriptions(), + optionsLabel: translate( 'Select a product option:' ), + slugs: CONSTANTS.JETPACK_SCAN_PRODUCTS, + } ); + isEnabled( 'jetpack/anti-spam-product' ) && + output.push( { + title: translate( 'Jetpack Anti-Spam' ), + description: getJetpackProductsDescriptions()[ CONSTANTS.PRODUCT_JETPACK_ANTI_SPAM ], + // There is only one option per billing interval, but this + // component still needs the full display with radio buttons. + forceRadios: true, + hasPromo: false, + id: CONSTANTS.PRODUCT_JETPACK_ANTI_SPAM, + link: { + label: translate( 'Learn more' ), + props: { + location: 'product_jetpack_anti_spam_description', + slug: 'learn-more-anti-spam', + }, + url: CONSTANTS.JETPACK_ANTI_SPAM_PRODUCT_LANDING_PAGE_URL, + }, + options: { + yearly: [ CONSTANTS.PRODUCT_JETPACK_ANTI_SPAM ], + monthly: [ CONSTANTS.PRODUCT_JETPACK_ANTI_SPAM_MONTHLY ], + }, + optionShortNames: getJetpackProductsShortNames(), + optionDisplayNames: getJetpackProductsDisplayNames(), + optionDescriptions: getJetpackProductsDescriptions(), + optionsLabel: translate( 'Select a product option:' ), + slugs: CONSTANTS.JETPACK_ANTI_SPAM_PRODUCTS, + } ); + isEnabled( 'jetpack/search-product' ) && + output.push( { + title: translate( 'Jetpack Search' ), + description: getJetpackProductsDescriptions()[ CONSTANTS.PRODUCT_JETPACK_SEARCH ], + // There is only one option per billing interval, but this + // component still needs the full display with radio buttons. + forceRadios: true, + hasPromo: false, + id: CONSTANTS.PRODUCT_JETPACK_SEARCH, + link: { + label: translate( 'Learn more' ), + props: { + location: 'product_jetpack_search_description', + slug: 'learn-more-search', + }, + url: CONSTANTS.JETPACK_SEARCH_PRODUCT_LANDING_PAGE_URL, + }, + options: { + yearly: [ CONSTANTS.PRODUCT_JETPACK_SEARCH ], + monthly: [ CONSTANTS.PRODUCT_JETPACK_SEARCH_MONTHLY ], + }, + optionShortNamesCallback: ( productObject ) => { + const numberOfDefinedTiers = 5; + switch ( productObject.price_tier_slug ) { + case CONSTANTS.JETPACK_SEARCH_TIER_UP_TO_100_RECORDS: + return translate( 'Tier 1: Up to 100 records' ); + case CONSTANTS.JETPACK_SEARCH_TIER_UP_TO_1K_RECORDS: + return translate( 'Tier 2: Up to 1,000 records' ); + case CONSTANTS.JETPACK_SEARCH_TIER_UP_TO_10K_RECORDS: + return translate( 'Tier 3: Up to 10,000 records' ); + case CONSTANTS.JETPACK_SEARCH_TIER_UP_TO_100K_RECORDS: + return translate( 'Tier 4: Up to 100,000 records' ); + case CONSTANTS.JETPACK_SEARCH_TIER_UP_TO_1M_RECORDS: + return translate( 'Tier 5: Up to 1,000,000 records' ); + case CONSTANTS.JETPACK_SEARCH_TIER_MORE_THAN_1M_RECORDS: { + // This is a catch-all tier with prices increasing + // proportionally per million records, so define fake + // tiers here to show the user what they will actually + // pay and why. + const tierNumber = + numberOfDefinedTiers + + Math.floor( productObject.price_tier_usage_quantity / 1000000 ); + const tierMaximumRecords = + 1000000 * Math.ceil( productObject.price_tier_usage_quantity / 1000000 ); + return translate( 'Tier %(tierNumber)d: Up to %(tierMaximumRecords)s records', { + args: { + tierNumber, + tierMaximumRecords: numberFormat( tierMaximumRecords ), + }, + } ); + } + default: + return null; + } + }, + optionActionButtonNames: getJetpackProductsShortNames(), + optionDisplayNames: getJetpackProductsDisplayNames(), + optionDescriptions: getJetpackProductsDescriptions(), + optionsLabelCallback: ( productObject ) => { + return translate( + 'Your current site record size: %(numberOfRecords)s record', + 'Your current site record size: %(numberOfRecords)s records', + { + count: productObject.price_tier_usage_quantity, + args: { + numberOfRecords: numberFormat( productObject.price_tier_usage_quantity ), + }, + } + ); + }, + slugs: CONSTANTS.JETPACK_SEARCH_PRODUCTS, + } ); + + return output; +}; diff --git a/client/lib/purchases/index.js b/client/lib/purchases/index.js index a910de3ad92ac..3766207dee223 100644 --- a/client/lib/purchases/index.js +++ b/client/lib/purchases/index.js @@ -26,7 +26,7 @@ import { isTheme, isConciergeSession, } from 'lib/products-values'; -import { getJetpackProductsDisplayNames } from 'lib/products-values/constants'; +import { getJetpackProductsDisplayNames } from 'lib/products-values/translations'; const debug = debugFactory( 'calypso:purchases' ); diff --git a/client/my-sites/plans-features-main/index.jsx b/client/my-sites/plans-features-main/index.jsx index 875cb82d148a0..48ac962bf42e0 100644 --- a/client/my-sites/plans-features-main/index.jsx +++ b/client/my-sites/plans-features-main/index.jsx @@ -29,11 +29,8 @@ import { GROUP_WPCOM, GROUP_JETPACK, } from 'lib/plans/constants'; -import { - JETPACK_PRODUCTS_LIST, - JETPACK_PRODUCT_PRICE_MATRIX, - getJetpackProducts, -} from 'lib/products-values/constants'; +import { JETPACK_PRODUCTS_LIST, JETPACK_PRODUCT_PRICE_MATRIX } from 'lib/products-values/constants'; +import { getJetpackProducts } from 'lib/products-values/translations'; import { addQueryArgs } from 'lib/url'; import JetpackFAQ from './jetpack-faq'; import PlansFeaturesMainProductsHeader from './products-header'; From 55f581fca6b972734a24e8669e9856669e9c34da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9rgio=20Gomes?= Date: Thu, 30 Jul 2020 16:44:34 +0100 Subject: [PATCH 33/71] Split out getProductFromSlug --- client/lib/products-values/get-product-from-slug.js | 12 ++++++++++++ client/lib/products-values/index.js | 9 +-------- 2 files changed, 13 insertions(+), 8 deletions(-) create mode 100644 client/lib/products-values/get-product-from-slug.js diff --git a/client/lib/products-values/get-product-from-slug.js b/client/lib/products-values/get-product-from-slug.js new file mode 100644 index 0000000000000..adb33dda0d5fa --- /dev/null +++ b/client/lib/products-values/get-product-from-slug.js @@ -0,0 +1,12 @@ +/** + * Internal dependencies + */ +import { formatProduct } from 'lib/products-values/format-product'; +import { PRODUCTS_LIST } from 'lib/products-values/products-list'; + +export function getProductFromSlug( productSlug ) { + if ( PRODUCTS_LIST[ productSlug ] ) { + return formatProduct( PRODUCTS_LIST[ productSlug ] ); + } + return productSlug; // Consistent behavior with `getPlan`. +} diff --git a/client/lib/products-values/index.js b/client/lib/products-values/index.js index 5b4a387c1a448..dda0c17b68cc5 100644 --- a/client/lib/products-values/index.js +++ b/client/lib/products-values/index.js @@ -9,7 +9,6 @@ import { get, pick } from 'lodash'; import { isGSuiteOrExtraLicenseProductSlug } from 'lib/gsuite'; import { JETPACK_PRODUCTS_LIST } from './constants'; import { getJetpackProductsDisplayNames, getJetpackProductsTaglines } from './translations'; -import { PRODUCTS_LIST } from './products-list'; import { PLAN_BUSINESS_MONTHLY, PLAN_BUSINESS, @@ -95,13 +94,7 @@ export { isJetpackAntiSpam } from './is-jetpack-anti-spam'; export { isJetpackCloudProductSlug } from './is-jetpack-cloud-product-slug'; export { isJetpackProductSlug } from './is-jetpack-product-slug'; export { isJetpackProduct } from './is-jetpack-product'; - -export function getProductFromSlug( productSlug ) { - if ( PRODUCTS_LIST[ productSlug ] ) { - return formatProduct( PRODUCTS_LIST[ productSlug ] ); - } - return productSlug; // Consistent behavior with `getPlan`. -} +export { getProductFromSlug } from './get-product-from-slug'; export function isJpphpBundle( product ) { product = formatProduct( product ); From 63aa767769288d18ae75c1454aa829e8675275b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9rgio=20Gomes?= Date: Thu, 30 Jul 2020 16:46:07 +0100 Subject: [PATCH 34/71] Split out isJpphpBundle --- client/lib/products-values/index.js | 10 ++-------- client/lib/products-values/is-jpphp-bundle.js | 13 +++++++++++++ 2 files changed, 15 insertions(+), 8 deletions(-) create mode 100644 client/lib/products-values/is-jpphp-bundle.js diff --git a/client/lib/products-values/index.js b/client/lib/products-values/index.js index dda0c17b68cc5..fa78bcda89b5c 100644 --- a/client/lib/products-values/index.js +++ b/client/lib/products-values/index.js @@ -17,7 +17,6 @@ import { PLAN_PREMIUM_2_YEARS, PLAN_PERSONAL, PLAN_PERSONAL_2_YEARS, - PLAN_HOST_BUNDLE, } from 'lib/plans/constants'; import { domainProductSlugs } from 'lib/domains/constants'; @@ -33,6 +32,7 @@ import { isEcommerce } from './is-ecommerce'; import { isEnterprise } from './is-enterprise'; import { isJetpackPlan } from './is-jetpack-plan'; import { isJetpackBackupSlug } from './is-jetpack-backup-slug'; +import { isJpphpBundle } from './is-jpphp-bundle'; const productDependencies = { domain: { @@ -95,13 +95,7 @@ export { isJetpackCloudProductSlug } from './is-jetpack-cloud-product-slug'; export { isJetpackProductSlug } from './is-jetpack-product-slug'; export { isJetpackProduct } from './is-jetpack-product'; export { getProductFromSlug } from './get-product-from-slug'; - -export function isJpphpBundle( product ) { - product = formatProduct( product ); - assertValidProduct( product ); - - return product.product_slug === PLAN_HOST_BUNDLE; -} +export { isJpphpBundle } from './is-jpphp-bundle'; export function isPlan( product ) { product = formatProduct( product ); diff --git a/client/lib/products-values/is-jpphp-bundle.js b/client/lib/products-values/is-jpphp-bundle.js new file mode 100644 index 0000000000000..0d43c505fe679 --- /dev/null +++ b/client/lib/products-values/is-jpphp-bundle.js @@ -0,0 +1,13 @@ +/** + * Internal dependencies + */ +import { PLAN_HOST_BUNDLE } from 'lib/plans/constants'; +import { assertValidProduct } from 'lib/products-values/utils/assert-valid-product'; +import { formatProduct } from 'lib/products-values/format-product'; + +export function isJpphpBundle( product ) { + product = formatProduct( product ); + assertValidProduct( product ); + + return product.product_slug === PLAN_HOST_BUNDLE; +} From efcdc98fefe9b07546cb2ceebf333c224ccb4a35 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9rgio=20Gomes?= Date: Thu, 30 Jul 2020 16:48:29 +0100 Subject: [PATCH 35/71] Split out isPlan --- client/lib/products-values/index.js | 24 ++---------------------- client/lib/products-values/is-plan.js | 27 +++++++++++++++++++++++++++ 2 files changed, 29 insertions(+), 22 deletions(-) create mode 100644 client/lib/products-values/is-plan.js diff --git a/client/lib/products-values/index.js b/client/lib/products-values/index.js index fa78bcda89b5c..95c0f6047d379 100644 --- a/client/lib/products-values/index.js +++ b/client/lib/products-values/index.js @@ -24,15 +24,9 @@ import schema from './schema.json'; import { assertValidProduct } from './utils/assert-valid-product'; import { formatProduct } from './format-product'; -import { isPersonal } from './is-personal'; -import { isBlogger } from './is-blogger'; -import { isPremium } from './is-premium'; -import { isBusiness } from './is-business'; -import { isEcommerce } from './is-ecommerce'; -import { isEnterprise } from './is-enterprise'; import { isJetpackPlan } from './is-jetpack-plan'; import { isJetpackBackupSlug } from './is-jetpack-backup-slug'; -import { isJpphpBundle } from './is-jpphp-bundle'; +import { isPlan } from './is-plan'; const productDependencies = { domain: { @@ -96,21 +90,7 @@ export { isJetpackProductSlug } from './is-jetpack-product-slug'; export { isJetpackProduct } from './is-jetpack-product'; export { getProductFromSlug } from './get-product-from-slug'; export { isJpphpBundle } from './is-jpphp-bundle'; - -export function isPlan( product ) { - product = formatProduct( product ); - assertValidProduct( product ); - - return ( - isBlogger( product ) || - isPersonal( product ) || - isPremium( product ) || - isBusiness( product ) || - isEcommerce( product ) || - isEnterprise( product ) || - isJpphpBundle( product ) - ); -} +export { isPlan } from './is-plan'; export function isDotComPlan( product ) { return isPlan( product ) && ! isJetpackPlan( product ); diff --git a/client/lib/products-values/is-plan.js b/client/lib/products-values/is-plan.js new file mode 100644 index 0000000000000..85b33ba38c6ee --- /dev/null +++ b/client/lib/products-values/is-plan.js @@ -0,0 +1,27 @@ +/** + * Internal dependencies + */ +import { assertValidProduct } from 'lib/products-values/utils/assert-valid-product'; +import { formatProduct } from 'lib/products-values/format-product'; +import { isBlogger } from 'lib/products-values/is-blogger'; +import { isBusiness } from 'lib/products-values/is-business'; +import { isEcommerce } from 'lib/products-values/is-ecommerce'; +import { isEnterprise } from 'lib/products-values/is-enterprise'; +import { isJpphpBundle } from 'lib/products-values/is-jpphp-bundle'; +import { isPersonal } from 'lib/products-values/is-personal'; +import { isPremium } from 'lib/products-values/is-premium'; + +export function isPlan( product ) { + product = formatProduct( product ); + assertValidProduct( product ); + + return ( + isBlogger( product ) || + isPersonal( product ) || + isPremium( product ) || + isBusiness( product ) || + isEcommerce( product ) || + isEnterprise( product ) || + isJpphpBundle( product ) + ); +} From 6df76f6f2a8e706878dfd53b51c25aec9c86fefe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9rgio=20Gomes?= Date: Thu, 30 Jul 2020 16:49:59 +0100 Subject: [PATCH 36/71] Split out isDotComPlan --- client/lib/products-values/index.js | 6 +----- client/lib/products-values/is-dot-com-plan.js | 9 +++++++++ 2 files changed, 10 insertions(+), 5 deletions(-) create mode 100644 client/lib/products-values/is-dot-com-plan.js diff --git a/client/lib/products-values/index.js b/client/lib/products-values/index.js index 95c0f6047d379..a5e254925caa5 100644 --- a/client/lib/products-values/index.js +++ b/client/lib/products-values/index.js @@ -24,7 +24,6 @@ import schema from './schema.json'; import { assertValidProduct } from './utils/assert-valid-product'; import { formatProduct } from './format-product'; -import { isJetpackPlan } from './is-jetpack-plan'; import { isJetpackBackupSlug } from './is-jetpack-backup-slug'; import { isPlan } from './is-plan'; @@ -91,10 +90,7 @@ export { isJetpackProduct } from './is-jetpack-product'; export { getProductFromSlug } from './get-product-from-slug'; export { isJpphpBundle } from './is-jpphp-bundle'; export { isPlan } from './is-plan'; - -export function isDotComPlan( product ) { - return isPlan( product ) && ! isJetpackPlan( product ); -} +export { isDotComPlan } from './is-dot-com-plan'; export function isDomainProduct( product ) { product = formatProduct( product ); diff --git a/client/lib/products-values/is-dot-com-plan.js b/client/lib/products-values/is-dot-com-plan.js new file mode 100644 index 0000000000000..d61bf9fcb8bc3 --- /dev/null +++ b/client/lib/products-values/is-dot-com-plan.js @@ -0,0 +1,9 @@ +/** + * Internal dependencies + */ +import { isPlan } from 'lib/products-values/is-plan'; +import { isJetpackPlan } from 'lib/products-values/is-jetpack-plan'; + +export function isDotComPlan( product ) { + return isPlan( product ) && ! isJetpackPlan( product ); +} From cf92b4c379e02cc35469411e129151c810176b50 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9rgio=20Gomes?= Date: Thu, 30 Jul 2020 16:52:19 +0100 Subject: [PATCH 37/71] Split out isDomainMapping --- client/lib/products-values/index.js | 9 ++------- client/lib/products-values/is-domain-mapping.js | 12 ++++++++++++ 2 files changed, 14 insertions(+), 7 deletions(-) create mode 100644 client/lib/products-values/is-domain-mapping.js diff --git a/client/lib/products-values/index.js b/client/lib/products-values/index.js index a5e254925caa5..f98ae110f7211 100644 --- a/client/lib/products-values/index.js +++ b/client/lib/products-values/index.js @@ -26,6 +26,7 @@ import { assertValidProduct } from './utils/assert-valid-product'; import { formatProduct } from './format-product'; import { isJetpackBackupSlug } from './is-jetpack-backup-slug'; import { isPlan } from './is-plan'; +import { isDomainMapping } from './is-domain-mapping'; const productDependencies = { domain: { @@ -91,6 +92,7 @@ export { getProductFromSlug } from './get-product-from-slug'; export { isJpphpBundle } from './is-jpphp-bundle'; export { isPlan } from './is-plan'; export { isDotComPlan } from './is-dot-com-plan'; +export { isDomainMapping } from './is-domain-mapping'; export function isDomainProduct( product ) { product = formatProduct( product ); @@ -113,13 +115,6 @@ export function isDomainRegistration( product ) { return !! product.is_domain_registration; } -export function isDomainMapping( product ) { - product = formatProduct( product ); - assertValidProduct( product ); - - return product.product_slug === 'domain_map'; -} - export function getIncludedDomainPurchaseAmount( product ) { product = formatProduct( product ); assertValidProduct( product ); diff --git a/client/lib/products-values/is-domain-mapping.js b/client/lib/products-values/is-domain-mapping.js new file mode 100644 index 0000000000000..2f51ba0db01d9 --- /dev/null +++ b/client/lib/products-values/is-domain-mapping.js @@ -0,0 +1,12 @@ +/** + * Internal dependencies + */ +import { assertValidProduct } from 'lib/products-values/utils/assert-valid-product'; +import { formatProduct } from 'lib/products-values/format-product'; + +export function isDomainMapping( product ) { + product = formatProduct( product ); + assertValidProduct( product ); + + return product.product_slug === 'domain_map'; +} From 3e89c52b027dc6ab49e6c70cece0b5bf49cac5c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9rgio=20Gomes?= Date: Thu, 30 Jul 2020 16:53:21 +0100 Subject: [PATCH 38/71] Split out isDomainRegistration --- client/lib/products-values/index.js | 9 ++------- client/lib/products-values/is-domain-registration.js | 12 ++++++++++++ 2 files changed, 14 insertions(+), 7 deletions(-) create mode 100644 client/lib/products-values/is-domain-registration.js diff --git a/client/lib/products-values/index.js b/client/lib/products-values/index.js index f98ae110f7211..f17b46b9c13bb 100644 --- a/client/lib/products-values/index.js +++ b/client/lib/products-values/index.js @@ -27,6 +27,7 @@ import { formatProduct } from './format-product'; import { isJetpackBackupSlug } from './is-jetpack-backup-slug'; import { isPlan } from './is-plan'; import { isDomainMapping } from './is-domain-mapping'; +import { isDomainRegistration } from './is-domain-registration'; const productDependencies = { domain: { @@ -93,6 +94,7 @@ export { isJpphpBundle } from './is-jpphp-bundle'; export { isPlan } from './is-plan'; export { isDotComPlan } from './is-dot-com-plan'; export { isDomainMapping } from './is-domain-mapping'; +export { isDomainRegistration } from './is-domain-registration'; export function isDomainProduct( product ) { product = formatProduct( product ); @@ -108,13 +110,6 @@ export function isDomainRedemption( product ) { return product.product_slug === 'domain_redemption'; } -export function isDomainRegistration( product ) { - product = formatProduct( product ); - assertValidProduct( product ); - - return !! product.is_domain_registration; -} - export function getIncludedDomainPurchaseAmount( product ) { product = formatProduct( product ); assertValidProduct( product ); diff --git a/client/lib/products-values/is-domain-registration.js b/client/lib/products-values/is-domain-registration.js new file mode 100644 index 0000000000000..29788a34a34b3 --- /dev/null +++ b/client/lib/products-values/is-domain-registration.js @@ -0,0 +1,12 @@ +/** + * Internal dependencies + */ +import { assertValidProduct } from 'lib/products-values/utils/assert-valid-product'; +import { formatProduct } from 'lib/products-values/format-product'; + +export function isDomainRegistration( product ) { + product = formatProduct( product ); + assertValidProduct( product ); + + return !! product.is_domain_registration; +} From 943e042196db23883e78733745d940edcfc91927 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9rgio=20Gomes?= Date: Thu, 30 Jul 2020 16:54:48 +0100 Subject: [PATCH 39/71] Split out isDomainProduct --- client/lib/products-values/index.js | 8 +------- client/lib/products-values/is-domain-product.js | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 7 deletions(-) create mode 100644 client/lib/products-values/is-domain-product.js diff --git a/client/lib/products-values/index.js b/client/lib/products-values/index.js index f17b46b9c13bb..a8fe85870673c 100644 --- a/client/lib/products-values/index.js +++ b/client/lib/products-values/index.js @@ -95,13 +95,7 @@ export { isPlan } from './is-plan'; export { isDotComPlan } from './is-dot-com-plan'; export { isDomainMapping } from './is-domain-mapping'; export { isDomainRegistration } from './is-domain-registration'; - -export function isDomainProduct( product ) { - product = formatProduct( product ); - assertValidProduct( product ); - - return isDomainMapping( product ) || isDomainRegistration( product ); -} +export { isDomainProduct } from './is-domain-product'; export function isDomainRedemption( product ) { product = formatProduct( product ); diff --git a/client/lib/products-values/is-domain-product.js b/client/lib/products-values/is-domain-product.js new file mode 100644 index 0000000000000..163e70aad4785 --- /dev/null +++ b/client/lib/products-values/is-domain-product.js @@ -0,0 +1,14 @@ +/** + * Internal dependencies + */ +import { assertValidProduct } from 'lib/products-values/utils/assert-valid-product'; +import { formatProduct } from 'lib/products-values/format-product'; +import { isDomainMapping } from 'lib/products-values/is-domain-mapping'; +import { isDomainRegistration } from 'lib/products-values/is-domain-registration'; + +export function isDomainProduct( product ) { + product = formatProduct( product ); + assertValidProduct( product ); + + return isDomainMapping( product ) || isDomainRegistration( product ); +} From 7942b4edcf99b6d58953c13b48bfff659e380caf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9rgio=20Gomes?= Date: Thu, 30 Jul 2020 16:55:42 +0100 Subject: [PATCH 40/71] Split out isDomainRedemption --- client/lib/products-values/index.js | 8 +------- client/lib/products-values/is-domain-redemption.js | 12 ++++++++++++ 2 files changed, 13 insertions(+), 7 deletions(-) create mode 100644 client/lib/products-values/is-domain-redemption.js diff --git a/client/lib/products-values/index.js b/client/lib/products-values/index.js index a8fe85870673c..dcbeddefbaff3 100644 --- a/client/lib/products-values/index.js +++ b/client/lib/products-values/index.js @@ -96,13 +96,7 @@ export { isDotComPlan } from './is-dot-com-plan'; export { isDomainMapping } from './is-domain-mapping'; export { isDomainRegistration } from './is-domain-registration'; export { isDomainProduct } from './is-domain-product'; - -export function isDomainRedemption( product ) { - product = formatProduct( product ); - assertValidProduct( product ); - - return product.product_slug === 'domain_redemption'; -} +export { isDomainRedemption } from './is-domain-redemption'; export function getIncludedDomainPurchaseAmount( product ) { product = formatProduct( product ); diff --git a/client/lib/products-values/is-domain-redemption.js b/client/lib/products-values/is-domain-redemption.js new file mode 100644 index 0000000000000..d57e9caa82a93 --- /dev/null +++ b/client/lib/products-values/is-domain-redemption.js @@ -0,0 +1,12 @@ +/** + * Internal dependencies + */ +import { assertValidProduct } from 'lib/products-values/utils/assert-valid-product'; +import { formatProduct } from 'lib/products-values/format-product'; + +export function isDomainRedemption( product ) { + product = formatProduct( product ); + assertValidProduct( product ); + + return product.product_slug === 'domain_redemption'; +} From ae992dfc3ed3e46153e2ba500433290d3f3cea41 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9rgio=20Gomes?= Date: Thu, 30 Jul 2020 16:56:46 +0100 Subject: [PATCH 41/71] Split out getIncludedDomainPurchaseAmount --- .../get-included-domain-purchase-amount.js | 12 ++++++++++++ client/lib/products-values/index.js | 8 +------- 2 files changed, 13 insertions(+), 7 deletions(-) create mode 100644 client/lib/products-values/get-included-domain-purchase-amount.js diff --git a/client/lib/products-values/get-included-domain-purchase-amount.js b/client/lib/products-values/get-included-domain-purchase-amount.js new file mode 100644 index 0000000000000..a59ca1dd3848b --- /dev/null +++ b/client/lib/products-values/get-included-domain-purchase-amount.js @@ -0,0 +1,12 @@ +/** + * Internal dependencies + */ +import { assertValidProduct } from 'lib/products-values/utils/assert-valid-product'; +import { formatProduct } from 'lib/products-values/format-product'; + +export function getIncludedDomainPurchaseAmount( product ) { + product = formatProduct( product ); + assertValidProduct( product ); + + return product.included_domain_purchase_amount; +} diff --git a/client/lib/products-values/index.js b/client/lib/products-values/index.js index dcbeddefbaff3..f110c437a8368 100644 --- a/client/lib/products-values/index.js +++ b/client/lib/products-values/index.js @@ -97,13 +97,7 @@ export { isDomainMapping } from './is-domain-mapping'; export { isDomainRegistration } from './is-domain-registration'; export { isDomainProduct } from './is-domain-product'; export { isDomainRedemption } from './is-domain-redemption'; - -export function getIncludedDomainPurchaseAmount( product ) { - product = formatProduct( product ); - assertValidProduct( product ); - - return product.included_domain_purchase_amount; -} +export { getIncludedDomainPurchaseAmount } from './get-included-domain-purchase-amount'; export function isSiteRedirect( product ) { product = formatProduct( product ); From 122b48aec0584c8bb9b5eb98f1f519286673efdb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9rgio=20Gomes?= Date: Thu, 30 Jul 2020 16:57:41 +0100 Subject: [PATCH 42/71] Split out isSiteRedirect --- client/lib/products-values/index.js | 8 +------- client/lib/products-values/is-site-redirect.js | 12 ++++++++++++ 2 files changed, 13 insertions(+), 7 deletions(-) create mode 100644 client/lib/products-values/is-site-redirect.js diff --git a/client/lib/products-values/index.js b/client/lib/products-values/index.js index f110c437a8368..c67864c25ead3 100644 --- a/client/lib/products-values/index.js +++ b/client/lib/products-values/index.js @@ -98,13 +98,7 @@ export { isDomainRegistration } from './is-domain-registration'; export { isDomainProduct } from './is-domain-product'; export { isDomainRedemption } from './is-domain-redemption'; export { getIncludedDomainPurchaseAmount } from './get-included-domain-purchase-amount'; - -export function isSiteRedirect( product ) { - product = formatProduct( product ); - assertValidProduct( product ); - - return product.product_slug === 'offsite_redirect'; -} +export { isSiteRedirect } from './is-site-redirect'; export function isDomainTransferProduct( product ) { product = formatProduct( product ); diff --git a/client/lib/products-values/is-site-redirect.js b/client/lib/products-values/is-site-redirect.js new file mode 100644 index 0000000000000..810cacba07104 --- /dev/null +++ b/client/lib/products-values/is-site-redirect.js @@ -0,0 +1,12 @@ +/** + * Internal dependencies + */ +import { assertValidProduct } from 'lib/products-values/utils/assert-valid-product'; +import { formatProduct } from 'lib/products-values/format-product'; + +export function isSiteRedirect( product ) { + product = formatProduct( product ); + assertValidProduct( product ); + + return product.product_slug === 'offsite_redirect'; +} From c5d8b1b746bd072cc8d29a1b5a9c38c515824332 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9rgio=20Gomes?= Date: Thu, 30 Jul 2020 16:59:18 +0100 Subject: [PATCH 43/71] Split out allowedProductAttributes --- .../products-values/allowed-product-attributes.js | 13 +++++++++++++ client/lib/products-values/index.js | 8 ++------ 2 files changed, 15 insertions(+), 6 deletions(-) create mode 100644 client/lib/products-values/allowed-product-attributes.js diff --git a/client/lib/products-values/allowed-product-attributes.js b/client/lib/products-values/allowed-product-attributes.js new file mode 100644 index 0000000000000..6de2901f3b2c8 --- /dev/null +++ b/client/lib/products-values/allowed-product-attributes.js @@ -0,0 +1,13 @@ +/** + * External dependencies + */ +import { pick } from 'lodash'; + +/** + * Internal dependencies + */ +import schema from 'lib/products-values/schema.json'; + +export function allowedProductAttributes( product ) { + return pick( product, Object.keys( schema.properties ) ); +} diff --git a/client/lib/products-values/index.js b/client/lib/products-values/index.js index c67864c25ead3..a926500e27a4d 100644 --- a/client/lib/products-values/index.js +++ b/client/lib/products-values/index.js @@ -1,7 +1,7 @@ /** * External dependencies */ -import { get, pick } from 'lodash'; +import { get } from 'lodash'; /** * Internal dependencies @@ -20,7 +20,6 @@ import { } from 'lib/plans/constants'; import { domainProductSlugs } from 'lib/domains/constants'; -import schema from './schema.json'; import { assertValidProduct } from './utils/assert-valid-product'; import { formatProduct } from './format-product'; @@ -99,6 +98,7 @@ export { isDomainProduct } from './is-domain-product'; export { isDomainRedemption } from './is-domain-redemption'; export { getIncludedDomainPurchaseAmount } from './get-included-domain-purchase-amount'; export { isSiteRedirect } from './is-site-redirect'; +export { allowedProductAttributes } from './allowed-product-attributes'; export function isDomainTransferProduct( product ) { product = formatProduct( product ); @@ -281,10 +281,6 @@ export function isUnlimitedThemes( product ) { return 'unlimited_themes' === product.product_slug; } -export function allowedProductAttributes( product ) { - return pick( product, Object.keys( schema.properties ) ); -} - export function isSpaceUpgrade( product ) { product = formatProduct( product ); assertValidProduct( product ); From aa1266fdc4239adc6b0f795d38fc7015e9cf5560 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9rgio=20Gomes?= Date: Thu, 30 Jul 2020 17:01:27 +0100 Subject: [PATCH 44/71] Split out isDomainTransfer --- client/lib/products-values/index.js | 11 ++--------- client/lib/products-values/is-domain-transfer.js | 13 +++++++++++++ 2 files changed, 15 insertions(+), 9 deletions(-) create mode 100644 client/lib/products-values/is-domain-transfer.js diff --git a/client/lib/products-values/index.js b/client/lib/products-values/index.js index a926500e27a4d..9090c2a88edd5 100644 --- a/client/lib/products-values/index.js +++ b/client/lib/products-values/index.js @@ -19,14 +19,13 @@ import { PLAN_PERSONAL_2_YEARS, } from 'lib/plans/constants'; -import { domainProductSlugs } from 'lib/domains/constants'; - import { assertValidProduct } from './utils/assert-valid-product'; import { formatProduct } from './format-product'; import { isJetpackBackupSlug } from './is-jetpack-backup-slug'; import { isPlan } from './is-plan'; import { isDomainMapping } from './is-domain-mapping'; import { isDomainRegistration } from './is-domain-registration'; +import { isDomainTransfer } from './is-domain-transfer'; const productDependencies = { domain: { @@ -99,6 +98,7 @@ export { isDomainRedemption } from './is-domain-redemption'; export { getIncludedDomainPurchaseAmount } from './get-included-domain-purchase-amount'; export { isSiteRedirect } from './is-site-redirect'; export { allowedProductAttributes } from './allowed-product-attributes'; +export { isDomainTransfer } from './is-domain-transfer'; export function isDomainTransferProduct( product ) { product = formatProduct( product ); @@ -107,13 +107,6 @@ export function isDomainTransferProduct( product ) { return isDomainTransfer( product ); } -export function isDomainTransfer( product ) { - product = formatProduct( product ); - assertValidProduct( product ); - - return product.product_slug === domainProductSlugs.TRANSFER_IN; -} - export function isDelayedDomainTransfer( product ) { return isDomainTransfer( product ) && product.delayedProvisioning; } diff --git a/client/lib/products-values/is-domain-transfer.js b/client/lib/products-values/is-domain-transfer.js new file mode 100644 index 0000000000000..8fd5a815c0b33 --- /dev/null +++ b/client/lib/products-values/is-domain-transfer.js @@ -0,0 +1,13 @@ +/** + * Internal dependencies + */ +import { assertValidProduct } from 'lib/products-values/utils/assert-valid-product'; +import { formatProduct } from 'lib/products-values/format-product'; +import { domainProductSlugs } from 'lib/domains/constants'; + +export function isDomainTransfer( product ) { + product = formatProduct( product ); + assertValidProduct( product ); + + return product.product_slug === domainProductSlugs.TRANSFER_IN; +} From 1290fe848b7c9b25c559a201ea70901b31f2ee25 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9rgio=20Gomes?= Date: Thu, 30 Jul 2020 17:02:31 +0100 Subject: [PATCH 45/71] Split out isDomainTransferProduct --- client/lib/products-values/index.js | 8 +------- .../products-values/is-domain-transfer-product.js | 13 +++++++++++++ 2 files changed, 14 insertions(+), 7 deletions(-) create mode 100644 client/lib/products-values/is-domain-transfer-product.js diff --git a/client/lib/products-values/index.js b/client/lib/products-values/index.js index 9090c2a88edd5..c1b76b9bce86b 100644 --- a/client/lib/products-values/index.js +++ b/client/lib/products-values/index.js @@ -99,13 +99,7 @@ export { getIncludedDomainPurchaseAmount } from './get-included-domain-purchase- export { isSiteRedirect } from './is-site-redirect'; export { allowedProductAttributes } from './allowed-product-attributes'; export { isDomainTransfer } from './is-domain-transfer'; - -export function isDomainTransferProduct( product ) { - product = formatProduct( product ); - assertValidProduct( product ); - - return isDomainTransfer( product ); -} +export { isDomainTransferProduct } from './is-domain-transfer-product'; export function isDelayedDomainTransfer( product ) { return isDomainTransfer( product ) && product.delayedProvisioning; diff --git a/client/lib/products-values/is-domain-transfer-product.js b/client/lib/products-values/is-domain-transfer-product.js new file mode 100644 index 0000000000000..ddd5caa102d2f --- /dev/null +++ b/client/lib/products-values/is-domain-transfer-product.js @@ -0,0 +1,13 @@ +/** + * Internal dependencies + */ +import { assertValidProduct } from 'lib/products-values/utils/assert-valid-product'; +import { formatProduct } from 'lib/products-values/format-product'; +import { isDomainTransfer } from 'lib/products-values/is-domain-transfer'; + +export function isDomainTransferProduct( product ) { + product = formatProduct( product ); + assertValidProduct( product ); + + return isDomainTransfer( product ); +} From 3e3d80eeb7c876cc1fbad92d01265a725fe0396d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9rgio=20Gomes?= Date: Thu, 30 Jul 2020 17:03:47 +0100 Subject: [PATCH 46/71] Split out isDelayedDomainTransfer --- client/lib/products-values/index.js | 6 +----- client/lib/products-values/is-delayed-domain-transfer.js | 8 ++++++++ 2 files changed, 9 insertions(+), 5 deletions(-) create mode 100644 client/lib/products-values/is-delayed-domain-transfer.js diff --git a/client/lib/products-values/index.js b/client/lib/products-values/index.js index c1b76b9bce86b..3824f525c45f1 100644 --- a/client/lib/products-values/index.js +++ b/client/lib/products-values/index.js @@ -25,7 +25,6 @@ import { isJetpackBackupSlug } from './is-jetpack-backup-slug'; import { isPlan } from './is-plan'; import { isDomainMapping } from './is-domain-mapping'; import { isDomainRegistration } from './is-domain-registration'; -import { isDomainTransfer } from './is-domain-transfer'; const productDependencies = { domain: { @@ -100,10 +99,7 @@ export { isSiteRedirect } from './is-site-redirect'; export { allowedProductAttributes } from './allowed-product-attributes'; export { isDomainTransfer } from './is-domain-transfer'; export { isDomainTransferProduct } from './is-domain-transfer-product'; - -export function isDelayedDomainTransfer( product ) { - return isDomainTransfer( product ) && product.delayedProvisioning; -} +export { isDelayedDomainTransfer } from './is-delayed-domain-transfer'; export function isBundled( product ) { product = formatProduct( product ); diff --git a/client/lib/products-values/is-delayed-domain-transfer.js b/client/lib/products-values/is-delayed-domain-transfer.js new file mode 100644 index 0000000000000..a3ce2ec6715c7 --- /dev/null +++ b/client/lib/products-values/is-delayed-domain-transfer.js @@ -0,0 +1,8 @@ +/** + * Internal dependencies + */ +import { isDomainTransfer } from 'lib/products-values/is-domain-transfer'; + +export function isDelayedDomainTransfer( product ) { + return isDomainTransfer( product ) && product.delayedProvisioning; +} From 79d42e7bf747787b3d59895c074b1c8f075f4472 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9rgio=20Gomes?= Date: Thu, 30 Jul 2020 17:04:44 +0100 Subject: [PATCH 47/71] Split out isBundled --- client/lib/products-values/index.js | 8 +------- client/lib/products-values/is-bundled.js | 12 ++++++++++++ 2 files changed, 13 insertions(+), 7 deletions(-) create mode 100644 client/lib/products-values/is-bundled.js diff --git a/client/lib/products-values/index.js b/client/lib/products-values/index.js index 3824f525c45f1..b76f33509f2e8 100644 --- a/client/lib/products-values/index.js +++ b/client/lib/products-values/index.js @@ -100,13 +100,7 @@ export { allowedProductAttributes } from './allowed-product-attributes'; export { isDomainTransfer } from './is-domain-transfer'; export { isDomainTransferProduct } from './is-domain-transfer-product'; export { isDelayedDomainTransfer } from './is-delayed-domain-transfer'; - -export function isBundled( product ) { - product = formatProduct( product ); - assertValidProduct( product ); - - return !! product.is_bundled; -} +export { isBundled } from './is-bundled'; export function isCredits( product ) { product = formatProduct( product ); diff --git a/client/lib/products-values/is-bundled.js b/client/lib/products-values/is-bundled.js new file mode 100644 index 0000000000000..a96e01831a9b0 --- /dev/null +++ b/client/lib/products-values/is-bundled.js @@ -0,0 +1,12 @@ +/** + * Internal dependencies + */ +import { assertValidProduct } from 'lib/products-values/utils/assert-valid-product'; +import { formatProduct } from 'lib/products-values/format-product'; + +export function isBundled( product ) { + product = formatProduct( product ); + assertValidProduct( product ); + + return !! product.is_bundled; +} From 7e40b9aac521dd73571ad71b55fef4e5303f8d5e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9rgio=20Gomes?= Date: Thu, 30 Jul 2020 17:05:49 +0100 Subject: [PATCH 48/71] Split out isCredits --- client/lib/products-values/index.js | 8 +------- client/lib/products-values/is-credits.js | 12 ++++++++++++ 2 files changed, 13 insertions(+), 7 deletions(-) create mode 100644 client/lib/products-values/is-credits.js diff --git a/client/lib/products-values/index.js b/client/lib/products-values/index.js index b76f33509f2e8..8f5721eee4dc8 100644 --- a/client/lib/products-values/index.js +++ b/client/lib/products-values/index.js @@ -101,13 +101,7 @@ export { isDomainTransfer } from './is-domain-transfer'; export { isDomainTransferProduct } from './is-domain-transfer-product'; export { isDelayedDomainTransfer } from './is-delayed-domain-transfer'; export { isBundled } from './is-bundled'; - -export function isCredits( product ) { - product = formatProduct( product ); - assertValidProduct( product ); - - return 'wordpress-com-credits' === product.product_slug; -} +export { isCredits } from './is-credits'; export function getDomainProductRanking( product ) { product = formatProduct( product ); diff --git a/client/lib/products-values/is-credits.js b/client/lib/products-values/is-credits.js new file mode 100644 index 0000000000000..07ac164679d28 --- /dev/null +++ b/client/lib/products-values/is-credits.js @@ -0,0 +1,12 @@ +/** + * Internal dependencies + */ +import { assertValidProduct } from 'lib/products-values/utils/assert-valid-product'; +import { formatProduct } from 'lib/products-values/format-product'; + +export function isCredits( product ) { + product = formatProduct( product ); + assertValidProduct( product ); + + return 'wordpress-com-credits' === product.product_slug; +} From cde9012c071262076b90121933d1645e369a4778 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9rgio=20Gomes?= Date: Thu, 30 Jul 2020 17:07:11 +0100 Subject: [PATCH 49/71] Split out getDomainProductRanking --- .../get-domain-product-ranking.js | 18 ++++++++++++++++++ client/lib/products-values/index.js | 12 +----------- 2 files changed, 19 insertions(+), 11 deletions(-) create mode 100644 client/lib/products-values/get-domain-product-ranking.js diff --git a/client/lib/products-values/get-domain-product-ranking.js b/client/lib/products-values/get-domain-product-ranking.js new file mode 100644 index 0000000000000..7640c2d700c5c --- /dev/null +++ b/client/lib/products-values/get-domain-product-ranking.js @@ -0,0 +1,18 @@ +/** + * Internal dependencies + */ +import { assertValidProduct } from 'lib/products-values/utils/assert-valid-product'; +import { formatProduct } from 'lib/products-values/format-product'; +import { isDomainRegistration } from 'lib/products-values/is-domain-registration'; +import { isDomainMapping } from 'lib/products-values/is-domain-mapping'; + +export function getDomainProductRanking( product ) { + product = formatProduct( product ); + assertValidProduct( product ); + + if ( isDomainRegistration( product ) ) { + return 0; + } else if ( isDomainMapping( product ) ) { + return 1; + } +} diff --git a/client/lib/products-values/index.js b/client/lib/products-values/index.js index 8f5721eee4dc8..8dd110b2814a1 100644 --- a/client/lib/products-values/index.js +++ b/client/lib/products-values/index.js @@ -102,17 +102,7 @@ export { isDomainTransferProduct } from './is-domain-transfer-product'; export { isDelayedDomainTransfer } from './is-delayed-domain-transfer'; export { isBundled } from './is-bundled'; export { isCredits } from './is-credits'; - -export function getDomainProductRanking( product ) { - product = formatProduct( product ); - assertValidProduct( product ); - - if ( isDomainRegistration( product ) ) { - return 0; - } else if ( isDomainMapping( product ) ) { - return 1; - } -} +export { getDomainProductRanking } from './get-domain-product-ranking'; export function getDomain( product ) { product = formatProduct( product ); From 8fd8c1860e71ae61026776b8f588b144f8848cea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9rgio=20Gomes?= Date: Thu, 30 Jul 2020 17:08:34 +0100 Subject: [PATCH 50/71] Split out getDomain --- client/lib/products-values/get-domain.js | 22 ++++++++++++++++++++++ client/lib/products-values/index.js | 19 ++----------------- 2 files changed, 24 insertions(+), 17 deletions(-) create mode 100644 client/lib/products-values/get-domain.js diff --git a/client/lib/products-values/get-domain.js b/client/lib/products-values/get-domain.js new file mode 100644 index 0000000000000..c36c60f194fc7 --- /dev/null +++ b/client/lib/products-values/get-domain.js @@ -0,0 +1,22 @@ +/** + * External dependencies + */ +import { get } from 'lodash'; + +/** + * Internal dependencies + */ +import { assertValidProduct } from 'lib/products-values/utils/assert-valid-product'; +import { formatProduct } from 'lib/products-values/format-product'; + +export function getDomain( product ) { + product = formatProduct( product ); + assertValidProduct( product ); + + const domainToBundle = get( product, 'extra.domain_to_bundle', false ); + if ( domainToBundle ) { + return domainToBundle; + } + + return product.meta; +} diff --git a/client/lib/products-values/index.js b/client/lib/products-values/index.js index 8dd110b2814a1..12f2a3c77cf50 100644 --- a/client/lib/products-values/index.js +++ b/client/lib/products-values/index.js @@ -1,8 +1,3 @@ -/** - * External dependencies - */ -import { get } from 'lodash'; - /** * Internal dependencies */ @@ -25,6 +20,7 @@ import { isJetpackBackupSlug } from './is-jetpack-backup-slug'; import { isPlan } from './is-plan'; import { isDomainMapping } from './is-domain-mapping'; import { isDomainRegistration } from './is-domain-registration'; +import { getDomain } from './get-domain'; const productDependencies = { domain: { @@ -103,18 +99,7 @@ export { isDelayedDomainTransfer } from './is-delayed-domain-transfer'; export { isBundled } from './is-bundled'; export { isCredits } from './is-credits'; export { getDomainProductRanking } from './get-domain-product-ranking'; - -export function getDomain( product ) { - product = formatProduct( product ); - assertValidProduct( product ); - - const domainToBundle = get( product, 'extra.domain_to_bundle', false ); - if ( domainToBundle ) { - return domainToBundle; - } - - return product.meta; -} +export { getDomain } from './get-domain'; export function getProductsSlugs() { return JETPACK_PRODUCTS_LIST; From 994ad613a786d29fec70296f5194e1fbde7e36df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9rgio=20Gomes?= Date: Thu, 30 Jul 2020 17:10:09 +0100 Subject: [PATCH 51/71] Split out getProductsSlugs --- client/lib/products-values/get-products-slugs.js | 8 ++++++++ client/lib/products-values/index.js | 6 +----- 2 files changed, 9 insertions(+), 5 deletions(-) create mode 100644 client/lib/products-values/get-products-slugs.js diff --git a/client/lib/products-values/get-products-slugs.js b/client/lib/products-values/get-products-slugs.js new file mode 100644 index 0000000000000..3a39a1575f004 --- /dev/null +++ b/client/lib/products-values/get-products-slugs.js @@ -0,0 +1,8 @@ +/** + * Internal dependencies + */ +import { JETPACK_PRODUCTS_LIST } from 'lib/products-values/constants'; + +export function getProductsSlugs() { + return JETPACK_PRODUCTS_LIST; +} diff --git a/client/lib/products-values/index.js b/client/lib/products-values/index.js index 12f2a3c77cf50..32953bee50984 100644 --- a/client/lib/products-values/index.js +++ b/client/lib/products-values/index.js @@ -2,7 +2,6 @@ * Internal dependencies */ import { isGSuiteOrExtraLicenseProductSlug } from 'lib/gsuite'; -import { JETPACK_PRODUCTS_LIST } from './constants'; import { getJetpackProductsDisplayNames, getJetpackProductsTaglines } from './translations'; import { PLAN_BUSINESS_MONTHLY, @@ -100,10 +99,7 @@ export { isBundled } from './is-bundled'; export { isCredits } from './is-credits'; export { getDomainProductRanking } from './get-domain-product-ranking'; export { getDomain } from './get-domain'; - -export function getProductsSlugs() { - return JETPACK_PRODUCTS_LIST; -} +export { getProductsSlugs } from './get-products-slugs'; export function getProductClass( productSlug ) { if ( isJetpackBackupSlug( productSlug ) ) { From 750680ba7fae29e74e7797555aed201b8d2721cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9rgio=20Gomes?= Date: Thu, 30 Jul 2020 17:11:37 +0100 Subject: [PATCH 52/71] Split out getProductClass --- client/lib/products-values/get-product-class.js | 12 ++++++++++++ client/lib/products-values/index.js | 10 +--------- 2 files changed, 13 insertions(+), 9 deletions(-) create mode 100644 client/lib/products-values/get-product-class.js diff --git a/client/lib/products-values/get-product-class.js b/client/lib/products-values/get-product-class.js new file mode 100644 index 0000000000000..e7b4d9e4853eb --- /dev/null +++ b/client/lib/products-values/get-product-class.js @@ -0,0 +1,12 @@ +/** + * Internal dependencies + */ +import { isJetpackBackupSlug } from 'lib/products-values/is-jetpack-backup-slug'; + +export function getProductClass( productSlug ) { + if ( isJetpackBackupSlug( productSlug ) ) { + return 'is-jetpack-backup'; + } + + return ''; +} diff --git a/client/lib/products-values/index.js b/client/lib/products-values/index.js index 32953bee50984..752d0cd44a7c7 100644 --- a/client/lib/products-values/index.js +++ b/client/lib/products-values/index.js @@ -15,7 +15,6 @@ import { import { assertValidProduct } from './utils/assert-valid-product'; import { formatProduct } from './format-product'; -import { isJetpackBackupSlug } from './is-jetpack-backup-slug'; import { isPlan } from './is-plan'; import { isDomainMapping } from './is-domain-mapping'; import { isDomainRegistration } from './is-domain-registration'; @@ -100,14 +99,7 @@ export { isCredits } from './is-credits'; export { getDomainProductRanking } from './get-domain-product-ranking'; export { getDomain } from './get-domain'; export { getProductsSlugs } from './get-products-slugs'; - -export function getProductClass( productSlug ) { - if ( isJetpackBackupSlug( productSlug ) ) { - return 'is-jetpack-backup'; - } - - return ''; -} +export { getProductClass } from './get-product-class'; /** * Get Jetpack product display name based on the product purchase object. From 2930520583aefbadae303466b6f029692de3d47a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9rgio=20Gomes?= Date: Thu, 30 Jul 2020 17:13:08 +0100 Subject: [PATCH 53/71] Split out getJetpackProductDisplayName --- .../get-jetpack-product-display-name.js | 20 +++++++++++++++++++ client/lib/products-values/index.js | 17 ++-------------- 2 files changed, 22 insertions(+), 15 deletions(-) create mode 100644 client/lib/products-values/get-jetpack-product-display-name.js diff --git a/client/lib/products-values/get-jetpack-product-display-name.js b/client/lib/products-values/get-jetpack-product-display-name.js new file mode 100644 index 0000000000000..82c4f50bc8e67 --- /dev/null +++ b/client/lib/products-values/get-jetpack-product-display-name.js @@ -0,0 +1,20 @@ +/** + * Internal dependencies + */ +import { assertValidProduct } from 'lib/products-values/utils/assert-valid-product'; +import { formatProduct } from 'lib/products-values/format-product'; +import { getJetpackProductsDisplayNames } from 'lib/products-values/translations'; + +/** + * Get Jetpack product display name based on the product purchase object. + * + * @param product {object} Product purchase object + * @returns {string|object} Product display name + */ +export function getJetpackProductDisplayName( product ) { + product = formatProduct( product ); + assertValidProduct( product ); + const jetpackProductsDisplayNames = getJetpackProductsDisplayNames(); + + return jetpackProductsDisplayNames?.[ product.productSlug ]; +} diff --git a/client/lib/products-values/index.js b/client/lib/products-values/index.js index 752d0cd44a7c7..ad4596ebdde5c 100644 --- a/client/lib/products-values/index.js +++ b/client/lib/products-values/index.js @@ -2,7 +2,7 @@ * Internal dependencies */ import { isGSuiteOrExtraLicenseProductSlug } from 'lib/gsuite'; -import { getJetpackProductsDisplayNames, getJetpackProductsTaglines } from './translations'; +import { getJetpackProductsTaglines } from './translations'; import { PLAN_BUSINESS_MONTHLY, PLAN_BUSINESS, @@ -100,20 +100,7 @@ export { getDomainProductRanking } from './get-domain-product-ranking'; export { getDomain } from './get-domain'; export { getProductsSlugs } from './get-products-slugs'; export { getProductClass } from './get-product-class'; - -/** - * Get Jetpack product display name based on the product purchase object. - * - * @param product {object} Product purchase object - * @returns {string|object} Product display name - */ -export function getJetpackProductDisplayName( product ) { - product = formatProduct( product ); - assertValidProduct( product ); - const jetpackProductsDisplayNames = getJetpackProductsDisplayNames(); - - return jetpackProductsDisplayNames?.[ product.productSlug ]; -} +export { getJetpackProductDisplayName } from './get-jetpack-product-display-name'; /** * Get Jetpack product tagline based on the product purchase object. From 48ab0594879b8c6313e79283f91d19fdd7f94ad9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9rgio=20Gomes?= Date: Thu, 30 Jul 2020 17:14:23 +0100 Subject: [PATCH 54/71] Split out getJetpackProductTagline --- .../get-jetpack-product-tagline.js | 20 +++++++++++++++++++ client/lib/products-values/index.js | 16 +-------------- 2 files changed, 21 insertions(+), 15 deletions(-) create mode 100644 client/lib/products-values/get-jetpack-product-tagline.js diff --git a/client/lib/products-values/get-jetpack-product-tagline.js b/client/lib/products-values/get-jetpack-product-tagline.js new file mode 100644 index 0000000000000..e978a3926b91c --- /dev/null +++ b/client/lib/products-values/get-jetpack-product-tagline.js @@ -0,0 +1,20 @@ +/** + * Internal dependencies + */ +import { assertValidProduct } from 'lib/products-values/utils/assert-valid-product'; +import { formatProduct } from 'lib/products-values/format-product'; +import { getJetpackProductsTaglines } from 'lib/products-values/translations'; + +/** + * Get Jetpack product tagline based on the product purchase object. + * + * @param product {object} Product purchase object + * @returns {string|object} Product tagline + */ +export function getJetpackProductTagline( product ) { + product = formatProduct( product ); + assertValidProduct( product ); + const jetpackProductsTaglines = getJetpackProductsTaglines(); + + return jetpackProductsTaglines?.[ product.productSlug ]; +} diff --git a/client/lib/products-values/index.js b/client/lib/products-values/index.js index ad4596ebdde5c..44a7faa4a4274 100644 --- a/client/lib/products-values/index.js +++ b/client/lib/products-values/index.js @@ -2,7 +2,6 @@ * Internal dependencies */ import { isGSuiteOrExtraLicenseProductSlug } from 'lib/gsuite'; -import { getJetpackProductsTaglines } from './translations'; import { PLAN_BUSINESS_MONTHLY, PLAN_BUSINESS, @@ -101,20 +100,7 @@ export { getDomain } from './get-domain'; export { getProductsSlugs } from './get-products-slugs'; export { getProductClass } from './get-product-class'; export { getJetpackProductDisplayName } from './get-jetpack-product-display-name'; - -/** - * Get Jetpack product tagline based on the product purchase object. - * - * @param product {object} Product purchase object - * @returns {string|object} Product tagline - */ -export function getJetpackProductTagline( product ) { - product = formatProduct( product ); - assertValidProduct( product ); - const jetpackProductsTaglines = getJetpackProductsTaglines(); - - return jetpackProductsTaglines?.[ product.productSlug ]; -} +export { getJetpackProductTagline } from './get-jetpack-product-tagline'; export function isDependentProduct( product, dependentProduct, domainsWithPlansOnly ) { let isPlansOnlyDependent = false; From 1e6b714696a4df328a7637a8a33eb15241e64dc4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9rgio=20Gomes?= Date: Thu, 30 Jul 2020 17:17:07 +0100 Subject: [PATCH 55/71] Split out isDependentProduct --- client/lib/products-values/index.js | 68 +---------------- .../products-values/is-dependent-product.js | 73 +++++++++++++++++++ 2 files changed, 74 insertions(+), 67 deletions(-) create mode 100644 client/lib/products-values/is-dependent-product.js diff --git a/client/lib/products-values/index.js b/client/lib/products-values/index.js index 44a7faa4a4274..90e55b8a23953 100644 --- a/client/lib/products-values/index.js +++ b/client/lib/products-values/index.js @@ -2,52 +2,9 @@ * Internal dependencies */ import { isGSuiteOrExtraLicenseProductSlug } from 'lib/gsuite'; -import { - PLAN_BUSINESS_MONTHLY, - PLAN_BUSINESS, - PLAN_BUSINESS_2_YEARS, - PLAN_PREMIUM, - PLAN_PREMIUM_2_YEARS, - PLAN_PERSONAL, - PLAN_PERSONAL_2_YEARS, -} from 'lib/plans/constants'; import { assertValidProduct } from './utils/assert-valid-product'; import { formatProduct } from './format-product'; -import { isPlan } from './is-plan'; -import { isDomainMapping } from './is-domain-mapping'; -import { isDomainRegistration } from './is-domain-registration'; -import { getDomain } from './get-domain'; - -const productDependencies = { - domain: { - domain_redemption: true, - gapps: true, - gapps_extra_license: true, - gapps_unlimited: true, - }, - [ PLAN_BUSINESS_MONTHLY ]: { - domain_redemption: true, - }, - [ PLAN_BUSINESS ]: { - domain_redemption: true, - }, - [ PLAN_BUSINESS_2_YEARS ]: { - domain_redemption: true, - }, - [ PLAN_PERSONAL ]: { - domain_redemption: true, - }, - [ PLAN_PERSONAL_2_YEARS ]: { - domain_redemption: true, - }, - [ PLAN_PREMIUM ]: { - domain_redemption: true, - }, - [ PLAN_PREMIUM_2_YEARS ]: { - domain_redemption: true, - }, -}; export { formatProduct } from './format-product'; export { isChargeback } from './is-chargeback'; @@ -101,31 +58,8 @@ export { getProductsSlugs } from './get-products-slugs'; export { getProductClass } from './get-product-class'; export { getJetpackProductDisplayName } from './get-jetpack-product-display-name'; export { getJetpackProductTagline } from './get-jetpack-product-tagline'; +export { isDependentProduct } from './is-dependent-product'; -export function isDependentProduct( product, dependentProduct, domainsWithPlansOnly ) { - let isPlansOnlyDependent = false; - - product = formatProduct( product ); - assertValidProduct( product ); - - const slug = isDomainRegistration( product ) ? 'domain' : product.product_slug; - const dependentSlug = isDomainRegistration( dependentProduct ) - ? 'domain' - : dependentProduct.product_slug; - - if ( domainsWithPlansOnly ) { - isPlansOnlyDependent = - isPlan( product ) && - ( isDomainRegistration( dependentProduct ) || isDomainMapping( dependentProduct ) ); - } - - return ( - isPlansOnlyDependent || - ( productDependencies[ slug ] && - productDependencies[ slug ][ dependentSlug ] && - getDomain( product ) === getDomain( dependentProduct ) ) - ); -} export function isFreeWordPressComDomain( product ) { product = formatProduct( product ); assertValidProduct( product ); diff --git a/client/lib/products-values/is-dependent-product.js b/client/lib/products-values/is-dependent-product.js new file mode 100644 index 0000000000000..9a39f6517754f --- /dev/null +++ b/client/lib/products-values/is-dependent-product.js @@ -0,0 +1,73 @@ +/** + * Internal dependencies + */ +import { assertValidProduct } from 'lib/products-values/utils/assert-valid-product'; +import { formatProduct } from 'lib/products-values/format-product'; +import { getDomain } from 'lib/products-values/get-domain'; +import { isDomainMapping } from 'lib/products-values/is-domain-mapping'; +import { isDomainRegistration } from 'lib/products-values/is-domain-registration'; +import { isPlan } from 'lib/products-values/is-plan'; +import { + PLAN_BUSINESS_MONTHLY, + PLAN_BUSINESS, + PLAN_BUSINESS_2_YEARS, + PLAN_PREMIUM, + PLAN_PREMIUM_2_YEARS, + PLAN_PERSONAL, + PLAN_PERSONAL_2_YEARS, +} from 'lib/plans/constants'; + +const productDependencies = { + domain: { + domain_redemption: true, + gapps: true, + gapps_extra_license: true, + gapps_unlimited: true, + }, + [ PLAN_BUSINESS_MONTHLY ]: { + domain_redemption: true, + }, + [ PLAN_BUSINESS ]: { + domain_redemption: true, + }, + [ PLAN_BUSINESS_2_YEARS ]: { + domain_redemption: true, + }, + [ PLAN_PERSONAL ]: { + domain_redemption: true, + }, + [ PLAN_PERSONAL_2_YEARS ]: { + domain_redemption: true, + }, + [ PLAN_PREMIUM ]: { + domain_redemption: true, + }, + [ PLAN_PREMIUM_2_YEARS ]: { + domain_redemption: true, + }, +}; + +export function isDependentProduct( product, dependentProduct, domainsWithPlansOnly ) { + let isPlansOnlyDependent = false; + + product = formatProduct( product ); + assertValidProduct( product ); + + const slug = isDomainRegistration( product ) ? 'domain' : product.product_slug; + const dependentSlug = isDomainRegistration( dependentProduct ) + ? 'domain' + : dependentProduct.product_slug; + + if ( domainsWithPlansOnly ) { + isPlansOnlyDependent = + isPlan( product ) && + ( isDomainRegistration( dependentProduct ) || isDomainMapping( dependentProduct ) ); + } + + return ( + isPlansOnlyDependent || + ( productDependencies[ slug ] && + productDependencies[ slug ][ dependentSlug ] && + getDomain( product ) === getDomain( dependentProduct ) ) + ); +} From d57b1a26d22e823d46ff1cfea2f1ffd1d09ff356 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9rgio=20Gomes?= Date: Thu, 30 Jul 2020 17:18:31 +0100 Subject: [PATCH 56/71] Split out isFreeWordPressComDomain --- client/lib/products-values/index.js | 7 +------ .../products-values/is-free-wordpress-com-domain.js | 11 +++++++++++ 2 files changed, 12 insertions(+), 6 deletions(-) create mode 100644 client/lib/products-values/is-free-wordpress-com-domain.js diff --git a/client/lib/products-values/index.js b/client/lib/products-values/index.js index 90e55b8a23953..da42e45c506d3 100644 --- a/client/lib/products-values/index.js +++ b/client/lib/products-values/index.js @@ -59,12 +59,7 @@ export { getProductClass } from './get-product-class'; export { getJetpackProductDisplayName } from './get-jetpack-product-display-name'; export { getJetpackProductTagline } from './get-jetpack-product-tagline'; export { isDependentProduct } from './is-dependent-product'; - -export function isFreeWordPressComDomain( product ) { - product = formatProduct( product ); - assertValidProduct( product ); - return product.is_free === true; -} +export { isFreeWordPressComDomain } from './is-free-wordpress-com-domain'; export function isGoogleApps( product ) { product = formatProduct( product ); diff --git a/client/lib/products-values/is-free-wordpress-com-domain.js b/client/lib/products-values/is-free-wordpress-com-domain.js new file mode 100644 index 0000000000000..4bb0cf311efbd --- /dev/null +++ b/client/lib/products-values/is-free-wordpress-com-domain.js @@ -0,0 +1,11 @@ +/** + * Internal dependencies + */ +import { assertValidProduct } from 'lib/products-values/utils/assert-valid-product'; +import { formatProduct } from 'lib/products-values/format-product'; + +export function isFreeWordPressComDomain( product ) { + product = formatProduct( product ); + assertValidProduct( product ); + return product.is_free === true; +} From 6b52307c5c06ae991a6f75315496465838e92e67 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9rgio=20Gomes?= Date: Thu, 30 Jul 2020 17:19:31 +0100 Subject: [PATCH 57/71] Split out isGoogleApps --- client/lib/products-values/index.js | 10 +--------- client/lib/products-values/is-google-apps.js | 13 +++++++++++++ 2 files changed, 14 insertions(+), 9 deletions(-) create mode 100644 client/lib/products-values/is-google-apps.js diff --git a/client/lib/products-values/index.js b/client/lib/products-values/index.js index da42e45c506d3..59e65e693ce05 100644 --- a/client/lib/products-values/index.js +++ b/client/lib/products-values/index.js @@ -1,8 +1,6 @@ /** * Internal dependencies */ -import { isGSuiteOrExtraLicenseProductSlug } from 'lib/gsuite'; - import { assertValidProduct } from './utils/assert-valid-product'; import { formatProduct } from './format-product'; @@ -60,13 +58,7 @@ export { getJetpackProductDisplayName } from './get-jetpack-product-display-name export { getJetpackProductTagline } from './get-jetpack-product-tagline'; export { isDependentProduct } from './is-dependent-product'; export { isFreeWordPressComDomain } from './is-free-wordpress-com-domain'; - -export function isGoogleApps( product ) { - product = formatProduct( product ); - assertValidProduct( product ); - - return isGSuiteOrExtraLicenseProductSlug( product.product_slug ); -} +export { isGoogleApps } from './is-google-apps'; export function isGuidedTransfer( product ) { product = formatProduct( product ); diff --git a/client/lib/products-values/is-google-apps.js b/client/lib/products-values/is-google-apps.js new file mode 100644 index 0000000000000..8ec765e1b9591 --- /dev/null +++ b/client/lib/products-values/is-google-apps.js @@ -0,0 +1,13 @@ +/** + * Internal dependencies + */ +import { isGSuiteOrExtraLicenseProductSlug } from 'lib/gsuite'; +import { assertValidProduct } from 'lib/products-values/utils/assert-valid-product'; +import { formatProduct } from 'lib/products-values/format-product'; + +export function isGoogleApps( product ) { + product = formatProduct( product ); + assertValidProduct( product ); + + return isGSuiteOrExtraLicenseProductSlug( product.product_slug ); +} From 01703b54223e01d438d0d196dad328117bd5c1c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9rgio=20Gomes?= Date: Thu, 30 Jul 2020 17:20:36 +0100 Subject: [PATCH 58/71] Split out isGuidedTransfer --- client/lib/products-values/index.js | 8 +------- client/lib/products-values/is-guided-transfer.js | 12 ++++++++++++ 2 files changed, 13 insertions(+), 7 deletions(-) create mode 100644 client/lib/products-values/is-guided-transfer.js diff --git a/client/lib/products-values/index.js b/client/lib/products-values/index.js index 59e65e693ce05..4af50a0af9b5e 100644 --- a/client/lib/products-values/index.js +++ b/client/lib/products-values/index.js @@ -59,13 +59,7 @@ export { getJetpackProductTagline } from './get-jetpack-product-tagline'; export { isDependentProduct } from './is-dependent-product'; export { isFreeWordPressComDomain } from './is-free-wordpress-com-domain'; export { isGoogleApps } from './is-google-apps'; - -export function isGuidedTransfer( product ) { - product = formatProduct( product ); - assertValidProduct( product ); - - return 'guided_transfer' === product.product_slug; -} +export { isGuidedTransfer } from './is-guided-transfer'; export function isTheme( product ) { product = formatProduct( product ); diff --git a/client/lib/products-values/is-guided-transfer.js b/client/lib/products-values/is-guided-transfer.js new file mode 100644 index 0000000000000..e80c177960c42 --- /dev/null +++ b/client/lib/products-values/is-guided-transfer.js @@ -0,0 +1,12 @@ +/** + * Internal dependencies + */ +import { assertValidProduct } from 'lib/products-values/utils/assert-valid-product'; +import { formatProduct } from 'lib/products-values/format-product'; + +export function isGuidedTransfer( product ) { + product = formatProduct( product ); + assertValidProduct( product ); + + return 'guided_transfer' === product.product_slug; +} From dba027d6ce9b6908b3f6ba78daed84b814b04bad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9rgio=20Gomes?= Date: Thu, 30 Jul 2020 17:21:21 +0100 Subject: [PATCH 59/71] Split out isTheme --- client/lib/products-values/index.js | 8 +------- client/lib/products-values/is-theme.js | 12 ++++++++++++ 2 files changed, 13 insertions(+), 7 deletions(-) create mode 100644 client/lib/products-values/is-theme.js diff --git a/client/lib/products-values/index.js b/client/lib/products-values/index.js index 4af50a0af9b5e..6c6514adf828b 100644 --- a/client/lib/products-values/index.js +++ b/client/lib/products-values/index.js @@ -60,13 +60,7 @@ export { isDependentProduct } from './is-dependent-product'; export { isFreeWordPressComDomain } from './is-free-wordpress-com-domain'; export { isGoogleApps } from './is-google-apps'; export { isGuidedTransfer } from './is-guided-transfer'; - -export function isTheme( product ) { - product = formatProduct( product ); - assertValidProduct( product ); - - return 'premium_theme' === product.product_slug; -} +export { isTheme } from './is-theme'; export function isCustomDesign( product ) { product = formatProduct( product ); diff --git a/client/lib/products-values/is-theme.js b/client/lib/products-values/is-theme.js new file mode 100644 index 0000000000000..db2edbf51d754 --- /dev/null +++ b/client/lib/products-values/is-theme.js @@ -0,0 +1,12 @@ +/** + * Internal dependencies + */ +import { assertValidProduct } from 'lib/products-values/utils/assert-valid-product'; +import { formatProduct } from 'lib/products-values/format-product'; + +export function isTheme( product ) { + product = formatProduct( product ); + assertValidProduct( product ); + + return 'premium_theme' === product.product_slug; +} From db35342e40e94d6dd3db55607e188fe0bdafb58b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9rgio=20Gomes?= Date: Thu, 30 Jul 2020 17:22:16 +0100 Subject: [PATCH 60/71] Split out isCustomDesign --- client/lib/products-values/index.js | 8 +------- client/lib/products-values/is-custom-design.js | 12 ++++++++++++ 2 files changed, 13 insertions(+), 7 deletions(-) create mode 100644 client/lib/products-values/is-custom-design.js diff --git a/client/lib/products-values/index.js b/client/lib/products-values/index.js index 6c6514adf828b..703b76aa154b1 100644 --- a/client/lib/products-values/index.js +++ b/client/lib/products-values/index.js @@ -61,13 +61,7 @@ export { isFreeWordPressComDomain } from './is-free-wordpress-com-domain'; export { isGoogleApps } from './is-google-apps'; export { isGuidedTransfer } from './is-guided-transfer'; export { isTheme } from './is-theme'; - -export function isCustomDesign( product ) { - product = formatProduct( product ); - assertValidProduct( product ); - - return 'custom-design' === product.product_slug; -} +export { isCustomDesign } from './is-custom-design'; export function isNoAds( product ) { product = formatProduct( product ); diff --git a/client/lib/products-values/is-custom-design.js b/client/lib/products-values/is-custom-design.js new file mode 100644 index 0000000000000..7fbf9e4f7d133 --- /dev/null +++ b/client/lib/products-values/is-custom-design.js @@ -0,0 +1,12 @@ +/** + * Internal dependencies + */ +import { assertValidProduct } from 'lib/products-values/utils/assert-valid-product'; +import { formatProduct } from 'lib/products-values/format-product'; + +export function isCustomDesign( product ) { + product = formatProduct( product ); + assertValidProduct( product ); + + return 'custom-design' === product.product_slug; +} From 895e4c17efc15f48e4f315dd0c04ecc22f619413 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9rgio=20Gomes?= Date: Thu, 30 Jul 2020 17:23:04 +0100 Subject: [PATCH 61/71] Split out isNoAds --- client/lib/products-values/index.js | 8 +------- client/lib/products-values/is-no-ads.js | 12 ++++++++++++ 2 files changed, 13 insertions(+), 7 deletions(-) create mode 100644 client/lib/products-values/is-no-ads.js diff --git a/client/lib/products-values/index.js b/client/lib/products-values/index.js index 703b76aa154b1..15c59933e23c4 100644 --- a/client/lib/products-values/index.js +++ b/client/lib/products-values/index.js @@ -62,13 +62,7 @@ export { isGoogleApps } from './is-google-apps'; export { isGuidedTransfer } from './is-guided-transfer'; export { isTheme } from './is-theme'; export { isCustomDesign } from './is-custom-design'; - -export function isNoAds( product ) { - product = formatProduct( product ); - assertValidProduct( product ); - - return 'no-adverts/no-adverts.php' === product.product_slug; -} +export { isNoAds } from './is-no-ads'; export function isVideoPress( product ) { product = formatProduct( product ); diff --git a/client/lib/products-values/is-no-ads.js b/client/lib/products-values/is-no-ads.js new file mode 100644 index 0000000000000..76ca6c06ed5db --- /dev/null +++ b/client/lib/products-values/is-no-ads.js @@ -0,0 +1,12 @@ +/** + * Internal dependencies + */ +import { assertValidProduct } from 'lib/products-values/utils/assert-valid-product'; +import { formatProduct } from 'lib/products-values/format-product'; + +export function isNoAds( product ) { + product = formatProduct( product ); + assertValidProduct( product ); + + return 'no-adverts/no-adverts.php' === product.product_slug; +} From 5539c5d55ad1fe87c26e40f50a8cf0bf4c86c704 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9rgio=20Gomes?= Date: Thu, 30 Jul 2020 17:23:55 +0100 Subject: [PATCH 62/71] Split out isVideoPress --- client/lib/products-values/index.js | 8 +------- client/lib/products-values/is-video-press.js | 12 ++++++++++++ 2 files changed, 13 insertions(+), 7 deletions(-) create mode 100644 client/lib/products-values/is-video-press.js diff --git a/client/lib/products-values/index.js b/client/lib/products-values/index.js index 15c59933e23c4..4975e325389a8 100644 --- a/client/lib/products-values/index.js +++ b/client/lib/products-values/index.js @@ -63,13 +63,7 @@ export { isGuidedTransfer } from './is-guided-transfer'; export { isTheme } from './is-theme'; export { isCustomDesign } from './is-custom-design'; export { isNoAds } from './is-no-ads'; - -export function isVideoPress( product ) { - product = formatProduct( product ); - assertValidProduct( product ); - - return 'videopress' === product.product_slug; -} +export { isVideoPress } from './is-video-press'; export function isUnlimitedSpace( product ) { product = formatProduct( product ); diff --git a/client/lib/products-values/is-video-press.js b/client/lib/products-values/is-video-press.js new file mode 100644 index 0000000000000..a0b7c32706b46 --- /dev/null +++ b/client/lib/products-values/is-video-press.js @@ -0,0 +1,12 @@ +/** + * Internal dependencies + */ +import { assertValidProduct } from 'lib/products-values/utils/assert-valid-product'; +import { formatProduct } from 'lib/products-values/format-product'; + +export function isVideoPress( product ) { + product = formatProduct( product ); + assertValidProduct( product ); + + return 'videopress' === product.product_slug; +} From 51e5127f74da76d33349a50f58641cff8995a579 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9rgio=20Gomes?= Date: Thu, 30 Jul 2020 17:24:41 +0100 Subject: [PATCH 63/71] Split out isUnlimitedSpace --- client/lib/products-values/index.js | 8 +------- client/lib/products-values/is-unlimited-space.js | 12 ++++++++++++ 2 files changed, 13 insertions(+), 7 deletions(-) create mode 100644 client/lib/products-values/is-unlimited-space.js diff --git a/client/lib/products-values/index.js b/client/lib/products-values/index.js index 4975e325389a8..dc424f27bf52c 100644 --- a/client/lib/products-values/index.js +++ b/client/lib/products-values/index.js @@ -64,13 +64,7 @@ export { isTheme } from './is-theme'; export { isCustomDesign } from './is-custom-design'; export { isNoAds } from './is-no-ads'; export { isVideoPress } from './is-video-press'; - -export function isUnlimitedSpace( product ) { - product = formatProduct( product ); - assertValidProduct( product ); - - return 'unlimited_space' === product.product_slug; -} +export { isUnlimitedSpace } from './is-unlimited-space'; export function isUnlimitedThemes( product ) { product = formatProduct( product ); diff --git a/client/lib/products-values/is-unlimited-space.js b/client/lib/products-values/is-unlimited-space.js new file mode 100644 index 0000000000000..c0feb41c33377 --- /dev/null +++ b/client/lib/products-values/is-unlimited-space.js @@ -0,0 +1,12 @@ +/** + * Internal dependencies + */ +import { assertValidProduct } from 'lib/products-values/utils/assert-valid-product'; +import { formatProduct } from 'lib/products-values/format-product'; + +export function isUnlimitedSpace( product ) { + product = formatProduct( product ); + assertValidProduct( product ); + + return 'unlimited_space' === product.product_slug; +} From b96d7745655f33ee478c160b7e9480af16ad1a5c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9rgio=20Gomes?= Date: Thu, 30 Jul 2020 17:25:31 +0100 Subject: [PATCH 64/71] Split out isUnlimitedThemes --- client/lib/products-values/index.js | 8 +------- client/lib/products-values/is-unlimited-themes.js | 12 ++++++++++++ 2 files changed, 13 insertions(+), 7 deletions(-) create mode 100644 client/lib/products-values/is-unlimited-themes.js diff --git a/client/lib/products-values/index.js b/client/lib/products-values/index.js index dc424f27bf52c..0ace7ddf66b68 100644 --- a/client/lib/products-values/index.js +++ b/client/lib/products-values/index.js @@ -65,13 +65,7 @@ export { isCustomDesign } from './is-custom-design'; export { isNoAds } from './is-no-ads'; export { isVideoPress } from './is-video-press'; export { isUnlimitedSpace } from './is-unlimited-space'; - -export function isUnlimitedThemes( product ) { - product = formatProduct( product ); - assertValidProduct( product ); - - return 'unlimited_themes' === product.product_slug; -} +export { isUnlimitedThemes } from './is-unlimited-themes'; export function isSpaceUpgrade( product ) { product = formatProduct( product ); diff --git a/client/lib/products-values/is-unlimited-themes.js b/client/lib/products-values/is-unlimited-themes.js new file mode 100644 index 0000000000000..cb24b6a89443b --- /dev/null +++ b/client/lib/products-values/is-unlimited-themes.js @@ -0,0 +1,12 @@ +/** + * Internal dependencies + */ +import { assertValidProduct } from 'lib/products-values/utils/assert-valid-product'; +import { formatProduct } from 'lib/products-values/format-product'; + +export function isUnlimitedThemes( product ) { + product = formatProduct( product ); + assertValidProduct( product ); + + return 'unlimited_themes' === product.product_slug; +} From 76271f4afbecc491c5545cef7be5fbedffb98f5b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9rgio=20Gomes?= Date: Thu, 30 Jul 2020 17:26:19 +0100 Subject: [PATCH 65/71] Split out isSpaceUpgrade --- client/lib/products-values/index.js | 14 +------------- client/lib/products-values/is-space-upgrade.js | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+), 13 deletions(-) create mode 100644 client/lib/products-values/is-space-upgrade.js diff --git a/client/lib/products-values/index.js b/client/lib/products-values/index.js index 0ace7ddf66b68..ffdb6767f05e4 100644 --- a/client/lib/products-values/index.js +++ b/client/lib/products-values/index.js @@ -66,19 +66,7 @@ export { isNoAds } from './is-no-ads'; export { isVideoPress } from './is-video-press'; export { isUnlimitedSpace } from './is-unlimited-space'; export { isUnlimitedThemes } from './is-unlimited-themes'; - -export function isSpaceUpgrade( product ) { - product = formatProduct( product ); - assertValidProduct( product ); - - return ( - '1gb_space_upgrade' === product.product_slug || - '5gb_space_upgrade' === product.product_slug || - '10gb_space_upgrade' === product.product_slug || - '50gb_space_upgrade' === product.product_slug || - '100gb_space_upgrade' === product.product_slug - ); -} +export { isSpaceUpgrade } from './is-space-upgrade'; export function isConciergeSession( product ) { product = formatProduct( product ); diff --git a/client/lib/products-values/is-space-upgrade.js b/client/lib/products-values/is-space-upgrade.js new file mode 100644 index 0000000000000..327717ac45566 --- /dev/null +++ b/client/lib/products-values/is-space-upgrade.js @@ -0,0 +1,18 @@ +/** + * Internal dependencies + */ +import { assertValidProduct } from 'lib/products-values/utils/assert-valid-product'; +import { formatProduct } from 'lib/products-values/format-product'; + +export function isSpaceUpgrade( product ) { + product = formatProduct( product ); + assertValidProduct( product ); + + return ( + '1gb_space_upgrade' === product.product_slug || + '5gb_space_upgrade' === product.product_slug || + '10gb_space_upgrade' === product.product_slug || + '50gb_space_upgrade' === product.product_slug || + '100gb_space_upgrade' === product.product_slug + ); +} From a99d371db5acf4756e6a1ffde48db296daf6e49f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9rgio=20Gomes?= Date: Thu, 30 Jul 2020 17:27:15 +0100 Subject: [PATCH 66/71] Split out isConciergeSession --- client/lib/products-values/index.js | 14 +------------- client/lib/products-values/is-concierge-session.js | 12 ++++++++++++ 2 files changed, 13 insertions(+), 13 deletions(-) create mode 100644 client/lib/products-values/is-concierge-session.js diff --git a/client/lib/products-values/index.js b/client/lib/products-values/index.js index ffdb6767f05e4..5f00eae8da280 100644 --- a/client/lib/products-values/index.js +++ b/client/lib/products-values/index.js @@ -1,9 +1,3 @@ -/** - * Internal dependencies - */ -import { assertValidProduct } from './utils/assert-valid-product'; -import { formatProduct } from './format-product'; - export { formatProduct } from './format-product'; export { isChargeback } from './is-chargeback'; export { includesProduct } from './includes-product'; @@ -67,10 +61,4 @@ export { isVideoPress } from './is-video-press'; export { isUnlimitedSpace } from './is-unlimited-space'; export { isUnlimitedThemes } from './is-unlimited-themes'; export { isSpaceUpgrade } from './is-space-upgrade'; - -export function isConciergeSession( product ) { - product = formatProduct( product ); - assertValidProduct( product ); - - return 'concierge-session' === product.product_slug; -} +export { isConciergeSession } from './is-concierge-session'; diff --git a/client/lib/products-values/is-concierge-session.js b/client/lib/products-values/is-concierge-session.js new file mode 100644 index 0000000000000..73bd927e5d707 --- /dev/null +++ b/client/lib/products-values/is-concierge-session.js @@ -0,0 +1,12 @@ +/** + * Internal dependencies + */ +import { assertValidProduct } from 'lib/products-values/utils/assert-valid-product'; +import { formatProduct } from 'lib/products-values/format-product'; + +export function isConciergeSession( product ) { + product = formatProduct( product ); + assertValidProduct( product ); + + return 'concierge-session' === product.product_slug; +} From 46868334ef8100a2b5f1ed6772373079c78844ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9rgio=20Gomes?= Date: Thu, 30 Jul 2020 17:27:36 +0100 Subject: [PATCH 67/71] Sort exports alphabetically --- client/lib/products-values/index.js | 98 ++++++++++++++--------------- 1 file changed, 49 insertions(+), 49 deletions(-) diff --git a/client/lib/products-values/index.js b/client/lib/products-values/index.js index 5f00eae8da280..d8820bccb97f1 100644 --- a/client/lib/products-values/index.js +++ b/client/lib/products-values/index.js @@ -1,64 +1,64 @@ +export { allowedProductAttributes } from './allowed-product-attributes'; export { formatProduct } from './format-product'; -export { isChargeback } from './is-chargeback'; +export { getDomain } from './get-domain'; +export { getDomainProductRanking } from './get-domain-product-ranking'; +export { getIncludedDomainPurchaseAmount } from './get-included-domain-purchase-amount'; +export { getJetpackProductDisplayName } from './get-jetpack-product-display-name'; +export { getJetpackProductTagline } from './get-jetpack-product-tagline'; +export { getProductClass } from './get-product-class'; +export { getProductFromSlug } from './get-product-from-slug'; +export { getProductsSlugs } from './get-products-slugs'; export { includesProduct } from './includes-product'; -export { isFreePlan } from './is-free-plan'; -export { isFreeJetpackPlan } from './is-free-jetpack-plan'; -export { isFreeTrial } from './is-free-trial'; -export { isPersonal } from './is-personal'; +export { isBiennially } from './is-biennially'; export { isBlogger } from './is-blogger'; -export { isPremium } from './is-premium'; +export { isBundled } from './is-bundled'; export { isBusiness } from './is-business'; -export { isEcommerce } from './is-ecommerce'; -export { isEnterprise } from './is-enterprise'; -export { isJetpackPlanSlug } from './is-jetpack-plan-slug'; -export { isJetpackPlan } from './is-jetpack-plan'; -export { isJetpackBusiness } from './is-jetpack-business'; -export { isJetpackPremium } from './is-jetpack-premium'; -export { isVipPlan } from './is-vip-plan'; -export { isMonthly } from './is-monthly'; -export { isYearly } from './is-yearly'; -export { isBiennially } from './is-biennially'; -export { isJetpackMonthlyPlan } from './is-jetpack-monthly-plan'; -export { isJetpackBackupSlug } from './is-jetpack-backup-slug'; -export { isJetpackBackup } from './is-jetpack-backup'; -export { isJetpackScanSlug } from './is-jetpack-scan-slug'; -export { isJetpackAntiSpamSlug } from './is-jetpack-anti-spam-slug'; -export { isJetpackScan } from './is-jetpack-scan'; -export { isJetpackAntiSpam } from './is-jetpack-anti-spam'; -export { isJetpackCloudProductSlug } from './is-jetpack-cloud-product-slug'; -export { isJetpackProductSlug } from './is-jetpack-product-slug'; -export { isJetpackProduct } from './is-jetpack-product'; -export { getProductFromSlug } from './get-product-from-slug'; -export { isJpphpBundle } from './is-jpphp-bundle'; -export { isPlan } from './is-plan'; -export { isDotComPlan } from './is-dot-com-plan'; +export { isChargeback } from './is-chargeback'; +export { isConciergeSession } from './is-concierge-session'; +export { isCredits } from './is-credits'; +export { isCustomDesign } from './is-custom-design'; +export { isDelayedDomainTransfer } from './is-delayed-domain-transfer'; +export { isDependentProduct } from './is-dependent-product'; export { isDomainMapping } from './is-domain-mapping'; -export { isDomainRegistration } from './is-domain-registration'; export { isDomainProduct } from './is-domain-product'; export { isDomainRedemption } from './is-domain-redemption'; -export { getIncludedDomainPurchaseAmount } from './get-included-domain-purchase-amount'; -export { isSiteRedirect } from './is-site-redirect'; -export { allowedProductAttributes } from './allowed-product-attributes'; +export { isDomainRegistration } from './is-domain-registration'; export { isDomainTransfer } from './is-domain-transfer'; export { isDomainTransferProduct } from './is-domain-transfer-product'; -export { isDelayedDomainTransfer } from './is-delayed-domain-transfer'; -export { isBundled } from './is-bundled'; -export { isCredits } from './is-credits'; -export { getDomainProductRanking } from './get-domain-product-ranking'; -export { getDomain } from './get-domain'; -export { getProductsSlugs } from './get-products-slugs'; -export { getProductClass } from './get-product-class'; -export { getJetpackProductDisplayName } from './get-jetpack-product-display-name'; -export { getJetpackProductTagline } from './get-jetpack-product-tagline'; -export { isDependentProduct } from './is-dependent-product'; +export { isDotComPlan } from './is-dot-com-plan'; +export { isEcommerce } from './is-ecommerce'; +export { isEnterprise } from './is-enterprise'; +export { isFreeJetpackPlan } from './is-free-jetpack-plan'; +export { isFreePlan } from './is-free-plan'; +export { isFreeTrial } from './is-free-trial'; export { isFreeWordPressComDomain } from './is-free-wordpress-com-domain'; export { isGoogleApps } from './is-google-apps'; export { isGuidedTransfer } from './is-guided-transfer'; -export { isTheme } from './is-theme'; -export { isCustomDesign } from './is-custom-design'; +export { isJetpackAntiSpam } from './is-jetpack-anti-spam'; +export { isJetpackAntiSpamSlug } from './is-jetpack-anti-spam-slug'; +export { isJetpackBackup } from './is-jetpack-backup'; +export { isJetpackBackupSlug } from './is-jetpack-backup-slug'; +export { isJetpackBusiness } from './is-jetpack-business'; +export { isJetpackCloudProductSlug } from './is-jetpack-cloud-product-slug'; +export { isJetpackMonthlyPlan } from './is-jetpack-monthly-plan'; +export { isJetpackPlan } from './is-jetpack-plan'; +export { isJetpackPlanSlug } from './is-jetpack-plan-slug'; +export { isJetpackPremium } from './is-jetpack-premium'; +export { isJetpackProduct } from './is-jetpack-product'; +export { isJetpackProductSlug } from './is-jetpack-product-slug'; +export { isJetpackScan } from './is-jetpack-scan'; +export { isJetpackScanSlug } from './is-jetpack-scan-slug'; +export { isJpphpBundle } from './is-jpphp-bundle'; +export { isMonthly } from './is-monthly'; export { isNoAds } from './is-no-ads'; -export { isVideoPress } from './is-video-press'; +export { isPersonal } from './is-personal'; +export { isPlan } from './is-plan'; +export { isPremium } from './is-premium'; +export { isSiteRedirect } from './is-site-redirect'; +export { isSpaceUpgrade } from './is-space-upgrade'; +export { isTheme } from './is-theme'; export { isUnlimitedSpace } from './is-unlimited-space'; export { isUnlimitedThemes } from './is-unlimited-themes'; -export { isSpaceUpgrade } from './is-space-upgrade'; -export { isConciergeSession } from './is-concierge-session'; +export { isVideoPress } from './is-video-press'; +export { isVipPlan } from './is-vip-plan'; +export { isYearly } from './is-yearly'; From 6e5a84fa4ebba77485337da750856dd4c7e021be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9rgio=20Gomes?= Date: Thu, 30 Jul 2020 17:28:11 +0100 Subject: [PATCH 68/71] Add package.json with sideEffects config --- client/lib/products-values/package.json | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 client/lib/products-values/package.json diff --git a/client/lib/products-values/package.json b/client/lib/products-values/package.json new file mode 100644 index 0000000000000..1b95642997c4d --- /dev/null +++ b/client/lib/products-values/package.json @@ -0,0 +1,3 @@ +{ + "sideEffects": false +} From 55ae77ea5102dcd329d2600f3ba7a1f2b8b5338c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9rgio=20Gomes?= Date: Thu, 30 Jul 2020 17:33:38 +0100 Subject: [PATCH 69/71] Import from new individual modules in lib/plans --- client/lib/plans/index.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/client/lib/plans/index.js b/client/lib/plans/index.js index 8e1a96a7fa61b..ec4b3a0915eb4 100644 --- a/client/lib/plans/index.js +++ b/client/lib/plans/index.js @@ -7,7 +7,9 @@ import { difference, get, includes, pick, values, isFunction } from 'lodash'; * Internal dependencies */ import { isEnabled } from 'config'; -import { isFreeJetpackPlan, isJetpackPlan, isMonthly } from 'lib/products-values'; +import { isFreeJetpackPlan } from 'lib/products-values/is-free-jetpack-plan'; +import { isJetpackPlan } from 'lib/products-values/is-jetpack-plan'; +import { isMonthly } from 'lib/products-values/is-monthly'; import { format as formatUrl, getUrlParts, getUrlFromParts, determineUrlType } from 'lib/url'; import { PLAN_FREE, From f086cfb7f0391645dbbf718af1dc9c08bb0f911c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9rgio=20Gomes?= Date: Thu, 30 Jul 2020 17:40:02 +0100 Subject: [PATCH 70/71] Import from new individual modules in lib/domains --- client/lib/domains/cart-utils.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/lib/domains/cart-utils.js b/client/lib/domains/cart-utils.js index 5deb7e7be81c7..cd82d8f5aed45 100644 --- a/client/lib/domains/cart-utils.js +++ b/client/lib/domains/cart-utils.js @@ -7,7 +7,7 @@ import { isEmpty, find, values } from 'lodash'; * Internal dependencies */ import { hasDomainRegistration, getDomainRegistrations } from 'lib/cart-values/cart-items'; -import { isDomainRegistration } from 'lib/products-values'; +import { isDomainRegistration } from 'lib/products-values/is-domain-registration'; /** * Depending on the current step in checkout, the user's domain can be found in From 89a78820be83299ae79578f0b161e0751d5005b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9rgio=20Gomes?= Date: Thu, 30 Jul 2020 18:28:34 +0100 Subject: [PATCH 71/71] Update checkout-thank-you test mocks --- client/my-sites/checkout/checkout-thank-you/test/header.js | 4 ++-- client/my-sites/checkout/checkout-thank-you/test/index.js | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/client/my-sites/checkout/checkout-thank-you/test/header.js b/client/my-sites/checkout/checkout-thank-you/test/header.js index 12d880aee11eb..f6b9cc2f4f994 100644 --- a/client/my-sites/checkout/checkout-thank-you/test/header.js +++ b/client/my-sites/checkout/checkout-thank-you/test/header.js @@ -19,8 +19,8 @@ plans.getFeatureByKey = () => null; plans.shouldFetchSitePlans = () => false; jest.unmock( 'lib/products-values' ); -const productValues = require( 'lib/products-values' ); -productValues.isDotComPlan = jest.fn( () => false ); +const isDotComPlan = require( 'lib/products-values/is-dot-com-plan' ); +isDotComPlan.isDotComPlan = jest.fn( () => false ); jest.mock( 'lib/analytics/tracks', () => ( { recordTracksEvent: () => null, diff --git a/client/my-sites/checkout/checkout-thank-you/test/index.js b/client/my-sites/checkout/checkout-thank-you/test/index.js index 4b19a3c213226..49005eb2ab741 100644 --- a/client/my-sites/checkout/checkout-thank-you/test/index.js +++ b/client/my-sites/checkout/checkout-thank-you/test/index.js @@ -39,7 +39,8 @@ plans.shouldFetchSitePlans = () => false; jest.unmock( 'lib/products-values' ); const productValues = require( 'lib/products-values' ); -productValues.isDotComPlan = jest.fn( () => false ); +const isDotComPlan = require( 'lib/products-values/is-dot-com-plan' ); +isDotComPlan.isDotComPlan = jest.fn( () => false ); jest.mock( 'lib/analytics/tracks', () => ( { recordTracksEvent: () => null,