Skip to content

Commit bdb9789

Browse files
authored
Merge pull request #43065 from brunovjk/fix/35391
Prevent removal of admin and default members from workspace chats
2 parents f9e1efc + be3872b commit bdb9789

File tree

2 files changed

+8
-3
lines changed

2 files changed

+8
-3
lines changed

src/pages/ReportDetailsPage.tsx

+3-2
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@ function ReportDetailsPage({policies, report, session, personalDetails}: ReportD
160160
isAnonymousAction: false,
161161
shouldShowRightIcon: true,
162162
action: () => {
163-
if (isUserCreatedPolicyRoom || isChatThread || isPolicyExpenseChat) {
163+
if (isUserCreatedPolicyRoom || isChatThread || (isPolicyExpenseChat && isPolicyAdmin)) {
164164
Navigation.navigate(ROUTES.ROOM_MEMBERS.getRoute(report?.reportID ?? '-1'));
165165
} else {
166166
Navigation.navigate(ROUTES.REPORT_PARTICIPANTS.getRoute(report?.reportID ?? '-1'));
@@ -204,7 +204,7 @@ function ReportDetailsPage({policies, report, session, personalDetails}: ReportD
204204
});
205205
}
206206

207-
if (!isThread && (isGroupChat || (isChatRoom && ReportUtils.canLeaveChat(report, policy)))) {
207+
if (!isThread && (isGroupChat || (isChatRoom && ReportUtils.canLeaveChat(report, policy)) || (isPolicyExpenseChat && !isPolicyAdmin))) {
208208
items.push({
209209
key: CONST.REPORT_DETAILS_MENU_ITEM.LEAVE_ROOM,
210210
translationKey: 'common.leave',
@@ -232,6 +232,7 @@ function ReportDetailsPage({policies, report, session, personalDetails}: ReportD
232232
isChatThread,
233233
isPolicyEmployee,
234234
isPolicyExpenseChat,
235+
isPolicyAdmin,
235236
isUserCreatedPolicyRoom,
236237
participants.length,
237238
report,

src/pages/RoomMembersPage.tsx

+5-1
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,8 @@ function RoomMembersPage({report, session, policies}: RoomMembersPageProps) {
5555
const [searchValue, setSearchValue] = useState('');
5656
const [didLoadRoomMembers, setDidLoadRoomMembers] = useState(false);
5757
const personalDetails = usePersonalDetails() || CONST.EMPTY_OBJECT;
58+
const policy = useMemo(() => policies?.[`${ONYXKEYS.COLLECTION.POLICY}${report?.policyID ?? ''}`], [policies, report?.policyID]);
59+
const isPolicyExpenseChat = useMemo(() => ReportUtils.isPolicyExpenseChat(report), [report]);
5860

5961
const isFocusedScreen = useIsFocused();
6062

@@ -182,12 +184,14 @@ function RoomMembersPage({report, session, policies}: RoomMembersPageProps) {
182184
return;
183185
}
184186
const pendingChatMember = report?.pendingChatMembers?.findLast((member) => member.accountID === accountID.toString());
187+
const isAdmin = !!(policy && policy.employeeList && details.login && policy.employeeList[details.login]?.role === CONST.POLICY.ROLE.ADMIN);
188+
const isDisabled = (isPolicyExpenseChat && isAdmin) || accountID === session?.accountID || pendingChatMember?.pendingAction === CONST.RED_BRICK_ROAD_PENDING_ACTION.DELETE;
185189

186190
result.push({
187191
keyForList: String(accountID),
188192
accountID,
189193
isSelected: selectedMembers.includes(accountID),
190-
isDisabled: accountID === session?.accountID || pendingChatMember?.pendingAction === CONST.RED_BRICK_ROAD_PENDING_ACTION.DELETE,
194+
isDisabled,
191195
text: formatPhoneNumber(PersonalDetailsUtils.getDisplayNameOrDefault(details)),
192196
alternateText: details?.login ? formatPhoneNumber(details.login) : '',
193197
icons: [

0 commit comments

Comments
 (0)