Skip to content

Commit a868db6

Browse files
regression: Prevent room infinite loop when invitation is revoked during invite view (#37955)
1 parent c3c97fa commit a868db6

File tree

2 files changed

+10
-4
lines changed

2 files changed

+10
-4
lines changed

apps/meteor/client/views/room/Room.tsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { isInviteSubscription } from '@rocket.chat/core-typings';
22
import { ContextualbarSkeleton } from '@rocket.chat/ui-client';
3-
import { useSetting, useRoomToolbox } from '@rocket.chat/ui-contexts';
3+
import { useSetting, useRoomToolbox, useUserId } from '@rocket.chat/ui-contexts';
44
import type { ReactElement } from 'react';
55
import { createElement, lazy, memo, Suspense } from 'react';
66
import { FocusScope } from 'react-aria';
@@ -23,6 +23,7 @@ const UiKitContextualBar = lazy(() => import('./contextualBar/uikit/UiKitContext
2323

2424
const Room = (): ReactElement => {
2525
const { t } = useTranslation();
26+
const userId = useUserId();
2627
const room = useRoom();
2728
const subscription = useRoomSubscription();
2829
const toolbox = useRoomToolbox();
@@ -36,7 +37,7 @@ const Room = (): ReactElement => {
3637
if (subscription && isInviteSubscription(subscription)) {
3738
return (
3839
<FocusScope>
39-
<RoomInvite room={room} subscription={subscription} data-qa-rc-room={room._id} aria-label={roomLabel} />
40+
<RoomInvite userId={userId} room={room} subscription={subscription} data-qa-rc-room={room._id} aria-label={roomLabel} />
4041
</FocusScope>
4142
);
4243
}

apps/meteor/client/views/room/RoomInvite.tsx

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,30 @@
1-
import { isRoomFederated, type IInviteSubscription } from '@rocket.chat/core-typings';
1+
import { isRoomFederated } from '@rocket.chat/core-typings';
2+
import type { IUser, IInviteSubscription } from '@rocket.chat/core-typings';
23
import type { ComponentProps } from 'react';
34
import { useTranslation } from 'react-i18next';
45

56
import Header from './Header';
67
import RoomInviteBody from './body/RoomInviteBody';
8+
import { useGoToHomeOnRemoved } from './body/hooks/useGoToHomeOnRemoved';
79
import type { IRoomWithFederationOriginalName } from './contexts/RoomContext';
810
import { useRoomInvitation } from './hooks/useRoomInvitation';
911
import RoomLayout from './layout/RoomLayout';
1012
import { links } from '../../lib/links';
1113

1214
type RoomInviteProps = Omit<ComponentProps<typeof RoomLayout>, 'header' | 'body' | 'aside'> & {
15+
userId?: IUser['_id'];
1316
room: IRoomWithFederationOriginalName;
1417
subscription: IInviteSubscription;
1518
};
1619

17-
const RoomInvite = ({ room, subscription, ...props }: RoomInviteProps) => {
20+
const RoomInvite = ({ room, subscription, userId, ...props }: RoomInviteProps) => {
1821
const { t } = useTranslation();
1922
const { acceptInvite, rejectInvite, isPending } = useRoomInvitation(room);
2023

2124
const infoLink = isRoomFederated(room) ? { label: t('Learn_more_about_Federation'), href: links.go.matrixFederation } : undefined;
2225

26+
useGoToHomeOnRemoved(room, userId);
27+
2328
return (
2429
<RoomLayout
2530
{...props}

0 commit comments

Comments
 (0)