-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[FE] feat: Room UI구성, Room에 입장 한 후에도 캠, 오디오 켜고 끄는 기능 추가 #61
Conversation
공통 - common 나머지는 section별로 폴더를 만들어서 분리
Room페이지 섹션별 컴포넌트 구성 (#60)
비디오, 오디오 on/off상태 공유를 위한 전역 상태 추가 (#60)
마이크 비디오 상태 컨트롤을 위한 공통 컴포넌트 작성 (#60)
Room 페이지에서 stream 상태를 조정할 수 있는 버튼/기능 추가 (#60)
MediaControlButton 컴포넌트 기능 테스트 추가 Video on/off 테스트추가 Audio on/off 테스트추가 (#60)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM!
if (kind === 'mic' && state) return micOnSVG; | ||
if (kind === 'mic' && !state) return micOffSVG; | ||
if (kind === 'video' && state) return videoOnSVG; | ||
if (kind === 'video' && !state) return videoOffSVG; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
state 대신에 어떤 상태인지 명확하게 나타내면 좋을 것 같아요
예를 들면 isOn
과 같은걸 사용할 수 있을 것 같아요!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
function selectImage(kind: 'mic' | 'video', isOn: boolean) {
if (kind === 'mic' && isOn) return micOnSVG;
if (kind === 'mic' && !isOn) return micOffSVG;
if (kind === 'video' && isOn) return videoOnSVG;
if (kind === 'video' && !isOn) return videoOffSVG;
throw new Error('잘못된 입력입니다!');
}
반영했습니다!
mediaObject: MediaObject; | ||
streamList: { | ||
id: string; | ||
stream: MediaStream; | ||
}[]; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
줄이 바뀌게 되어 한 눈에 파악하기 어려운 것 같아요
대신에 interface 또는 type으로 별도로 선언해도 좋지 않을까요?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
반영하였습니다!
type StreamType = {
id: string;
stream: MediaStream;
};
코드리뷰 반영 state -> isOn 복잡한 타입 선언을 커스텀 타입 생성하여 표기
PR 설명
Room UI구성, Room에 입장 한 후에도 캠, 오디오 켜고 끄는 기능 추가
✅ 완료한 기능 명세
📸 스크린샷
고민과 해결과정
Video 높이 조정이 안되는 건에 대하여...
Video는 width를 기준으로 렌더링되고, height를 기준으로 렌더링 되지는 않는다.
이 문제를 해결하기위해 absolute를 활용해서 처리해주었다.
다만, 이렇게 했더니 방 참여전 setting컴포넌트에서는 높이가 명시되지 않아서 지정해줘야하는 문제가 발생했다.
일단 높이를 주는 형태로 구현해두었다.
비디오,오디오 on/off 상태 관리, 버튼 공통컴포넌트로 처리
설정 창에서 설정한 내용을 방 입장시에도 유지할 수 있어야 하므로 해당 부분을 전역으로 관리할 필요가 생겼다.
또한, 이걸 관리하는 버튼은 기능적으로는 똑같으므로, 하나의 공통 컴포넌트로 묶어줄 수 있었다.
kind가 audio냐 video냐에 따라 다른 기능, 다른 이미지를 보여주도록 분기시켰다.