Skip to content

Commit 0786c86

Browse files
authored
refactor: better isRoomFederated usage (RocketChat#36952)
1 parent a087f72 commit 0786c86

7 files changed

Lines changed: 30 additions & 19 deletions

File tree

apps/meteor/client/views/admin/rooms/EditRoom.tsx

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,8 @@ const EditRoom = ({ room, onChange, onDelete, onClose }: EditRoomProps) => {
135135
const favoriteField = useId();
136136
const featuredField = useId();
137137

138+
const roomIsFederated = isRoomFederated(room);
139+
138140
return (
139141
<>
140142
<ContextualbarScrollableContent id={formId} is='form' onSubmit={handleSubmit(handleSave)}>
@@ -144,7 +146,7 @@ const EditRoom = ({ room, onChange, onDelete, onClose }: EditRoomProps) => {
144146
name='roomAvatar'
145147
control={control}
146148
render={({ field: { value, onChange } }) => (
147-
<RoomAvatarEditor disabled={isRoomFederated(room)} roomAvatar={value} room={room} onChangeAvatar={onChange} />
149+
<RoomAvatarEditor disabled={roomIsFederated} roomAvatar={value} room={room} onChangeAvatar={onChange} />
148150
)}
149151
/>
150152
</Box>
@@ -194,7 +196,7 @@ const EditRoom = ({ room, onChange, onDelete, onClose }: EditRoomProps) => {
194196
name='roomDescription'
195197
control={control}
196198
render={({ field }) => (
197-
<TextAreaInput id={roomDescription} {...field} rows={4} disabled={isDeleting || isRoomFederated(room)} />
199+
<TextAreaInput id={roomDescription} {...field} rows={4} disabled={isDeleting || roomIsFederated} />
198200
)}
199201
/>
200202
</FieldRow>
@@ -208,7 +210,7 @@ const EditRoom = ({ room, onChange, onDelete, onClose }: EditRoomProps) => {
208210
name='roomAnnouncement'
209211
control={control}
210212
render={({ field }) => (
211-
<TextAreaInput id={roomAnnouncement} {...field} rows={4} disabled={isDeleting || isRoomFederated(room)} />
213+
<TextAreaInput id={roomAnnouncement} {...field} rows={4} disabled={isDeleting || roomIsFederated} />
212214
)}
213215
/>
214216
</FieldRow>
@@ -237,7 +239,7 @@ const EditRoom = ({ room, onChange, onDelete, onClose }: EditRoomProps) => {
237239
<ToggleSwitch
238240
{...field}
239241
id={roomTypeField}
240-
disabled={isDeleting || isRoomFederated(room)}
242+
disabled={isDeleting || roomIsFederated}
241243
checked={roomType === 'p'}
242244
onChange={() => onChange(value === 'p' ? 'c' : 'p')}
243245
aria-describedby={`${roomTypeField}-hint`}
@@ -259,7 +261,7 @@ const EditRoom = ({ room, onChange, onDelete, onClose }: EditRoomProps) => {
259261
<ToggleSwitch
260262
id={readOnlyField}
261263
{...field}
262-
disabled={isDeleting || isRoomFederated(room)}
264+
disabled={isDeleting || roomIsFederated}
263265
checked={value}
264266
aria-describedby={`${readOnlyField}-hint`}
265267
/>
@@ -280,7 +282,7 @@ const EditRoom = ({ room, onChange, onDelete, onClose }: EditRoomProps) => {
280282
<ToggleSwitch
281283
id={reactWhenReadOnly}
282284
{...field}
283-
checked={value || isRoomFederated(room)}
285+
checked={value || roomIsFederated}
284286
aria-describedby={`${reactWhenReadOnly}-hint`}
285287
/>
286288
)}
@@ -297,7 +299,7 @@ const EditRoom = ({ room, onChange, onDelete, onClose }: EditRoomProps) => {
297299
name='archived'
298300
control={control}
299301
render={({ field: { value, ...field } }) => (
300-
<ToggleSwitch id={archivedField} {...field} disabled={isDeleting || isRoomFederated(room)} checked={value} />
302+
<ToggleSwitch id={archivedField} {...field} disabled={isDeleting || roomIsFederated} checked={value} />
301303
)}
302304
/>
303305
</FieldRow>
@@ -312,7 +314,7 @@ const EditRoom = ({ room, onChange, onDelete, onClose }: EditRoomProps) => {
312314
name='isDefault'
313315
control={control}
314316
render={({ field: { value, ...field } }) => (
315-
<ToggleSwitch id={isDefaultField} {...field} disabled={isDeleting || isRoomFederated(room)} checked={value} />
317+
<ToggleSwitch id={isDefaultField} {...field} disabled={isDeleting || roomIsFederated} checked={value} />
316318
)}
317319
/>
318320
</FieldRow>
@@ -336,7 +338,7 @@ const EditRoom = ({ room, onChange, onDelete, onClose }: EditRoomProps) => {
336338
name='featured'
337339
control={control}
338340
render={({ field: { value, ...field } }) => (
339-
<ToggleSwitch id={featuredField} {...field} disabled={isDeleting || isRoomFederated(room)} checked={value} />
341+
<ToggleSwitch id={featuredField} {...field} disabled={isDeleting || roomIsFederated} checked={value} />
340342
)}
341343
/>
342344
</FieldRow>
@@ -353,7 +355,7 @@ const EditRoom = ({ room, onChange, onDelete, onClose }: EditRoomProps) => {
353355
</ButtonGroup>
354356
<Box mbs={8}>
355357
<ButtonGroup stretch>
356-
<Button icon='trash' danger loading={isDeleting} disabled={!canDeleteRoom || isRoomFederated(room)} onClick={handleDelete}>
358+
<Button icon='trash' danger loading={isDeleting} disabled={!canDeleteRoom || roomIsFederated} onClick={handleDelete}>
357359
{t('Delete')}
358360
</Button>
359361
</ButtonGroup>

apps/meteor/client/views/room/contextualBar/Info/EditRoomInfo/EditRoomInfo.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ const EditRoomInfo = ({ room, onClickClose, onClickBack }: EditRoomInfoProps) =>
7979
const query = useQueryClient();
8080
const t = useTranslation();
8181
const dispatchToastMessage = useToastMessageDispatch();
82-
const isFederated = useMemo(() => isRoomFederated(room), [room]);
82+
const isFederated = isRoomFederated(room);
8383
// eslint-disable-next-line no-nested-ternary
8484
const roomType = 'prid' in room ? 'discussion' : room.teamMain ? 'team' : 'channel';
8585

apps/meteor/client/views/room/contextualBar/RoomMembers/RoomMembersWithData.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,9 +76,9 @@ const RoomMembersWithData = ({ rid }: { rid: IRoom['_id'] }): ReactElement => {
7676
setState({ tab: ROOM_MEMBERS_TABS.ADD });
7777
});
7878

79-
const handleBack = useCallback(() => {
79+
const handleBack = useEffectEvent(() => {
8080
setState({ tab: ROOM_MEMBERS_TABS.LIST });
81-
}, [setState]);
81+
});
8282

8383
if (state.tab === ROOM_MEMBERS_TABS.INFO && state.userId) {
8484
return <UserInfoWithData rid={rid} uid={state.userId} onClose={closeTab} onClickBack={handleBack} />;

apps/meteor/client/views/room/hooks/useUserInfoActions/actions/useAddUserAction.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,10 @@ export const useAddUserAction = (
4444
rid,
4545
);
4646

47+
const roomIsFederated = isRoomFederated(room);
48+
4749
const userCanAdd =
48-
room && user && isRoomFederated(room)
50+
room && user && roomIsFederated
4951
? Federation.isEditableByTheUser(currentUser || undefined, room, subscription)
5052
: hasPermissionToAddUsers;
5153

apps/meteor/client/views/room/hooks/useUserInfoActions/actions/useChangeModeratorAction.tsx

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -143,17 +143,19 @@ export const useChangeModeratorAction = (user: Pick<IUser, '_id' | 'username'>,
143143

144144
const changeModeratorAction = useEffectEvent(() => handleChangeModerator({ userId: uid }));
145145

146+
const roomIsFederated = isRoomFederated(room);
147+
146148
const changeModeratorOption = useMemo(
147149
() =>
148-
(isRoomFederated(room) && roomCanSetModerator) || (!isRoomFederated(room) && roomCanSetModerator && userCanSetModerator)
150+
(roomIsFederated && roomCanSetModerator) || (!roomIsFederated && roomCanSetModerator && userCanSetModerator)
149151
? {
150152
content: t(isModerator ? 'Remove_as_moderator' : 'Set_as_moderator'),
151153
icon: 'shield-blank' as const,
152154
onClick: changeModeratorAction,
153155
type: 'privileges' as UserInfoActionType,
154156
}
155157
: undefined,
156-
[changeModeratorAction, isModerator, roomCanSetModerator, t, userCanSetModerator, room],
158+
[changeModeratorAction, isModerator, roomCanSetModerator, t, userCanSetModerator, roomIsFederated],
157159
);
158160

159161
return changeModeratorOption;

apps/meteor/client/views/room/hooks/useUserInfoActions/actions/useChangeOwnerAction.tsx

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -131,17 +131,19 @@ export const useChangeOwnerAction = (user: Pick<IUser, '_id' | 'username'>, rid:
131131

132132
const changeOwnerAction = useEffectEvent(async () => handleChangeOwner());
133133

134+
const roomIsFederated = isRoomFederated(room);
135+
134136
const changeOwnerOption = useMemo(
135137
() =>
136-
(isRoomFederated(room) && roomCanSetOwner) || (!isRoomFederated(room) && roomCanSetOwner && userCanSetOwner)
138+
(roomIsFederated && roomCanSetOwner) || (!roomIsFederated && roomCanSetOwner && userCanSetOwner)
137139
? {
138140
content: t(isOwner ? 'Remove_as_owner' : 'Set_as_owner'),
139141
icon: 'shield-check' as const,
140142
onClick: changeOwnerAction,
141143
type: 'privileges' as UserInfoActionType,
142144
}
143145
: undefined,
144-
[changeOwnerAction, roomCanSetOwner, userCanSetOwner, isOwner, t, room],
146+
[changeOwnerAction, roomCanSetOwner, userCanSetOwner, isOwner, t, roomIsFederated],
145147
);
146148

147149
return changeOwnerOption;

apps/meteor/client/views/room/hooks/useUserInfoActions/actions/useRemoveUserAction.tsx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,10 @@ export const useRemoveUserAction = (
3939
const { _id: uid } = user;
4040

4141
const hasPermissionToRemove = usePermission('remove-user', rid);
42-
const userCanRemove = isRoomFederated(room)
42+
43+
const roomIsFederated = isRoomFederated(room);
44+
45+
const userCanRemove = roomIsFederated
4346
? Federation.isEditableByTheUser(currentUser || undefined, room, subscription)
4447
: hasPermissionToRemove;
4548
const setModal = useSetModal();

0 commit comments

Comments
 (0)