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}