feat: show connected/connecting call status

This commit is contained in:
hazre 2026-02-13 01:46:24 +01:00
parent efb3e115db
commit 92f490e9d9
No known key found for this signature in database
2 changed files with 35 additions and 10 deletions

View file

@ -30,7 +30,7 @@ import { LocalRoomSummaryLoader } from '../../components/RoomSummaryLoader';
import { UseStateProvider } from '../../components/UseStateProvider';
import { RoomTopicViewer } from '../../components/room-topic-viewer';
import { onEnterOrSpace, stopPropagation } from '../../utils/keyboard';
import { Membership, RoomType } from '../../../types/matrix/room';
import { Membership } from '../../../types/matrix/room';
import * as css from './RoomItem.css';
import * as styleCss from './style.css';
import { AsyncStatus, useAsyncCallback } from '../../hooks/useAsyncCallback';

View file

@ -1,17 +1,34 @@
import { Box, Chip, Icon, IconButton, Icons, Line, Text, Tooltip, TooltipProvider } from 'folds';
import {
Box,
Chip,
Icon,
IconButton,
Icons,
Line,
Spinner,
Text,
Tooltip,
TooltipProvider,
color,
} from 'folds';
import React from 'react';
import { useMatrixClient } from '../../hooks/useMatrixClient';
import { useCallState } from '../../pages/client/call/CallProvider';
import { useRoomNavigate } from '../../hooks/useRoomNavigate';
import * as css from './RoomCallNavStatus.css';
export function CallNavStatus() {
const { activeCallRoomId, isAudioEnabled, isVideoEnabled, toggleAudio, toggleVideo, hangUp } =
useCallState();
const mx = useMatrixClient();
const {
activeCallRoomId,
isActiveCallReady,
isAudioEnabled,
isVideoEnabled,
toggleAudio,
toggleVideo,
hangUp,
} = useCallState();
const { navigateRoom } = useRoomNavigate();
const hasActiveCall = Boolean(activeCallRoomId);
const isConnected = hasActiveCall && isActiveCallReady;
const handleGoToCallRoom = () => {
if (activeCallRoomId) {
navigateRoom(activeCallRoomId);
@ -42,9 +59,17 @@ export function CallNavStatus() {
ref={triggerRef}
className={css.RoomButton}
>
<Icon size="300" src={Icons.VolumeHigh} />
<Text className={css.RoomName} size="B400" truncate>
{mx.getRoom(activeCallRoomId ?? '')?.name ?? ''}
{isConnected ? (
<Icon size="300" src={Icons.VolumeHigh} style={{ color: color.Success.Main }} />
) : (
<Spinner size="300" variant="Secondary" />
)}
<Text
as="span"
size="L400"
style={{ color: isConnected ? color.Success.Main : color.Warning.Main }}
>
{isConnected ? 'Connected' : 'Connecting'}
</Text>
</Chip>
)}