Fix mobile call room default behavior from auto-join to displaying lobby

This commit is contained in:
Gigiaj 2025-05-21 21:11:25 -05:00
parent 1e44557406
commit e688c19350

View file

@ -54,6 +54,7 @@ import {
import { RoomNotificationModeSwitcher } from '../../components/RoomNotificationSwitcher'; import { RoomNotificationModeSwitcher } from '../../components/RoomNotificationSwitcher';
import { useCallState } from '../../pages/client/CallProvider'; import { useCallState } from '../../pages/client/CallProvider';
import { useRoomNavigate } from '../../hooks/useRoomNavigate'; import { useRoomNavigate } from '../../hooks/useRoomNavigate';
import { ScreenSize, useScreenSizeContext } from '../../hooks/useScreenSize';
type RoomNavItemMenuProps = { type RoomNavItemMenuProps = {
room: Room; room: Room;
@ -236,6 +237,8 @@ export function RoomNavItem({
); );
const { navigateRoom } = useRoomNavigate(); const { navigateRoom } = useRoomNavigate();
const { roomIdOrAlias: viewedRoomId } = useParams(); const { roomIdOrAlias: viewedRoomId } = useParams();
const screenSize = useScreenSizeContext();
const isMobile = screenSize === ScreenSize.Mobile;
const handleContextMenu: MouseEventHandler<HTMLElement> = (evt) => { const handleContextMenu: MouseEventHandler<HTMLElement> = (evt) => {
evt.preventDefault(); evt.preventDefault();
@ -259,21 +262,26 @@ export function RoomNavItem({
if (chatButton && chatButton.contains(target)) { if (chatButton && chatButton.contains(target)) {
return; return;
} }
if (!isMobile) {
if (room.isCallRoom() && activeCallRoomId !== room.roomId) { if (room.isCallRoom() && activeCallRoomId !== room.roomId) {
hangUp(); hangUp();
setActiveCallRoomId(room.roomId); setActiveCallRoomId(room.roomId);
setViewedCallRoomId(room.roomId); if (mx.getRoom(viewedRoomId)?.isCallRoom()) {
if (mx.getRoom(viewedRoomId)?.isCallRoom()) { navigateRoom(room.roomId);
}
} else {
navigateRoom(room.roomId); navigateRoom(room.roomId);
} }
} else { } else {
evt.stopPropagation();
if (isChatOpen) toggleChat();
setViewedCallRoomId(room.roomId);
navigateRoom(room.roomId); navigateRoom(room.roomId);
} }
}; };
const handleChatButtonClick = (e: MouseEvent<HTMLButtonElement>) => { const handleChatButtonClick = (evt: MouseEvent<HTMLButtonElement>) => {
e.stopPropagation(); evt.stopPropagation();
if (!isChatOpen) toggleChat(); if (!isChatOpen) toggleChat();
setViewedCallRoomId(room.roomId); setViewedCallRoomId(room.roomId);
}; };