Skip to content

Commit fdd1db8

Browse files
authored
Merge pull request #54340 from Tony-MK/fix/53878
Displaying price of upgrading a subscription in the user's local currency.
2 parents d4eaef9 + a794a25 commit fdd1db8

File tree

5 files changed

+56
-51
lines changed

5 files changed

+56
-51
lines changed

src/CONST.ts

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2981,6 +2981,50 @@ const CONST = {
29812981
PAYPERUSE: 'monthly2018',
29822982
},
29832983
},
2984+
get SUBSCRIPTION_PRICES() {
2985+
return {
2986+
[this.PAYMENT_CARD_CURRENCY.USD]: {
2987+
[this.POLICY.TYPE.CORPORATE]: {
2988+
[this.SUBSCRIPTION.TYPE.ANNUAL]: 900,
2989+
[this.SUBSCRIPTION.TYPE.PAYPERUSE]: 1800,
2990+
},
2991+
[this.POLICY.TYPE.TEAM]: {
2992+
[this.SUBSCRIPTION.TYPE.ANNUAL]: 500,
2993+
[this.SUBSCRIPTION.TYPE.PAYPERUSE]: 1000,
2994+
},
2995+
},
2996+
[this.PAYMENT_CARD_CURRENCY.AUD]: {
2997+
[this.POLICY.TYPE.CORPORATE]: {
2998+
[this.SUBSCRIPTION.TYPE.ANNUAL]: 1500,
2999+
[this.SUBSCRIPTION.TYPE.PAYPERUSE]: 3000,
3000+
},
3001+
[this.POLICY.TYPE.TEAM]: {
3002+
[this.SUBSCRIPTION.TYPE.ANNUAL]: 700,
3003+
[this.SUBSCRIPTION.TYPE.PAYPERUSE]: 1400,
3004+
},
3005+
},
3006+
[this.PAYMENT_CARD_CURRENCY.GBP]: {
3007+
[this.POLICY.TYPE.CORPORATE]: {
3008+
[this.SUBSCRIPTION.TYPE.ANNUAL]: 700,
3009+
[this.SUBSCRIPTION.TYPE.PAYPERUSE]: 1400,
3010+
},
3011+
[this.POLICY.TYPE.TEAM]: {
3012+
[this.SUBSCRIPTION.TYPE.ANNUAL]: 400,
3013+
[this.SUBSCRIPTION.TYPE.PAYPERUSE]: 800,
3014+
},
3015+
},
3016+
[this.PAYMENT_CARD_CURRENCY.NZD]: {
3017+
[this.POLICY.TYPE.CORPORATE]: {
3018+
[this.SUBSCRIPTION.TYPE.ANNUAL]: 1600,
3019+
[this.SUBSCRIPTION.TYPE.PAYPERUSE]: 3200,
3020+
},
3021+
[this.POLICY.TYPE.TEAM]: {
3022+
[this.SUBSCRIPTION.TYPE.ANNUAL]: 800,
3023+
[this.SUBSCRIPTION.TYPE.PAYPERUSE]: 1600,
3024+
},
3025+
},
3026+
};
3027+
},
29843028
REGEX: {
29853029
SPECIAL_CHARS_WITHOUT_NEWLINE: /((?!\n)[()-\s\t])/g,
29863030
DIGITS_AND_PLUS: /^\+?[0-9]*$/,

src/hooks/useSubscriptionPrice.ts

Lines changed: 1 addition & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -4,49 +4,6 @@ import ONYXKEYS from '@src/ONYXKEYS';
44
import usePreferredCurrency from './usePreferredCurrency';
55
import useSubscriptionPlan from './useSubscriptionPlan';
66

7-
const SUBSCRIPTION_PRICES = {
8-
[CONST.PAYMENT_CARD_CURRENCY.USD]: {
9-
[CONST.POLICY.TYPE.CORPORATE]: {
10-
[CONST.SUBSCRIPTION.TYPE.ANNUAL]: 900,
11-
[CONST.SUBSCRIPTION.TYPE.PAYPERUSE]: 1800,
12-
},
13-
[CONST.POLICY.TYPE.TEAM]: {
14-
[CONST.SUBSCRIPTION.TYPE.ANNUAL]: 500,
15-
[CONST.SUBSCRIPTION.TYPE.PAYPERUSE]: 1000,
16-
},
17-
},
18-
[CONST.PAYMENT_CARD_CURRENCY.AUD]: {
19-
[CONST.POLICY.TYPE.CORPORATE]: {
20-
[CONST.SUBSCRIPTION.TYPE.ANNUAL]: 1500,
21-
[CONST.SUBSCRIPTION.TYPE.PAYPERUSE]: 3000,
22-
},
23-
[CONST.POLICY.TYPE.TEAM]: {
24-
[CONST.SUBSCRIPTION.TYPE.ANNUAL]: 700,
25-
[CONST.SUBSCRIPTION.TYPE.PAYPERUSE]: 1400,
26-
},
27-
},
28-
[CONST.PAYMENT_CARD_CURRENCY.GBP]: {
29-
[CONST.POLICY.TYPE.CORPORATE]: {
30-
[CONST.SUBSCRIPTION.TYPE.ANNUAL]: 700,
31-
[CONST.SUBSCRIPTION.TYPE.PAYPERUSE]: 1400,
32-
},
33-
[CONST.POLICY.TYPE.TEAM]: {
34-
[CONST.SUBSCRIPTION.TYPE.ANNUAL]: 400,
35-
[CONST.SUBSCRIPTION.TYPE.PAYPERUSE]: 800,
36-
},
37-
},
38-
[CONST.PAYMENT_CARD_CURRENCY.NZD]: {
39-
[CONST.POLICY.TYPE.CORPORATE]: {
40-
[CONST.SUBSCRIPTION.TYPE.ANNUAL]: 1600,
41-
[CONST.SUBSCRIPTION.TYPE.PAYPERUSE]: 3200,
42-
},
43-
[CONST.POLICY.TYPE.TEAM]: {
44-
[CONST.SUBSCRIPTION.TYPE.ANNUAL]: 800,
45-
[CONST.SUBSCRIPTION.TYPE.PAYPERUSE]: 1600,
46-
},
47-
},
48-
} as const;
49-
507
function useSubscriptionPrice(): number {
518
const preferredCurrency = usePreferredCurrency();
529
const subscriptionPlan = useSubscriptionPlan();
@@ -56,7 +13,7 @@ function useSubscriptionPrice(): number {
5613
return 0;
5714
}
5815

59-
return SUBSCRIPTION_PRICES[preferredCurrency][subscriptionPlan][privateSubscription.type];
16+
return CONST.SUBSCRIPTION_PRICES[preferredCurrency][subscriptionPlan][privateSubscription.type];
6017
}
6118

6219
export default useSubscriptionPrice;

src/languages/en.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4357,8 +4357,6 @@ const translations = {
43574357
onlyAvailableOnPlan: 'Per diem are only available on the Control plan, starting at ',
43584358
},
43594359
pricing: {
4360-
collect: '$5 ',
4361-
amount: '$9 ',
43624360
perActiveMember: 'per active member per month.',
43634361
},
43644362
note: {

src/languages/es.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4428,8 +4428,6 @@ const translations = {
44284428
aboutOurPlans: 'sobre nuestros planes y precios.',
44294429
},
44304430
pricing: {
4431-
collect: '$5 ',
4432-
amount: '$9 ',
44334431
perActiveMember: 'por miembro activo al mes.',
44344432
},
44354433
upgradeToUnlock: 'Desbloquear esta función',

src/pages/workspace/upgrade/UpgradeIntro.tsx

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,12 @@ import Text from '@components/Text';
1111
import TextLink from '@components/TextLink';
1212
import useEnvironment from '@hooks/useEnvironment';
1313
import useLocalize from '@hooks/useLocalize';
14+
import usePreferredCurrency from '@hooks/usePreferredCurrency';
1415
import useResponsiveLayout from '@hooks/useResponsiveLayout';
1516
import useSubscriptionPlan from '@hooks/useSubscriptionPlan';
1617
import useThemeStyles from '@hooks/useThemeStyles';
1718
import {openLink} from '@libs/actions/Link';
19+
import {convertToShortDisplayString} from '@libs/CurrencyUtils';
1820
import Navigation from '@libs/Navigation/Navigation';
1921
import CONST from '@src/CONST';
2022
import ROUTES from '@src/ROUTES';
@@ -34,6 +36,14 @@ function UpgradeIntro({feature, onUpgrade, buttonDisabled, loading, isCategorizi
3436
const {translate} = useLocalize();
3537
const {environmentURL} = useEnvironment();
3638
const subscriptionPlan = useSubscriptionPlan();
39+
const preferredCurrency = usePreferredCurrency();
40+
41+
const formattedPrice = React.useMemo(() => {
42+
const upgradePlan = isCategorizing ? CONST.POLICY.TYPE.TEAM : CONST.POLICY.TYPE.CORPORATE;
43+
const upgradeCurrency = Object.hasOwn(CONST.SUBSCRIPTION_PRICES, preferredCurrency) ? preferredCurrency : CONST.PAYMENT_CARD_CURRENCY.USD;
44+
const upgradePrice = CONST.SUBSCRIPTION_PRICES[upgradeCurrency][upgradePlan][CONST.SUBSCRIPTION.TYPE.ANNUAL];
45+
return `${convertToShortDisplayString(upgradePrice, upgradeCurrency)} `;
46+
}, [preferredCurrency, isCategorizing]);
3747

3848
if (!feature) {
3949
return (
@@ -77,9 +87,7 @@ function UpgradeIntro({feature, onUpgrade, buttonDisabled, loading, isCategorizi
7787
<Text style={[styles.textNormal, styles.textSupporting, styles.mb4]}>{translate(feature.description)}</Text>
7888
<Text style={[styles.textNormal, styles.textSupporting]}>
7989
{translate(`workspace.upgrade.${feature.id}.onlyAvailableOnPlan`)}
80-
<Text style={[styles.textSupporting, styles.textBold]}>
81-
{isCategorizing ? translate(`workspace.upgrade.pricing.collect`) : translate(`workspace.upgrade.pricing.amount`)}
82-
</Text>
90+
<Text style={[styles.textSupporting, styles.textBold]}>{formattedPrice}</Text>
8391
{translate(`workspace.upgrade.pricing.perActiveMember`)}
8492
</Text>
8593
</View>

0 commit comments

Comments
 (0)