Files
cinny/src/app/features/room-nav/RoomCallNavStatus.tsx
T

129 lines
3.4 KiB
TypeScript
Raw Normal View History

import { Box, Chip, Icon, IconButton, Icons, Text, Tooltip, TooltipProvider } from 'folds';
import React from 'react';
2025-05-22 19:57:13 -05:00
import { useMatrixClient } from '../../hooks/useMatrixClient';
import { useCallState } from '../../pages/client/call/CallProvider';
import { useRoomNavigate } from '../../hooks/useRoomNavigate';
2025-04-21 01:38:08 -04:00
2025-06-10 20:00:07 -05:00
export function CallNavStatus() {
2025-05-22 19:57:13 -05:00
const {
activeCallRoomId,
isAudioEnabled,
isVideoEnabled,
isCallActive,
toggleAudio,
toggleVideo,
hangUp,
} = useCallState();
2025-04-21 01:38:08 -04:00
const mx = useMatrixClient();
const { navigateRoom } = useRoomNavigate();
const handleGoToCallRoom = () => {
if (activeCallRoomId) {
navigateRoom(activeCallRoomId);
}
};
if (!isCallActive) {
2025-04-21 01:38:08 -04:00
return (
<Box
direction="Column"
gap="500"
style={{
flexShrink: 0,
borderTop: `1px solid #e0e0e0`,
}}
>
<Text size="T200" color="Muted" align="Center">
No active call
</Text>
</Box>
);
}
return (
2025-04-22 00:27:55 -04:00
<Box
direction="Column"
style={{
flexShrink: 0,
borderTop: `1px solid #e0e0e0`,
justifyContent: 'center',
}}
>
<Box direction="Row" style={{ justifyContent: 'center' }}>
2025-04-21 01:38:08 -04:00
{/* Going to need better icons for this */}
<TooltipProvider
position="Top"
offset={4}
tooltip={
<Tooltip>
<Text>{!isAudioEnabled ? 'Unmute' : 'Mute'}</Text>
</Tooltip>
}
>
{(triggerRef) => (
2025-05-04 07:21:50 -05:00
<IconButton variant="Background" ref={triggerRef} onClick={toggleAudio}>
<Icon src={!isAudioEnabled ? Icons.MicMute : Icons.Mic} />
</IconButton>
)}
</TooltipProvider>
<TooltipProvider
position="Top"
offset={4}
tooltip={
<Tooltip>
<Text>{!isVideoEnabled ? 'Video On' : 'Video Off'}</Text>
</Tooltip>
}
>
{(triggerRef) => (
2025-05-04 07:21:50 -05:00
<IconButton variant="Background" ref={triggerRef} onClick={toggleVideo}>
<Icon src={!isVideoEnabled ? Icons.VideoCameraMute : Icons.VideoCamera} />
</IconButton>
)}
</TooltipProvider>
<TooltipProvider
position="Top"
offset={4}
tooltip={
<Tooltip>
<Text>Hang up</Text>
</Tooltip>
}
>
{(triggerRef) => (
2025-05-04 07:21:50 -05:00
<IconButton variant="Background" ref={triggerRef} onClick={hangUp}>
<Icon src={Icons.Phone} />
</IconButton>
)}
</TooltipProvider>
<Box grow="Yes" justifyContent="Center" alignItems="Center">
<TooltipProvider
position="Top"
offset={4}
tooltip={
<Tooltip>
<Text>Go to room</Text>
</Tooltip>
}
>
{(triggerRef) => (
<Chip
variant="Background"
size="500"
fill="Soft"
as="button"
onClick={handleGoToCallRoom}
ref={triggerRef}
>
<Text style={{ flexGrow: 1 }} size="B400" truncate>
{mx.getRoom(activeCallRoomId)?.name}
</Text>
</Chip>
)}
</TooltipProvider>
2025-04-22 05:35:13 -04:00
</Box>
2025-04-21 01:38:08 -04:00
</Box>
</Box>
);
}