import { BarChartAlt2, Microphone, MicrophoneOff, PhoneOff, VolumeFull, VolumeMute, } from "@styled-icons/boxicons-solid"; import { observer } from "mobx-react-lite"; import styled from "styled-components/macro"; import { Text } from "preact-i18n"; import { useMemo } from "preact/hooks"; import { Button } from "@revoltchat/ui"; import { voiceState, VoiceStatus } from "../../../lib/vortex/VoiceState"; import Tooltip from "../../../components/common/Tooltip"; import UserIcon from "../../../components/common/user/UserIcon"; import { useClient } from "../../../controllers/client/ClientController"; import { modalController } from "../../../controllers/modals/ModalController"; interface Props { id: string; } const VoiceBase = styled.div` margin-top: 48px; padding: 20px; background: var(--secondary-background); flex-grow: 1; .status { flex: 1 0; display: flex; position: absolute; align-items: center; padding: 10px; font-size: 13px; font-weight: 500; user-select: none; gap: 6px; color: var(--success); border-radius: var(--border-radius); background: var(--primary-background); svg { cursor: help; } } display: flex; flex-direction: column; .participants { margin: 40px 20px; justify-content: center; user-select: none; display: flex; flex-flow: row wrap; gap: 16px; div:hover img { opacity: 0.8; } .disconnected { opacity: 0.5; } } .actions { display: flex; justify-content: center; gap: 10px; } `; export default observer(({ id }: Props) => { if (voiceState.roomId !== id) return null; const client = useClient(); const self = client.users.get(client.user!._id); const keys = Array.from(voiceState.participants.keys()); const users = useMemo(() => { return keys.map((key) => client.users.get(key)); // eslint-disable-next-line }, [keys]); return (
{users && users.length !== 0 ? users.map((user, index) => { const user_id = keys![index]; return (
modalController.push({ type: "user_profile", user_id, }) } />
); }) : self !== undefined && (
)}
{voiceState.status === VoiceStatus.CONNECTED && ( )}
{voiceState.isProducing("audio") ? ( ) : ( )} {voiceState.isDeaf() ? ( ) : ( )}
); });