fixing render error because of hook in wrong order

This commit is contained in:
talksik
2022-05-01 09:52:15 -05:00
parent dda1d10039
commit 58bc5c5c3c
@@ -21,7 +21,6 @@ export default function NirvanaHeader() {
const [anchorEl, setAnchorEl] = useState<null | HTMLElement>(null); const [anchorEl, setAnchorEl] = useState<null | HTMLElement>(null);
const [outputMode, setOutputMode] = useRecoilState($selectedOutputMode); const [outputMode, setOutputMode] = useRecoilState($selectedOutputMode);
const userVideo = useRef<HTMLVideoElement>();
const [userVideoStream, setUserVideoStream] = const [userVideoStream, setUserVideoStream] =
useState<MediaStream>(undefined); useState<MediaStream>(undefined);
@@ -30,11 +29,17 @@ export default function NirvanaHeader() {
navigator.mediaDevices navigator.mediaDevices
.getUserMedia({ video: true, audio: true }) .getUserMedia({ video: true, audio: true })
.then((stream: MediaStream) => { .then((stream: MediaStream) => {
if (userVideo?.current) userVideo.current.srcObject = stream;
setUserVideoStream(stream); setUserVideoStream(stream);
}); });
}, []); }, []);
useEffect(() => {
if (userVideoStream && outputMode === "video")
document.querySelector("video").srcObject = userVideoStream;
}, [userVideoStream, outputMode]);
const menuOpen = useMemo(() => Boolean(anchorEl), [anchorEl]);
const handleOpenMenu = useCallback((event: React.MouseEvent<HTMLElement>) => { const handleOpenMenu = useCallback((event: React.MouseEvent<HTMLElement>) => {
setAnchorEl(event.currentTarget); setAnchorEl(event.currentTarget);
}, []); }, []);
@@ -45,8 +50,6 @@ export default function NirvanaHeader() {
if (isLoading) return <>loading</>; if (isLoading) return <>loading</>;
const menuOpen = useMemo(() => Boolean(anchorEl), [anchorEl]);
return ( return (
<div className="flex flex-row items-center h-12 bg-gray-100"> <div className="flex flex-row items-center h-12 bg-gray-100">
<Logo type="small" className="scale-[0.2]" /> <Logo type="small" className="scale-[0.2]" />
@@ -61,7 +64,6 @@ export default function NirvanaHeader() {
{outputMode === "video" && ( {outputMode === "video" && (
<video <video
className="ml-2" className="ml-2"
ref={userVideo}
height={"50px"} height={"50px"}
width={"50px"} width={"50px"}
muted muted