diff --git a/src/libs/PolicyUtils.js b/src/libs/PolicyUtils.js
index f19420a2b38..91396be628a 100644
--- a/src/libs/PolicyUtils.js
+++ b/src/libs/PolicyUtils.js
@@ -92,4 +92,12 @@ function isExpensifyTeam(email) {
return emailDomain === CONST.EXPENSIFY_PARTNER_NAME || emailDomain === CONST.EMAIL.GUIDES_DOMAIN;
}
-export {hasPolicyMemberError, hasPolicyError, hasPolicyErrorFields, hasCustomUnitsError, getPolicyBrickRoadIndicatorStatus, shouldShowPolicy, isExpensifyTeam};
+/**
+ * Checks if the current user is an admin of the policy.
+ *
+ * @param {Object} policy
+ * @returns {Boolean}
+ */
+const isPolicyAdmin = (policy) => lodashGet(policy, 'role') === CONST.POLICY.ROLE.ADMIN;
+
+export {hasPolicyMemberError, hasPolicyError, hasPolicyErrorFields, hasCustomUnitsError, getPolicyBrickRoadIndicatorStatus, shouldShowPolicy, isExpensifyTeam, isPolicyAdmin};
diff --git a/src/pages/ReportDetailsPage.js b/src/pages/ReportDetailsPage.js
index 11badcede40..f073abbb261 100644
--- a/src/pages/ReportDetailsPage.js
+++ b/src/pages/ReportDetailsPage.js
@@ -2,7 +2,7 @@ import React, {Component} from 'react';
import PropTypes from 'prop-types';
import {withOnyx} from 'react-native-onyx';
import _ from 'underscore';
-import {View, ScrollView} from 'react-native';
+import {View, ScrollView, Pressable} from 'react-native';
import lodashGet from 'lodash/get';
import RoomHeaderAvatars from '../components/RoomHeaderAvatars';
import compose from '../libs/compose';
@@ -15,6 +15,7 @@ import styles from '../styles/styles';
import DisplayNames from '../components/DisplayNames';
import * as OptionsListUtils from '../libs/OptionsListUtils';
import * as ReportUtils from '../libs/ReportUtils';
+import * as PolicyUtils from '../libs/PolicyUtils';
import * as Report from '../libs/actions/Report';
import participantPropTypes from '../components/participantPropTypes';
import * as Expensicons from '../components/Icon/Expensicons';
@@ -56,6 +57,10 @@ const defaultProps = {
};
class ReportDetailsPage extends Component {
+ getPolicy() {
+ return this.props.policies[`${ONYXKEYS.COLLECTION.POLICY}${this.props.report.policyID}`];
+ }
+
getMenuItems() {
const menuItems = [
{
@@ -93,7 +98,7 @@ class ReportDetailsPage extends Component {
});
}
- const policy = this.props.policies[`${ONYXKEYS.COLLECTION.POLICY}${this.props.report.policyID}`];
+ const policy = this.getPolicy();
const isThread = ReportUtils.isThread(this.props.report);
if (ReportUtils.isUserCreatedPolicyRoom(this.props.report) || ReportUtils.canLeaveRoom(this.props.report, !_.isEmpty(policy)) || isThread) {
menuItems.push({
@@ -119,6 +124,15 @@ class ReportDetailsPage extends Component {
isMultipleParticipant,
);
const menuItems = this.getMenuItems();
+ const isPolicyAdmin = PolicyUtils.isPolicyAdmin(this.getPolicy());
+ const chatRoomSubtitleText = (
+
+ {chatRoomSubtitle}
+
+ );
return (
@@ -144,12 +158,17 @@ class ReportDetailsPage extends Component {
shouldUseFullTitle={isChatRoom || isPolicyExpenseChat || isThread}
/>
-
- {chatRoomSubtitle}
-
+ {isPolicyAdmin ? (
+ {
+ Navigation.navigate(ROUTES.getWorkspaceInitialRoute(this.props.report.policyID));
+ }}
+ >
+ {chatRoomSubtitleText}
+
+ ) : (
+ chatRoomSubtitleText
+ )}