diff --git a/src/pages/settings/Subscription/SubscriptionSettings/index.native.tsx b/src/pages/settings/Subscription/SubscriptionSettings/index.native.tsx index c50e0aa7fb4c2..42cee9e508e6d 100644 --- a/src/pages/settings/Subscription/SubscriptionSettings/index.native.tsx +++ b/src/pages/settings/Subscription/SubscriptionSettings/index.native.tsx @@ -11,12 +11,13 @@ import ScrollView from '@components/ScrollView'; import Text from '@components/Text'; import TextLink from '@components/TextLink'; import useLocalize from '@hooks/useLocalize'; +import usePolicy from '@hooks/usePolicy'; import usePreferredCurrency from '@hooks/usePreferredCurrency'; import useSubscriptionPlan from '@hooks/useSubscriptionPlan'; import useThemeIllustrations from '@hooks/useThemeIllustrations'; import useThemeStyles from '@hooks/useThemeStyles'; import {convertToShortDisplayString} from '@libs/CurrencyUtils'; -import {getRoom} from '@libs/ReportUtils'; +import {isPolicyAdmin} from '@libs/PolicyUtils'; import {getSubscriptionPrice} from '@libs/SubscriptionUtils'; import Navigation from '@navigation/Navigation'; import variables from '@styles/variables'; @@ -27,9 +28,11 @@ import ROUTES from '@src/ROUTES'; function SubscriptionSettings() { const {translate} = useLocalize(); const styles = useThemeStyles(); - const [account] = useOnyx(ONYXKEYS.ACCOUNT); - const [privateSubscription] = useOnyx(ONYXKEYS.NVP_PRIVATE_SUBSCRIPTION); - const [activePolicyID] = useOnyx(ONYXKEYS.NVP_ACTIVE_POLICY_ID); + const [account] = useOnyx(ONYXKEYS.ACCOUNT, {canBeMissing: false}); + const [privateSubscription] = useOnyx(ONYXKEYS.NVP_PRIVATE_SUBSCRIPTION, {canBeMissing: false}); + const [activePolicyID] = useOnyx(ONYXKEYS.NVP_ACTIVE_POLICY_ID, {canBeMissing: true}); + const activePolicy = usePolicy(activePolicyID); + const isActivePolicyAdmin = isPolicyAdmin(activePolicy); const subscriptionPlan = useSubscriptionPlan(); const preferredCurrency = usePreferredCurrency(); const illustrations = useThemeIllustrations(); @@ -39,13 +42,10 @@ function SubscriptionSettings() { lower: convertToShortDisplayString(subscriptionPrice, preferredCurrency), upper: convertToShortDisplayString(subscriptionPrice * CONST.SUBSCRIPTION_PRICE_FACTOR, preferredCurrency), }); + const adminsChatReportID = isActivePolicyAdmin && activePolicy?.chatReportIDAdmins ? activePolicy.chatReportIDAdmins.toString() : undefined; const openAdminsRoom = () => { - if (!activePolicyID) { - return; - } - const roomReport = getRoom(CONST.REPORT.CHAT_TYPE.POLICY_ADMINS, activePolicyID); - Navigation.navigate(ROUTES.REPORT_WITH_ID.getRoute(roomReport?.reportID)); + Navigation.navigate(ROUTES.REPORT_WITH_ID.getRoute(adminsChatReportID)); }; const subscriptionSizeSection = @@ -74,7 +74,11 @@ function SubscriptionSettings() { {translate('subscription.subscriptionSettings.learnMore.part1')} {translate('subscription.subscriptionSettings.learnMore.pricingPage')} {translate('subscription.subscriptionSettings.learnMore.part2')} - {translate('subscription.subscriptionSettings.learnMore.adminsRoom')} + {adminsChatReportID ? ( + {translate('subscription.subscriptionSettings.learnMore.adminsRoom')} + ) : ( + translate('subscription.subscriptionSettings.learnMore.adminsRoom') + )} {translate('subscription.subscriptionSettings.estimatedPrice')} {priceDetails} diff --git a/src/pages/settings/Subscription/SubscriptionSettings/index.tsx b/src/pages/settings/Subscription/SubscriptionSettings/index.tsx index b3843473a50ee..0d79fc716db83 100644 --- a/src/pages/settings/Subscription/SubscriptionSettings/index.tsx +++ b/src/pages/settings/Subscription/SubscriptionSettings/index.tsx @@ -17,6 +17,7 @@ import Text from '@components/Text'; import TextLink from '@components/TextLink'; import useHasTeam2025Pricing from '@hooks/useHasTeam2025Pricing'; import useLocalize from '@hooks/useLocalize'; +import usePolicy from '@hooks/usePolicy'; import usePreferredCurrency from '@hooks/usePreferredCurrency'; import useSubscriptionPlan from '@hooks/useSubscriptionPlan'; import useSubscriptionPossibleCostSavings from '@hooks/useSubscriptionPossibleCostSavings'; @@ -24,7 +25,7 @@ import useTheme from '@hooks/useTheme'; import useThemeIllustrations from '@hooks/useThemeIllustrations'; import useThemeStyles from '@hooks/useThemeStyles'; import {convertToShortDisplayString} from '@libs/CurrencyUtils'; -import {getRoom} from '@libs/ReportUtils'; +import {isPolicyAdmin} from '@libs/PolicyUtils'; import {getSubscriptionPrice} from '@libs/SubscriptionUtils'; import Navigation from '@navigation/Navigation'; import NotFoundPage from '@pages/ErrorPage/NotFoundPage'; @@ -55,9 +56,11 @@ function SubscriptionSettings() { const {translate} = useLocalize(); const styles = useThemeStyles(); const theme = useTheme(); - const [account] = useOnyx(ONYXKEYS.ACCOUNT); - const [privateSubscription] = useOnyx(ONYXKEYS.NVP_PRIVATE_SUBSCRIPTION); - const [activePolicyID] = useOnyx(ONYXKEYS.NVP_ACTIVE_POLICY_ID); + const [account] = useOnyx(ONYXKEYS.ACCOUNT, {canBeMissing: false}); + const [privateSubscription] = useOnyx(ONYXKEYS.NVP_PRIVATE_SUBSCRIPTION, {canBeMissing: false}); + const [activePolicyID] = useOnyx(ONYXKEYS.NVP_ACTIVE_POLICY_ID, {canBeMissing: true}); + const activePolicy = usePolicy(activePolicyID); + const isActivePolicyAdmin = isPolicyAdmin(activePolicy); const subscriptionPlan = useSubscriptionPlan(); const hasTeam2025Pricing = useHasTeam2025Pricing(); const preferredCurrency = usePreferredCurrency(); @@ -66,12 +69,13 @@ function SubscriptionSettings() { const isActingAsDelegate = !!account?.delegatedAccess?.delegate; const isAnnual = privateSubscription?.type === CONST.SUBSCRIPTION.TYPE.ANNUAL; const [isNoDelegateAccessMenuVisible, setIsNoDelegateAccessMenuVisible] = useState(false); - const [privateTaxExempt] = useOnyx(ONYXKEYS.NVP_PRIVATE_TAX_EXEMPT); + const [privateTaxExempt] = useOnyx(ONYXKEYS.NVP_PRIVATE_TAX_EXEMPT, {canBeMissing: true}); const subscriptionPrice = getSubscriptionPrice(subscriptionPlan, preferredCurrency, privateSubscription?.type); const priceDetails = translate(`subscription.yourPlan.${subscriptionPlan === CONST.POLICY.TYPE.CORPORATE ? 'control' : 'collect'}.${isAnnual ? 'priceAnnual' : 'pricePayPerUse'}`, { lower: convertToShortDisplayString(subscriptionPrice, preferredCurrency), upper: convertToShortDisplayString(subscriptionPrice * CONST.SUBSCRIPTION_PRICE_FACTOR, preferredCurrency), }); + const adminsChatReportID = isActivePolicyAdmin && activePolicy?.chatReportIDAdmins ? activePolicy.chatReportIDAdmins.toString() : undefined; const onOptionSelected = (option: SubscriptionType) => { if (privateSubscription?.type !== option && isActingAsDelegate) { @@ -157,11 +161,7 @@ function SubscriptionSettings() { ); const openAdminsRoom = () => { - if (!activePolicyID) { - return; - } - const roomReport = getRoom(CONST.REPORT.CHAT_TYPE.POLICY_ADMINS, activePolicyID); - Navigation.navigate(ROUTES.REPORT_WITH_ID.getRoute(roomReport?.reportID)); + Navigation.navigate(ROUTES.REPORT_WITH_ID.getRoute(adminsChatReportID)); }; if (!subscriptionPlan || (hasTeam2025Pricing && subscriptionPlan === CONST.POLICY.TYPE.TEAM)) { @@ -183,7 +183,11 @@ function SubscriptionSettings() { {translate('subscription.subscriptionSettings.learnMore.part1')} {translate('subscription.subscriptionSettings.learnMore.pricingPage')} {translate('subscription.subscriptionSettings.learnMore.part2')} - {translate('subscription.subscriptionSettings.learnMore.adminsRoom')} + {adminsChatReportID ? ( + {translate('subscription.subscriptionSettings.learnMore.adminsRoom')} + ) : ( + translate('subscription.subscriptionSettings.learnMore.adminsRoom') + )} {translate('subscription.subscriptionSettings.estimatedPrice')} {priceDetails}