11import { useEffect , useState } from 'react' ;
2- import { useMeetingMediaStreams } from 'src/hooks/useMeetingMediaStreams' ;
2+ import {
3+ useMeetingMediaStreamsV2 ,
4+ MeetingMediaStream ,
5+ } from 'src/hooks/useMeetingMediaStreamsV2' ;
36import useSocketContext from 'src/hooks/useSocketContext' ;
47
58import MeetingMedia from './MeetingMedia' ;
@@ -8,35 +11,33 @@ import style from './style.module.scss';
811
912function MeetingMediaBar ( ) {
1013 const { workspaceSocket : socket } = useSocketContext ( ) ;
11- const [ streams , setMyTrack ] = useMeetingMediaStreams ( socket ) ;
14+ const [ streams , setLocalAudio , setLocalVideo ] =
15+ useMeetingMediaStreamsV2 ( socket ) ;
1216
1317 const [ isMicOn , setIsMicOn ] = useState ( true ) ;
1418 const [ isCamOn , setIsCamOn ] = useState ( true ) ;
1519
1620 useEffect ( ( ) => {
17- setMyTrack ( 'audio' , isMicOn ) ;
21+ setLocalAudio ( isMicOn ) ;
1822 } , [ isMicOn ] ) ;
1923
2024 useEffect ( ( ) => {
21- setMyTrack ( 'video' , isCamOn ) ;
25+ setLocalVideo ( isCamOn ) ;
2226 } , [ isCamOn ] ) ;
2327
2428 return (
2529 < div className = { style [ 'meeting-bar' ] } >
2630 < ul >
27- { Array . from ( streams ) . map ( ( [ id , stream ] ) => (
28- < li key = { id } >
29- < MeetingMedia
30- key = { id }
31- stream = { stream }
32- muted = { id === 'me' ? true : false }
33- />
34- < StreamButton
35- isMicOn = { false }
36- isCamOn = { true } // TODO: 임시로 지정
37- />
38- </ li >
39- ) ) }
31+ { streams . map (
32+ ( { id, stream, type, audioOn, videoOn } : MeetingMediaStream ) => (
33+ < li key = { id } >
34+ < MeetingMedia stream = { stream } muted = { type === 'local' } />
35+ { type === 'remote' && (
36+ < StreamButton isMicOn = { audioOn } isCamOn = { videoOn } />
37+ ) }
38+ </ li >
39+ ) ,
40+ ) }
4041 </ ul >
4142 < StreamButton
4243 { ...{
0 commit comments