fix: clean up call nav/call view console warnings

This commit is contained in:
hazre
2026-02-11 15:18:16 +01:00
parent 47f1d1183a
commit 9dbe53a36a
4 changed files with 94 additions and 91 deletions

View File

@@ -209,9 +209,13 @@ export function CallView({ room }: { room: Room }) {
}} }}
> >
<CallViewUserGrid> <CallViewUserGrid>
{callMembers {callMembers.slice(0, 6).map((callMember) => (
.map((callMember) => <CallViewUser room={room} callMembership={callMember} />) <CallViewUser
.slice(0, 6)} key={callMember.membershipID}
room={room}
callMembership={callMember}
/>
))}
</CallViewUserGrid> </CallViewUserGrid>
<Box <Box

View File

@@ -21,8 +21,8 @@ import {
} from 'folds'; } from 'folds';
import { useFocusWithin, useHover } from 'react-aria'; import { useFocusWithin, useHover } from 'react-aria';
import FocusTrap from 'focus-trap-react'; import FocusTrap from 'focus-trap-react';
import { useParams } from 'react-router-dom'; import { useNavigate, useParams } from 'react-router-dom';
import { NavButton, NavItem, NavItemContent, NavItemOptions, NavLink } from '../../components/nav'; import { NavButton, NavItem, NavItemContent, NavItemOptions } from '../../components/nav';
import { UnreadBadge, UnreadBadgeCenter } from '../../components/unread-badge'; import { UnreadBadge, UnreadBadgeCenter } from '../../components/unread-badge';
import { RoomAvatar, RoomIcon } from '../../components/room-avatar'; import { RoomAvatar, RoomIcon } from '../../components/room-avatar';
import { getDirectRoomAvatarUrl, getRoomAvatarUrl } from '../../utils/room'; import { getDirectRoomAvatarUrl, getRoomAvatarUrl } from '../../utils/room';
@@ -256,6 +256,7 @@ export function RoomNavItem({
const isActiveCall = isActiveCallReady && activeCallRoomId === room.roomId; const isActiveCall = isActiveCallReady && activeCallRoomId === room.roomId;
const callMemberships = useCallMembers(mx, room.roomId); const callMemberships = useCallMembers(mx, room.roomId);
const { navigateRoom } = useRoomNavigate(); const { navigateRoom } = useRoomNavigate();
const navigate = useNavigate();
const { roomIdOrAlias: viewedRoomId } = useParams(); const { roomIdOrAlias: viewedRoomId } = useParams();
const screenSize = useScreenSizeContext(); const screenSize = useScreenSizeContext();
const isMobile = screenSize === ScreenSize.Mobile; const isMobile = screenSize === ScreenSize.Mobile;
@@ -275,13 +276,6 @@ export function RoomNavItem({
}; };
const handleNavItemClick: MouseEventHandler<HTMLElement> = (evt) => { const handleNavItemClick: MouseEventHandler<HTMLElement> = (evt) => {
const target = evt.target as HTMLElement;
const chatButton = (evt.currentTarget as HTMLElement).querySelector(
'[data-testid="chat-button"]'
);
if (chatButton && chatButton.contains(target)) {
return;
}
if (room.isCallRoom()) { if (room.isCallRoom()) {
if (!isMobile) { if (!isMobile) {
if (!isActiveCall) { if (!isActiveCall) {
@@ -308,6 +302,7 @@ export function RoomNavItem({
evt.stopPropagation(); evt.stopPropagation();
if (!isChatOpen) toggleChat(); if (!isChatOpen) toggleChat();
setViewedCallRoomId(room.roomId); setViewedCallRoomId(room.roomId);
navigate(linkPath);
}; };
const optionsVisible = hover || !!menuAnchor; const optionsVisible = hover || !!menuAnchor;
@@ -398,6 +393,7 @@ export function RoomNavItem({
)} )}
</Box> </Box>
</NavItemContent> </NavItemContent>
</NavButton>
{optionsVisible && ( {optionsVisible && (
<NavItemOptions> <NavItemOptions>
<PopOut <PopOut
@@ -450,9 +446,7 @@ export function RoomNavItem({
size="300" size="300"
radii="300" radii="300"
> >
<NavLink to={linkPath}>
<Icon size="50" src={Icons.Message} /> <Icon size="50" src={Icons.Message} />
</NavLink>
</IconButton> </IconButton>
)} )}
</TooltipProvider> </TooltipProvider>
@@ -472,12 +466,15 @@ export function RoomNavItem({
</PopOut> </PopOut>
</NavItemOptions> </NavItemOptions>
)} )}
</NavButton>
</NavItem> </NavItem>
{room.isCallRoom() && ( {room.isCallRoom() && (
<Box direction="Column" style={{ paddingLeft: config.space.S200 }}> <Box direction="Column" style={{ paddingLeft: config.space.S200 }}>
{callMemberships.map((callMembership) => ( {callMemberships.map((callMembership) => (
<RoomNavUser room={room} callMembership={callMembership} /> <RoomNavUser
key={callMembership.membershipID}
room={room}
callMembership={callMembership}
/>
))} ))}
</Box> </Box>
)} )}

View File

@@ -40,9 +40,9 @@ export function RoomNavUser({ room, callMembership }: RoomNavUserProps) {
return ( return (
<NavItem variant="Background" radii="400"> <NavItem variant="Background" radii="400">
<NavButton onClick={handleNavUserClick} aria-label={ariaLabel}> <NavButton onClick={handleNavUserClick} aria-label={ariaLabel}>
<NavItemContent> <NavItemContent as="div">
<Box direction="Column" grow="Yes" gap="200" justifyContent="Stretch"> <Box direction="Column" grow="Yes" gap="200" justifyContent="Stretch">
<Box as="span" alignItems="Center" gap="200"> <Box alignItems="Center" gap="200">
<Avatar size="200"> <Avatar size="200">
<UserAvatar <UserAvatar
userId={userId} userId={userId}
@@ -51,7 +51,7 @@ export function RoomNavUser({ room, callMembership }: RoomNavUserProps) {
renderFallback={() => <Icon size="50" src={Icons.User} filled />} renderFallback={() => <Icon size="50" src={Icons.User} filled />}
/> />
</Avatar> </Avatar>
<Text size="B400" priority="300" truncate> <Text as="span" size="B400" priority="300" truncate>
{getName} {getName}
</Text> </Text>
</Box> </Box>

View File

@@ -257,9 +257,11 @@ export function CallProvider({ children }: CallProviderProps) {
setIsActiveCallReady(true); setIsActiveCallReady(true);
}; };
sendWidgetAction(WIDGET_MEDIA_STATE_UPDATE_ACTION, { void sendWidgetAction(WIDGET_MEDIA_STATE_UPDATE_ACTION, {
audio_enabled: isAudioEnabled, audio_enabled: isAudioEnabled,
video_enabled: isVideoEnabled, video_enabled: isVideoEnabled,
}).catch(() => {
// Widget transport may reject while call/session setup is still in progress.
}); });
activeClientWidgetApi.on(`action:${WIDGET_HANGUP_ACTION}`, handleHangup); activeClientWidgetApi.on(`action:${WIDGET_HANGUP_ACTION}`, handleHangup);