You signed in with another tab or window.Reload to refresh your session.You signed out in another tab or window.Reload to refresh your session.You switched accounts on another tab or window.Reload to refresh your session.Dismiss alert
props drilling 을 막고 props를 자유롭게 사용하기 위해context Api를 사용하였습니다.UserCurrentContext 에 로그인 되어 있는 유저의 정보와 채팅 리스트를 모았고ClickedUserContext 에 채팅 정보를 불러오기 위해 필요한 uid 상태를 모아 관심사에 맞게 분리하도록 구현하였습니다.
유저 목록과 채팅 목록을 불러오는 Sider 컴포넌트에ant-design 를 사용하여 구현하였습니다. 서버에서 받아오는 데이터 형식을convertListData() 함수로 Sider에 알맞은 형식으로 만들어 사용했습니다. 총 받아오는 목록이 유저 목록, 개인 채팅 목록, 단체 채팅 목록으로 총 3개의 메뉴였기 때문에 한 메뉴씩 컴포넌트를 분리해 Sider 폴더에서 바로 찾을 수 있게끔 나누었습니다.
firebase 사용
chats : 채팅방 고유 uid 로 연결, 메세지를 담고 있습니다. teamChats : 유저 uid로 연결, 해당 유저의 단체 채팅방을 담고 있습니다. userChats: 유저 uid로 연결, 해당 유저의 개인 채팅방을 담고 있습니다. user : 해당 유저의 정보 (이름, 이메일, uid)를 담고 있습니다.
단체 방을 만들 때 단체 이름, 체크된 유저uid 배열과uuid 라이브러리로 팀 채팅방의 고유한uid를 만들어 데이터로 만들어 사용하였습니다.팀 채팅방은 초대된 각각의 유저에게 단체방 데이터를 넣어야했는데 단체 채팅방 uid 뿐만 아니라 채팅에 참가한 유저들을 중 본인을 제외한 유저 데이터를 넣어야했습니다. 이를filter 를 사용해 해당 유저의uid를 제외한 배열을 다시 만들어 각각 단체 채팅방 정보에 유저 정보를 넣었습니다.