From 956755e35272f175b446acc662c7ac14ee4583f5 Mon Sep 17 00:00:00 2001 From: Guilherme Gazzo Date: Tue, 16 Sep 2025 13:08:57 -0300 Subject: [PATCH 1/9] chore --- .../room/contextualBar/RoomMembers/RoomMembersWithData.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/meteor/client/views/room/contextualBar/RoomMembers/RoomMembersWithData.tsx b/apps/meteor/client/views/room/contextualBar/RoomMembers/RoomMembersWithData.tsx index fc012664c3cf5..a4a93cd68fd95 100644 --- a/apps/meteor/client/views/room/contextualBar/RoomMembers/RoomMembersWithData.tsx +++ b/apps/meteor/client/views/room/contextualBar/RoomMembers/RoomMembersWithData.tsx @@ -76,9 +76,9 @@ const RoomMembersWithData = ({ rid }: { rid: IRoom['_id'] }): ReactElement => { setState({ tab: ROOM_MEMBERS_TABS.ADD }); }); - const handleBack = useCallback(() => { + const handleBack = useEffectEvent(() => { setState({ tab: ROOM_MEMBERS_TABS.LIST }); - }, [setState]); + }); if (state.tab === ROOM_MEMBERS_TABS.INFO && state.userId) { return ; From 2e6c442e1d8858ee5b88c206d993f8d6c4544ec1 Mon Sep 17 00:00:00 2001 From: Guilherme Gazzo Date: Tue, 16 Sep 2025 13:14:22 -0300 Subject: [PATCH 2/9] chore --- .../client/views/admin/rooms/EditRoom.tsx | 24 ++++++++++--------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/apps/meteor/client/views/admin/rooms/EditRoom.tsx b/apps/meteor/client/views/admin/rooms/EditRoom.tsx index b1e27e57cfd1d..3b6c61be61b1d 100644 --- a/apps/meteor/client/views/admin/rooms/EditRoom.tsx +++ b/apps/meteor/client/views/admin/rooms/EditRoom.tsx @@ -1,5 +1,5 @@ import type { IRoom, RoomAdminFieldsType } from '@rocket.chat/core-typings'; -import { isRoomFederated } from '@rocket.chat/core-typings'; +import { isRoomFederated, isRoomFederated } from '@rocket.chat/core-typings'; import { Box, Button, @@ -135,6 +135,8 @@ const EditRoom = ({ room, onChange, onDelete, onClose }: EditRoomProps) => { const favoriteField = useId(); const featuredField = useId(); + const roomIsFederated = isRoomFederated(room); + return ( <> @@ -144,7 +146,7 @@ const EditRoom = ({ room, onChange, onDelete, onClose }: EditRoomProps) => { name='roomAvatar' control={control} render={({ field: { value, onChange } }) => ( - + )} /> @@ -194,7 +196,7 @@ const EditRoom = ({ room, onChange, onDelete, onClose }: EditRoomProps) => { name='roomDescription' control={control} render={({ field }) => ( - + )} /> @@ -208,7 +210,7 @@ const EditRoom = ({ room, onChange, onDelete, onClose }: EditRoomProps) => { name='roomAnnouncement' control={control} render={({ field }) => ( - + )} /> @@ -237,7 +239,7 @@ const EditRoom = ({ room, onChange, onDelete, onClose }: EditRoomProps) => { onChange(value === 'p' ? 'c' : 'p')} aria-describedby={`${roomTypeField}-hint`} @@ -259,7 +261,7 @@ const EditRoom = ({ room, onChange, onDelete, onClose }: EditRoomProps) => { @@ -280,7 +282,7 @@ const EditRoom = ({ room, onChange, onDelete, onClose }: EditRoomProps) => { )} @@ -297,7 +299,7 @@ const EditRoom = ({ room, onChange, onDelete, onClose }: EditRoomProps) => { name='archived' control={control} render={({ field: { value, ...field } }) => ( - + )} /> @@ -312,7 +314,7 @@ const EditRoom = ({ room, onChange, onDelete, onClose }: EditRoomProps) => { name='isDefault' control={control} render={({ field: { value, ...field } }) => ( - + )} /> @@ -336,7 +338,7 @@ const EditRoom = ({ room, onChange, onDelete, onClose }: EditRoomProps) => { name='featured' control={control} render={({ field: { value, ...field } }) => ( - + )} /> @@ -353,7 +355,7 @@ const EditRoom = ({ room, onChange, onDelete, onClose }: EditRoomProps) => { - From d71d2f3409b63bbaa80c9f2869997804d54de5d8 Mon Sep 17 00:00:00 2001 From: Guilherme Gazzo Date: Tue, 16 Sep 2025 13:17:43 -0300 Subject: [PATCH 3/9] chore --- .../views/room/contextualBar/Info/EditRoomInfo/EditRoomInfo.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/meteor/client/views/room/contextualBar/Info/EditRoomInfo/EditRoomInfo.tsx b/apps/meteor/client/views/room/contextualBar/Info/EditRoomInfo/EditRoomInfo.tsx index 9d5ed13c328b0..b3967498470c8 100644 --- a/apps/meteor/client/views/room/contextualBar/Info/EditRoomInfo/EditRoomInfo.tsx +++ b/apps/meteor/client/views/room/contextualBar/Info/EditRoomInfo/EditRoomInfo.tsx @@ -79,7 +79,7 @@ const EditRoomInfo = ({ room, onClickClose, onClickBack }: EditRoomInfoProps) => const query = useQueryClient(); const t = useTranslation(); const dispatchToastMessage = useToastMessageDispatch(); - const isFederated = useMemo(() => isRoomFederated(room), [room]); + const isFederated = isRoomFederated(room); // eslint-disable-next-line no-nested-ternary const roomType = 'prid' in room ? 'discussion' : room.teamMain ? 'team' : 'channel'; From 74ff27997ecd19d261908b29438eae999e2638e1 Mon Sep 17 00:00:00 2001 From: Guilherme Gazzo Date: Tue, 16 Sep 2025 13:22:54 -0300 Subject: [PATCH 4/9] chore --- .../hooks/useUserInfoActions/actions/useAddUserAction.tsx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/apps/meteor/client/views/room/hooks/useUserInfoActions/actions/useAddUserAction.tsx b/apps/meteor/client/views/room/hooks/useUserInfoActions/actions/useAddUserAction.tsx index 2805061608e60..646eb3bdb9db2 100644 --- a/apps/meteor/client/views/room/hooks/useUserInfoActions/actions/useAddUserAction.tsx +++ b/apps/meteor/client/views/room/hooks/useUserInfoActions/actions/useAddUserAction.tsx @@ -44,8 +44,10 @@ export const useAddUserAction = ( rid, ); + const roomIsFederated = isRoomFederated(room); + const userCanAdd = - room && user && isRoomFederated(room) + room && user && roomIsFederated ? Federation.isEditableByTheUser(currentUser || undefined, room, subscription) : hasPermissionToAddUsers; From 84ea1bba12cad32c43e1689980ec107c19e9411a Mon Sep 17 00:00:00 2001 From: Guilherme Gazzo Date: Tue, 16 Sep 2025 13:25:17 -0300 Subject: [PATCH 5/9] chore --- .../actions/useChangeModeratorAction.tsx | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/apps/meteor/client/views/room/hooks/useUserInfoActions/actions/useChangeModeratorAction.tsx b/apps/meteor/client/views/room/hooks/useUserInfoActions/actions/useChangeModeratorAction.tsx index 729b9cfce5919..f75acbe0904f2 100644 --- a/apps/meteor/client/views/room/hooks/useUserInfoActions/actions/useChangeModeratorAction.tsx +++ b/apps/meteor/client/views/room/hooks/useUserInfoActions/actions/useChangeModeratorAction.tsx @@ -143,9 +143,13 @@ export const useChangeModeratorAction = (user: Pick, const changeModeratorAction = useEffectEvent(() => handleChangeModerator({ userId: uid })); + + const roomIsFederated = isRoomFederated(room); + + const changeModeratorOption = useMemo( () => - (isRoomFederated(room) && roomCanSetModerator) || (!isRoomFederated(room) && roomCanSetModerator && userCanSetModerator) + (roomIsFederated && roomCanSetModerator) || (!roomIsFederated && roomCanSetModerator && userCanSetModerator) ? { content: t(isModerator ? 'Remove_as_moderator' : 'Set_as_moderator'), icon: 'shield-blank' as const, @@ -153,7 +157,7 @@ export const useChangeModeratorAction = (user: Pick, type: 'privileges' as UserInfoActionType, } : undefined, - [changeModeratorAction, isModerator, roomCanSetModerator, t, userCanSetModerator, room], + [changeModeratorAction, isModerator, roomCanSetModerator, t, userCanSetModerator, roomIsFederated], ); return changeModeratorOption; From 3df1c5bccce6f0fbef752d0ef7f54e8e879facfc Mon Sep 17 00:00:00 2001 From: Guilherme Gazzo Date: Tue, 16 Sep 2025 13:26:37 -0300 Subject: [PATCH 6/9] chore --- .../useUserInfoActions/actions/useChangeOwnerAction.tsx | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/apps/meteor/client/views/room/hooks/useUserInfoActions/actions/useChangeOwnerAction.tsx b/apps/meteor/client/views/room/hooks/useUserInfoActions/actions/useChangeOwnerAction.tsx index b3688d7297630..90c76ad43c194 100644 --- a/apps/meteor/client/views/room/hooks/useUserInfoActions/actions/useChangeOwnerAction.tsx +++ b/apps/meteor/client/views/room/hooks/useUserInfoActions/actions/useChangeOwnerAction.tsx @@ -131,9 +131,11 @@ export const useChangeOwnerAction = (user: Pick, rid: const changeOwnerAction = useEffectEvent(async () => handleChangeOwner()); + const roomIsFederated = isRoomFederated(room); + const changeOwnerOption = useMemo( () => - (isRoomFederated(room) && roomCanSetOwner) || (!isRoomFederated(room) && roomCanSetOwner && userCanSetOwner) + (roomIsFederated && roomCanSetOwner) || (!roomIsFederated && roomCanSetOwner && userCanSetOwner) ? { content: t(isOwner ? 'Remove_as_owner' : 'Set_as_owner'), icon: 'shield-check' as const, @@ -141,7 +143,7 @@ export const useChangeOwnerAction = (user: Pick, rid: type: 'privileges' as UserInfoActionType, } : undefined, - [changeOwnerAction, roomCanSetOwner, userCanSetOwner, isOwner, t, room], + [changeOwnerAction, roomCanSetOwner, userCanSetOwner, isOwner, t, roomIsFederated], ); return changeOwnerOption; From 0741ca2b8388dcd3a14438583181aedac86c2681 Mon Sep 17 00:00:00 2001 From: Guilherme Gazzo Date: Tue, 16 Sep 2025 13:27:35 -0300 Subject: [PATCH 7/9] chore --- .../useUserInfoActions/actions/useRemoveUserAction.tsx | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/apps/meteor/client/views/room/hooks/useUserInfoActions/actions/useRemoveUserAction.tsx b/apps/meteor/client/views/room/hooks/useUserInfoActions/actions/useRemoveUserAction.tsx index 2a0cc15afc8ba..18ea3920a3f31 100644 --- a/apps/meteor/client/views/room/hooks/useUserInfoActions/actions/useRemoveUserAction.tsx +++ b/apps/meteor/client/views/room/hooks/useUserInfoActions/actions/useRemoveUserAction.tsx @@ -39,7 +39,11 @@ export const useRemoveUserAction = ( const { _id: uid } = user; const hasPermissionToRemove = usePermission('remove-user', rid); - const userCanRemove = isRoomFederated(room) + + + const roomIsFederated = isRoomFederated(room); + + const userCanRemove = roomIsFederated ? Federation.isEditableByTheUser(currentUser || undefined, room, subscription) : hasPermissionToRemove; const setModal = useSetModal(); From cae29f639a2b61655ff9c30de28a53ba463e49dc Mon Sep 17 00:00:00 2001 From: Guilherme Gazzo Date: Tue, 16 Sep 2025 14:16:25 -0300 Subject: [PATCH 8/9] Update apps/meteor/client/views/admin/rooms/EditRoom.tsx --- apps/meteor/client/views/admin/rooms/EditRoom.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/meteor/client/views/admin/rooms/EditRoom.tsx b/apps/meteor/client/views/admin/rooms/EditRoom.tsx index 3b6c61be61b1d..2f590e135d770 100644 --- a/apps/meteor/client/views/admin/rooms/EditRoom.tsx +++ b/apps/meteor/client/views/admin/rooms/EditRoom.tsx @@ -1,5 +1,5 @@ import type { IRoom, RoomAdminFieldsType } from '@rocket.chat/core-typings'; -import { isRoomFederated, isRoomFederated } from '@rocket.chat/core-typings'; +import { isRoomFederated } from '@rocket.chat/core-typings'; import { Box, Button, From 6c4304151027b3cd2989a9b5540048c5e34ce76d Mon Sep 17 00:00:00 2001 From: dougfabris Date: Tue, 16 Sep 2025 14:29:28 -0300 Subject: [PATCH 9/9] fix: lint --- .../useUserInfoActions/actions/useChangeModeratorAction.tsx | 2 -- .../hooks/useUserInfoActions/actions/useRemoveUserAction.tsx | 3 +-- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/apps/meteor/client/views/room/hooks/useUserInfoActions/actions/useChangeModeratorAction.tsx b/apps/meteor/client/views/room/hooks/useUserInfoActions/actions/useChangeModeratorAction.tsx index f75acbe0904f2..e8827e8512563 100644 --- a/apps/meteor/client/views/room/hooks/useUserInfoActions/actions/useChangeModeratorAction.tsx +++ b/apps/meteor/client/views/room/hooks/useUserInfoActions/actions/useChangeModeratorAction.tsx @@ -143,10 +143,8 @@ export const useChangeModeratorAction = (user: Pick, const changeModeratorAction = useEffectEvent(() => handleChangeModerator({ userId: uid })); - const roomIsFederated = isRoomFederated(room); - const changeModeratorOption = useMemo( () => (roomIsFederated && roomCanSetModerator) || (!roomIsFederated && roomCanSetModerator && userCanSetModerator) diff --git a/apps/meteor/client/views/room/hooks/useUserInfoActions/actions/useRemoveUserAction.tsx b/apps/meteor/client/views/room/hooks/useUserInfoActions/actions/useRemoveUserAction.tsx index 18ea3920a3f31..c0b0020c928c6 100644 --- a/apps/meteor/client/views/room/hooks/useUserInfoActions/actions/useRemoveUserAction.tsx +++ b/apps/meteor/client/views/room/hooks/useUserInfoActions/actions/useRemoveUserAction.tsx @@ -40,9 +40,8 @@ export const useRemoveUserAction = ( const hasPermissionToRemove = usePermission('remove-user', rid); - const roomIsFederated = isRoomFederated(room); - + const userCanRemove = roomIsFederated ? Federation.isEditableByTheUser(currentUser || undefined, room, subscription) : hasPermissionToRemove;