From b3690f8c849b2d410501a4f59c790440202ba003 Mon Sep 17 00:00:00 2001 From: Antony Kithinzi Date: Tue, 7 Jan 2025 23:33:40 +0100 Subject: [PATCH 1/6] fix: displaying control price in user's local currency if no feature is selected --- src/languages/en.ts | 3 ++- src/languages/es.ts | 3 ++- src/pages/workspace/upgrade/GenericFeaturesView.tsx | 5 +++-- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/languages/en.ts b/src/languages/en.ts index 3f17099c452e..62a72033d7fa 100755 --- a/src/languages/en.ts +++ b/src/languages/en.ts @@ -200,6 +200,7 @@ import type { WorkspaceLockedPlanTypeParams, WorkspaceMemberList, WorkspaceOwnerWillNeedToAddOrUpdatePaymentCardParams, + WorkspacePriceParams, WorkspaceYouMayJoin, YourPlanPriceParams, ZipCodeExampleFormatParams, @@ -4382,7 +4383,7 @@ const translations = { title: 'Upgrade to the Control plan', note: 'Unlock our most powerful features, including:', benefits: { - note: 'The Control plan starts at $9 per active member per month.', + note: ({price}: WorkspacePriceParams) => `The Control plan starts at ${price} per active member per month.`, learnMore: 'Learn more', pricing: 'about our plans and pricing.', benefit1: 'Advanced accounting connections (NetSuite, Sage Intacct, and more)', diff --git a/src/languages/es.ts b/src/languages/es.ts index 3de91d7d2a71..5d396476d2c3 100644 --- a/src/languages/es.ts +++ b/src/languages/es.ts @@ -200,6 +200,7 @@ import type { WorkspaceLockedPlanTypeParams, WorkspaceMemberList, WorkspaceOwnerWillNeedToAddOrUpdatePaymentCardParams, + WorkspacePriceParams, WorkspaceYouMayJoin, YourPlanPriceParams, ZipCodeExampleFormatParams, @@ -4448,7 +4449,7 @@ const translations = { title: 'Mejorar al plan Controlar', note: 'Desbloquea nuestras funciones más potentes, incluyendo:', benefits: { - note: 'El plan Controlar comienza desde $9 por miembro activo al mes.', + note: ({price}: WorkspacePriceParams) => `El plan Controlar comienza desde ${price} por miembro activo al mes.`, learnMore: 'Más información', pricing: 'sobre nuestros planes y precios.', benefit1: 'Conexiones avanzadas de contabilidad (NetSuite, Sage Intacct y más)', diff --git a/src/pages/workspace/upgrade/GenericFeaturesView.tsx b/src/pages/workspace/upgrade/GenericFeaturesView.tsx index c181af37f483..aa07710ec56f 100644 --- a/src/pages/workspace/upgrade/GenericFeaturesView.tsx +++ b/src/pages/workspace/upgrade/GenericFeaturesView.tsx @@ -15,9 +15,10 @@ type GenericFeaturesViewProps = { buttonDisabled?: boolean; loading?: boolean; onUpgrade: () => void; + formattedPrice: string; }; -function GenericFeaturesView({onUpgrade, buttonDisabled, loading}: GenericFeaturesViewProps) { +function GenericFeaturesView({onUpgrade, buttonDisabled, loading, formattedPrice}: GenericFeaturesViewProps) { const styles = useThemeStyles(); const {translate} = useLocalize(); const {isExtraSmallScreenWidth} = useResponsiveLayout(); @@ -51,7 +52,7 @@ function GenericFeaturesView({onUpgrade, buttonDisabled, loading}: GenericFeatur ))} - {translate('workspace.upgrade.commonFeatures.benefits.note')}{' '} + {translate('workspace.upgrade.commonFeatures.benefits.note', {price: formattedPrice})}{' '} Navigation.navigate(ROUTES.SETTINGS_SUBSCRIPTION)} From 7295de653a8d6876bfb061d5dfbceb5f1d1b1ca7 Mon Sep 17 00:00:00 2001 From: Antony Kithinzi Date: Tue, 7 Jan 2025 23:34:55 +0100 Subject: [PATCH 2/6] getting upgrade price from UpgradIntro.tsx --- src/pages/workspace/upgrade/UpgradeIntro.tsx | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/pages/workspace/upgrade/UpgradeIntro.tsx b/src/pages/workspace/upgrade/UpgradeIntro.tsx index a13519c87ad0..d61a617353f7 100644 --- a/src/pages/workspace/upgrade/UpgradeIntro.tsx +++ b/src/pages/workspace/upgrade/UpgradeIntro.tsx @@ -39,10 +39,11 @@ function UpgradeIntro({feature, onUpgrade, buttonDisabled, loading, isCategorizi const preferredCurrency = usePreferredCurrency(); const formattedPrice = React.useMemo(() => { - const upgradePlan = isCategorizing ? CONST.POLICY.TYPE.TEAM : CONST.POLICY.TYPE.CORPORATE; const upgradeCurrency = Object.hasOwn(CONST.SUBSCRIPTION_PRICES, preferredCurrency) ? preferredCurrency : CONST.PAYMENT_CARD_CURRENCY.USD; - const upgradePrice = CONST.SUBSCRIPTION_PRICES[upgradeCurrency][upgradePlan][CONST.SUBSCRIPTION.TYPE.ANNUAL]; - return `${convertToShortDisplayString(upgradePrice, upgradeCurrency)} `; + return convertToShortDisplayString( + CONST.SUBSCRIPTION_PRICES[upgradeCurrency][isCategorizing ? CONST.POLICY.TYPE.TEAM : CONST.POLICY.TYPE.CORPORATE][CONST.SUBSCRIPTION.TYPE.ANNUAL], + upgradeCurrency, + ); }, [preferredCurrency, isCategorizing]); if (!feature) { @@ -50,6 +51,7 @@ function UpgradeIntro({feature, onUpgrade, buttonDisabled, loading, isCategorizi ); @@ -87,7 +89,7 @@ function UpgradeIntro({feature, onUpgrade, buttonDisabled, loading, isCategorizi {translate(feature.description)} {translate(`workspace.upgrade.${feature.id}.onlyAvailableOnPlan`)} - {formattedPrice} + {`${formattedPrice} `} {translate(`workspace.upgrade.pricing.perActiveMember`)} From a8ed8ba422de3c2589dea1733d21ebe84038a7db Mon Sep 17 00:00:00 2001 From: Antony Kithinzi Date: Wed, 8 Jan 2025 00:06:21 +0100 Subject: [PATCH 3/6] created WorkspacePriceParams --- src/languages/params.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/languages/params.ts b/src/languages/params.ts index 969706eeeb2f..b52c16d4a62e 100644 --- a/src/languages/params.ts +++ b/src/languages/params.ts @@ -294,6 +294,8 @@ type AccountOwnerParams = {accountOwnerEmail: string}; type ExportedToIntegrationParams = {label: string; markedManually?: boolean; inProgress?: boolean; lastModified?: string}; +type WorkspacePriceParams = {price: string}; + type IntegrationsMessageParams = { label: string; result: { @@ -724,6 +726,7 @@ export type { ReportArchiveReasonsClosedParams, ReportArchiveReasonsMergedParams, ReportPolicyNameParams, + WorkspacePriceParams, ReportArchiveReasonsInvoiceReceiverPolicyDeletedParams, ReportArchiveReasonsRemovedFromPolicyParams, RequestAmountParams, From 326e33e6d39a054177f5717a8642818f5a947ecb Mon Sep 17 00:00:00 2001 From: "Antony M. Kithinzi" Date: Wed, 15 Jan 2025 21:36:03 +0000 Subject: [PATCH 4/6] lint.. --- src/languages/en.ts | 1 - src/languages/es.ts | 1 - src/pages/workspace/upgrade/GenericFeaturesView.tsx | 10 ---------- src/pages/workspace/upgrade/UpgradeIntro.tsx | 6 +++--- 4 files changed, 3 insertions(+), 15 deletions(-) diff --git a/src/languages/en.ts b/src/languages/en.ts index 0cfef3e5969d..37b9904df165 100755 --- a/src/languages/en.ts +++ b/src/languages/en.ts @@ -200,7 +200,6 @@ import type { WorkspaceLockedPlanTypeParams, WorkspaceMemberList, WorkspaceOwnerWillNeedToAddOrUpdatePaymentCardParams, - WorkspacePriceParams, WorkspaceYouMayJoin, YourPlanPriceParams, ZipCodeExampleFormatParams, diff --git a/src/languages/es.ts b/src/languages/es.ts index 2a963def2e10..6e989aebe7aa 100644 --- a/src/languages/es.ts +++ b/src/languages/es.ts @@ -200,7 +200,6 @@ import type { WorkspaceLockedPlanTypeParams, WorkspaceMemberList, WorkspaceOwnerWillNeedToAddOrUpdatePaymentCardParams, - WorkspacePriceParams, WorkspaceYouMayJoin, YourPlanPriceParams, ZipCodeExampleFormatParams, diff --git a/src/pages/workspace/upgrade/GenericFeaturesView.tsx b/src/pages/workspace/upgrade/GenericFeaturesView.tsx index 5fcd07dcd7cb..5eb73285de26 100644 --- a/src/pages/workspace/upgrade/GenericFeaturesView.tsx +++ b/src/pages/workspace/upgrade/GenericFeaturesView.tsx @@ -6,10 +6,8 @@ import * as Illustrations from '@components/Icon/Illustrations'; import Text from '@components/Text'; import TextLink from '@components/TextLink'; import useLocalize from '@hooks/useLocalize'; -import usePreferredCurrency from '@hooks/usePreferredCurrency'; import useResponsiveLayout from '@hooks/useResponsiveLayout'; import useThemeStyles from '@hooks/useThemeStyles'; -import {convertToShortDisplayString} from '@libs/CurrencyUtils'; import Navigation from '@libs/Navigation/Navigation'; import CONST from '@src/CONST'; import ROUTES from '@src/ROUTES'; @@ -26,7 +24,6 @@ function GenericFeaturesView({onUpgrade, buttonDisabled, loading, formattedPrice const styles = useThemeStyles(); const {translate} = useLocalize(); const {isExtraSmallScreenWidth} = useResponsiveLayout(); - const preferredCurrency = usePreferredCurrency(); const benefits = [ translate('workspace.upgrade.commonFeatures.benefits.benefit1'), @@ -35,12 +32,6 @@ function GenericFeaturesView({onUpgrade, buttonDisabled, loading, formattedPrice translate('workspace.upgrade.commonFeatures.benefits.benefit4'), ]; - const formattedPrice = React.useMemo(() => { - const upgradeCurrency = Object.hasOwn(CONST.SUBSCRIPTION_PRICES, preferredCurrency) ? preferredCurrency : CONST.PAYMENT_CARD_CURRENCY.USD; - const upgradePrice = CONST.SUBSCRIPTION_PRICES[upgradeCurrency][CONST.POLICY.TYPE.CORPORATE][CONST.SUBSCRIPTION.TYPE.ANNUAL]; - return `${convertToShortDisplayString(upgradePrice, upgradeCurrency)} `; - }, [preferredCurrency]); - return ( @@ -63,7 +54,6 @@ function GenericFeaturesView({onUpgrade, buttonDisabled, loading, formattedPrice ))} - {translate('workspace.upgrade.commonFeatures.benefits.startsAt')} {formattedPrice} {translate('workspace.upgrade.commonFeatures.benefits.perMember')}{' '} diff --git a/src/pages/workspace/upgrade/UpgradeIntro.tsx b/src/pages/workspace/upgrade/UpgradeIntro.tsx index 29ba86aec87e..f743788de168 100644 --- a/src/pages/workspace/upgrade/UpgradeIntro.tsx +++ b/src/pages/workspace/upgrade/UpgradeIntro.tsx @@ -41,10 +41,10 @@ function UpgradeIntro({feature, onUpgrade, buttonDisabled, loading, isCategorizi const formattedPrice = React.useMemo(() => { const upgradeCurrency = Object.hasOwn(CONST.SUBSCRIPTION_PRICES, preferredCurrency) ? preferredCurrency : CONST.PAYMENT_CARD_CURRENCY.USD; - return convertToShortDisplayString( + return `${convertToShortDisplayString( CONST.SUBSCRIPTION_PRICES[upgradeCurrency][isCategorizing ? CONST.POLICY.TYPE.TEAM : CONST.POLICY.TYPE.CORPORATE][CONST.SUBSCRIPTION.TYPE.ANNUAL], upgradeCurrency, - ); + )} `; }, [preferredCurrency, isCategorizing]); /** @@ -98,7 +98,7 @@ function UpgradeIntro({feature, onUpgrade, buttonDisabled, loading, isCategorizi {translate(feature.description)} {translate(`workspace.upgrade.${feature.id}.onlyAvailableOnPlan`)} - {`${formattedPrice} `} + formattedPrice {translate(`workspace.upgrade.pricing.perActiveMember`)} From e1bd74251019204df39793474b0ab525b5cb86fe Mon Sep 17 00:00:00 2001 From: "Antony M. Kithinzi" Date: Wed, 29 Jan 2025 20:38:13 +0000 Subject: [PATCH 5/6] remove WorkspacePriceParams --- src/languages/params.ts | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/languages/params.ts b/src/languages/params.ts index 7fecad8aab1e..59e4acf74f6a 100644 --- a/src/languages/params.ts +++ b/src/languages/params.ts @@ -301,8 +301,6 @@ type AccountOwnerParams = {accountOwnerEmail: string}; type ExportedToIntegrationParams = {label: string; markedManually?: boolean; inProgress?: boolean; lastModified?: string}; -type WorkspacePriceParams = {price: string}; - type IntegrationsMessageParams = { label: string; result: { @@ -728,7 +726,6 @@ export type { ReportArchiveReasonsClosedParams, ReportArchiveReasonsMergedParams, ReportPolicyNameParams, - WorkspacePriceParams, ReportArchiveReasonsInvoiceReceiverPolicyDeletedParams, ReportArchiveReasonsRemovedFromPolicyParams, RequestAmountParams, From 3eaf67be3d12790e899e33774eab161bdf6164a1 Mon Sep 17 00:00:00 2001 From: "Antony M. Kithinzi" Date: Thu, 30 Jan 2025 03:18:32 +0300 Subject: [PATCH 6/6] resolving formatted price issue --- src/pages/workspace/upgrade/UpgradeIntro.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/workspace/upgrade/UpgradeIntro.tsx b/src/pages/workspace/upgrade/UpgradeIntro.tsx index f743788de168..c64441d45899 100644 --- a/src/pages/workspace/upgrade/UpgradeIntro.tsx +++ b/src/pages/workspace/upgrade/UpgradeIntro.tsx @@ -98,7 +98,7 @@ function UpgradeIntro({feature, onUpgrade, buttonDisabled, loading, isCategorizi {translate(feature.description)} {translate(`workspace.upgrade.${feature.id}.onlyAvailableOnPlan`)} - formattedPrice + {formattedPrice} {translate(`workspace.upgrade.pricing.perActiveMember`)}