2025-04-21 01:38:08 -04:00
|
|
|
import { logger } from 'matrix-js-sdk/lib/logger';
|
2025-05-01 16:19:04 -05:00
|
|
|
import { NavLink, useParams } from 'react-router-dom';
|
|
|
|
|
import { Box, Chip, Icon, IconButton, Icons, Text, Tooltip, TooltipProvider } from 'folds';
|
|
|
|
|
import React from 'react';
|
2025-04-21 01:38:08 -04:00
|
|
|
import { useMatrixClient } from '../../hooks/useMatrixClient';
|
|
|
|
|
import { useCallState } from '../client/CallProvider';
|
|
|
|
|
|
|
|
|
|
export function CallNavBottom() {
|
2025-05-01 16:19:04 -05:00
|
|
|
const { activeCallRoomId, isAudioEnabled, isVideoEnabled, toggleAudio, toggleVideo, hangUp } =
|
|
|
|
|
useCallState();
|
2025-04-21 01:38:08 -04:00
|
|
|
const mx = useMatrixClient();
|
2025-05-01 16:19:04 -05:00
|
|
|
const { roomIdOrAlias: viewedRoomId } = useParams<{ roomIdOrAlias: string }>();
|
2025-04-22 05:35:13 -04:00
|
|
|
|
2025-04-21 01:38:08 -04:00
|
|
|
if (!activeCallRoomId) {
|
|
|
|
|
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 */}
|
2025-05-01 16:19:04 -05:00
|
|
|
<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}>
|
2025-05-01 16:19:04 -05:00
|
|
|
<Icon src={!isAudioEnabled ? Icons.VolumeHigh : Icons.VolumeMute} />
|
|
|
|
|
</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}>
|
2025-05-01 16:19:04 -05:00
|
|
|
<Icon src={!isVideoEnabled ? Icons.Vlc : Icons.Lock} />
|
|
|
|
|
</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}>
|
2025-05-01 16:19:04 -05:00
|
|
|
<Icon src={Icons.Phone} />
|
|
|
|
|
</IconButton>
|
|
|
|
|
)}
|
|
|
|
|
</TooltipProvider>
|
|
|
|
|
|
2025-04-22 05:35:13 -04:00
|
|
|
<Box grow="Yes">
|
2025-05-01 16:19:04 -05:00
|
|
|
<TooltipProvider
|
|
|
|
|
position="Top"
|
|
|
|
|
offset={4}
|
|
|
|
|
tooltip={
|
|
|
|
|
<Tooltip>
|
|
|
|
|
<Text>Go to room</Text>
|
|
|
|
|
</Tooltip>
|
|
|
|
|
}
|
|
|
|
|
>
|
|
|
|
|
{(triggerRef) =>
|
|
|
|
|
viewedRoomId !== (activeCallRoomId ?? '') ? (
|
|
|
|
|
<NavLink ref={triggerRef} to={activeCallRoomId}>
|
2025-05-04 07:21:50 -05:00
|
|
|
<Chip variant="Background" radii="Inherit" size="500" fill="Soft">
|
|
|
|
|
Active Call: {mx.getRoom(activeCallRoomId)?.normalizedName}
|
2025-05-01 16:19:04 -05:00
|
|
|
</Chip>
|
|
|
|
|
</NavLink>
|
|
|
|
|
) : (
|
2025-05-04 07:21:50 -05:00
|
|
|
<Chip variant="Background" ref={triggerRef} radii="Inherit" size="500" fill="Soft">
|
|
|
|
|
Active Call: {mx.getRoom(activeCallRoomId)?.normalizedName}
|
2025-05-01 16:19:04 -05:00
|
|
|
</Chip>
|
2025-04-22 05:35:13 -04:00
|
|
|
)
|
2025-05-01 16:19:04 -05:00
|
|
|
}
|
|
|
|
|
</TooltipProvider>
|
2025-04-22 05:35:13 -04:00
|
|
|
</Box>
|
2025-04-21 01:38:08 -04:00
|
|
|
</Box>
|
|
|
|
|
</Box>
|
|
|
|
|
);
|
|
|
|
|
}
|