fix: clean up call nav/call view console warnings
This commit is contained in:
parent
47f1d1183a
commit
9dbe53a36a
4 changed files with 94 additions and 91 deletions
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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,86 +393,88 @@ export function RoomNavItem({
|
||||||
)}
|
)}
|
||||||
</Box>
|
</Box>
|
||||||
</NavItemContent>
|
</NavItemContent>
|
||||||
{optionsVisible && (
|
|
||||||
<NavItemOptions>
|
|
||||||
<PopOut
|
|
||||||
id={`menu-${room.roomId}`}
|
|
||||||
aria-expanded={!!menuAnchor}
|
|
||||||
anchor={menuAnchor}
|
|
||||||
offset={menuAnchor?.width === 0 ? 0 : undefined}
|
|
||||||
alignOffset={menuAnchor?.width === 0 ? 0 : -5}
|
|
||||||
position="Bottom"
|
|
||||||
align={menuAnchor?.width === 0 ? 'Start' : 'End'}
|
|
||||||
content={
|
|
||||||
<FocusTrap
|
|
||||||
focusTrapOptions={{
|
|
||||||
initialFocus: false,
|
|
||||||
returnFocusOnDeactivate: false,
|
|
||||||
onDeactivate: () => setMenuAnchor(undefined),
|
|
||||||
clickOutsideDeactivates: true,
|
|
||||||
isKeyForward: (evt: KeyboardEvent) => evt.key === 'ArrowDown',
|
|
||||||
isKeyBackward: (evt: KeyboardEvent) => evt.key === 'ArrowUp',
|
|
||||||
escapeDeactivates: stopPropagation,
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
<RoomNavItemMenu
|
|
||||||
room={room}
|
|
||||||
requestClose={() => setMenuAnchor(undefined)}
|
|
||||||
notificationMode={notificationMode}
|
|
||||||
/>
|
|
||||||
</FocusTrap>
|
|
||||||
}
|
|
||||||
>
|
|
||||||
{room.isCallRoom() && (
|
|
||||||
<TooltipProvider
|
|
||||||
position="Bottom"
|
|
||||||
offset={4}
|
|
||||||
tooltip={
|
|
||||||
<Tooltip>
|
|
||||||
<Text>Open Chat</Text>
|
|
||||||
</Tooltip>
|
|
||||||
}
|
|
||||||
>
|
|
||||||
{(triggerRef) => (
|
|
||||||
<IconButton
|
|
||||||
ref={triggerRef}
|
|
||||||
data-testid="chat-button"
|
|
||||||
onClick={handleChatButtonClick}
|
|
||||||
aria-pressed={isChatOpen && selected}
|
|
||||||
aria-label="Open Chat"
|
|
||||||
variant="Background"
|
|
||||||
fill="None"
|
|
||||||
size="300"
|
|
||||||
radii="300"
|
|
||||||
>
|
|
||||||
<NavLink to={linkPath}>
|
|
||||||
<Icon size="50" src={Icons.Message} />
|
|
||||||
</NavLink>
|
|
||||||
</IconButton>
|
|
||||||
)}
|
|
||||||
</TooltipProvider>
|
|
||||||
)}
|
|
||||||
<IconButton
|
|
||||||
onClick={handleOpenMenu}
|
|
||||||
aria-pressed={!!menuAnchor}
|
|
||||||
aria-controls={`menu-${room.roomId}`}
|
|
||||||
aria-label="More Options"
|
|
||||||
variant="Background"
|
|
||||||
fill="None"
|
|
||||||
size="300"
|
|
||||||
radii="300"
|
|
||||||
>
|
|
||||||
<Icon size="50" src={Icons.VerticalDots} />
|
|
||||||
</IconButton>
|
|
||||||
</PopOut>
|
|
||||||
</NavItemOptions>
|
|
||||||
)}
|
|
||||||
</NavButton>
|
</NavButton>
|
||||||
|
{optionsVisible && (
|
||||||
|
<NavItemOptions>
|
||||||
|
<PopOut
|
||||||
|
id={`menu-${room.roomId}`}
|
||||||
|
aria-expanded={!!menuAnchor}
|
||||||
|
anchor={menuAnchor}
|
||||||
|
offset={menuAnchor?.width === 0 ? 0 : undefined}
|
||||||
|
alignOffset={menuAnchor?.width === 0 ? 0 : -5}
|
||||||
|
position="Bottom"
|
||||||
|
align={menuAnchor?.width === 0 ? 'Start' : 'End'}
|
||||||
|
content={
|
||||||
|
<FocusTrap
|
||||||
|
focusTrapOptions={{
|
||||||
|
initialFocus: false,
|
||||||
|
returnFocusOnDeactivate: false,
|
||||||
|
onDeactivate: () => setMenuAnchor(undefined),
|
||||||
|
clickOutsideDeactivates: true,
|
||||||
|
isKeyForward: (evt: KeyboardEvent) => evt.key === 'ArrowDown',
|
||||||
|
isKeyBackward: (evt: KeyboardEvent) => evt.key === 'ArrowUp',
|
||||||
|
escapeDeactivates: stopPropagation,
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<RoomNavItemMenu
|
||||||
|
room={room}
|
||||||
|
requestClose={() => setMenuAnchor(undefined)}
|
||||||
|
notificationMode={notificationMode}
|
||||||
|
/>
|
||||||
|
</FocusTrap>
|
||||||
|
}
|
||||||
|
>
|
||||||
|
{room.isCallRoom() && (
|
||||||
|
<TooltipProvider
|
||||||
|
position="Bottom"
|
||||||
|
offset={4}
|
||||||
|
tooltip={
|
||||||
|
<Tooltip>
|
||||||
|
<Text>Open Chat</Text>
|
||||||
|
</Tooltip>
|
||||||
|
}
|
||||||
|
>
|
||||||
|
{(triggerRef) => (
|
||||||
|
<IconButton
|
||||||
|
ref={triggerRef}
|
||||||
|
data-testid="chat-button"
|
||||||
|
onClick={handleChatButtonClick}
|
||||||
|
aria-pressed={isChatOpen && selected}
|
||||||
|
aria-label="Open Chat"
|
||||||
|
variant="Background"
|
||||||
|
fill="None"
|
||||||
|
size="300"
|
||||||
|
radii="300"
|
||||||
|
>
|
||||||
|
<Icon size="50" src={Icons.Message} />
|
||||||
|
</IconButton>
|
||||||
|
)}
|
||||||
|
</TooltipProvider>
|
||||||
|
)}
|
||||||
|
<IconButton
|
||||||
|
onClick={handleOpenMenu}
|
||||||
|
aria-pressed={!!menuAnchor}
|
||||||
|
aria-controls={`menu-${room.roomId}`}
|
||||||
|
aria-label="More Options"
|
||||||
|
variant="Background"
|
||||||
|
fill="None"
|
||||||
|
size="300"
|
||||||
|
radii="300"
|
||||||
|
>
|
||||||
|
<Icon size="50" src={Icons.VerticalDots} />
|
||||||
|
</IconButton>
|
||||||
|
</PopOut>
|
||||||
|
</NavItemOptions>
|
||||||
|
)}
|
||||||
</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>
|
||||||
)}
|
)}
|
||||||
|
|
|
||||||
|
|
@ -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>
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue