"use client" import * as React from "react" // import CamSelect from "./camSelect" import { CamIconByStatus } from "@/components/Icon" import AgoraRTC, { ICameraVideoTrack, ILocalVideoTrack } from "agora-rtc-sdk-ng" // import { LocalStreamPlayer } from "../streamPlayer" // import { useSmallScreen } from "@/common" import { DeviceSelect, } from "@/components/Agent/Microphone" import { Button } from "@/components/ui/button" import { LocalStreamPlayer } from "@/components/Agent/StreamPlayer" import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "../ui/select" import { VIDEO_SOURCE_OPTIONS, VideoSourceType } from "@/common" import { MonitorIcon, MonitorXIcon } from "lucide-react" export const ScreenIconByStatus = ( props: React.SVGProps & { active?: boolean; color?: string }, ) => { const { active, color, ...rest } = props if (active) { return } return } export function VideoDeviceWrapper(props: { children: React.ReactNode title: string Icon: ( props: React.SVGProps & { active?: boolean }, ) => React.ReactNode onIconClick: () => void videoSourceType: VideoSourceType onVideoSourceChange: (value: VideoSourceType) => void isActive: boolean select?: React.ReactNode }) { const { Icon, onIconClick, isActive, select, children, onVideoSourceChange, videoSourceType } = props return (
{props.title}
{select}
{children}
) } export default function VideoBlock(props: { videoSourceType:VideoSourceType, onVideoSourceChange:(value: VideoSourceType) => void, cameraTrack?: ICameraVideoTrack, screenTrack?: ILocalVideoTrack }) { const { videoSourceType, cameraTrack, screenTrack, onVideoSourceChange } = props const [videoMute, setVideoMute] = React.useState(false) React.useEffect(() => { cameraTrack?.setMuted(videoMute) screenTrack?.setMuted(videoMute) }, [cameraTrack, screenTrack, videoMute]) const onClickMute = () => { setVideoMute(!videoMute) } return ( :
} >
) } interface SelectItem { label: string value: string deviceId: string } const DEFAULT_ITEM: SelectItem = { label: "Default", value: "default", deviceId: "", } const CamSelect = (props: { videoTrack?: ICameraVideoTrack }) => { const { videoTrack } = props const [items, setItems] = React.useState([DEFAULT_ITEM]) const [value, setValue] = React.useState("default") React.useEffect(() => { if (videoTrack) { const label = videoTrack?.getTrackLabel() setValue(label) AgoraRTC.getCameras().then((arr) => { setItems( arr.map((item) => ({ label: item.label, value: item.label, deviceId: item.deviceId, })), ) }) } }, [videoTrack]) const onChange = async (value: string) => { const target = items.find((item) => item.value === value) if (target) { setValue(target.value) if (videoTrack) { await videoTrack.setDevice(target.deviceId) } } } return ( ) }