채팅리스트 (게시글 작성자)
채팅리스트
user - user1 ㅡ 채팅방 ㅡ 채팅방1 id (본인uid+상대uid) -
ㄴ 프로필사진 ㄴ 채팅방2 id (본인uid+상대uid)
ㄴ 닉네임 ㄴ 채팅방3 id (본인uid+상대uid)
user2 ㅡ 채팅방 ㅡ 채팅방id (본인uid+상대uid)
ㄴ 프로필사진 ㄴ 채팅방2 id (본인uid+상대uid)
ㄴ 닉네임 ㄴ 채팅방3 id (본인uid+상대uid)
채팅리스트에 유저정보를 담는 경우의 수 를생각 했지만 그럴 경우 값을 가져올 경우 채팅리스트를 모두 가져와서 필터를 돌려야 하기 때문에 비 효율 적일 것 같다고 생각했다.
채팅방
Chatting - room1 ㅡ message
ㄴ message: ""
ㄴ createdAt: ""
ㄴ nickname: ""
ㄴ profileURL: ""
ㄴ chattingRoomId
ㄴ user
room2 ㅡ user2 ㅡ message
ㄴ message: ""
ㄴ createdAt: ""
ㄴ nickname: ""
ㄴ profileURL: ""
ㄴ chattingRoomId
ㄴ user
디테일 페이지에서 채팅하기 버튼을 누르면 채팅창으로 이동한다.
상대 UID + 내UID 합친 값을 채팅방의 이름으로 한다.
프롭스 OR 전역상태관리로 채팅 페이지에 값을 보내준다.
DB에 채팅리스트를 위해서 db에 user정보를 저장 또는 갱신 시켜준다.
채팅리스트에는 db에 저장되어있는 user라는 유저의 정보이다.
combineId
"8e0d0c89-b460-44c8-9246-b9b01c89835bt1LygmnPlSNaLOzkLpVI6dzZq3q1"
createdAt
2023년 3월 7일 오후 2시 59분 32초 UTC+9
myRoomId
"3249b42d-17c1-43a6-a1cf-80fa5358e969"
nickname
"티모시샬라"
opponentUserUid
"t1LygmnPlSNaLOzkLpVI6dzZq3q1"
posterChatroomId
"30bf5d97-e291-4b0e-9faa-ae39a1f279ab"
profile
"https://firebasestorage.googleapis.com/v0/b/projectwalktogetherms.appspot.com/o/files%2FuserProfile%2Ft1LygmnPlSNaLOzkLpVI6dzZq3q1?alt=media&token=b52c21d4-22a6-48ef-a9f1-be078dc8120d"
uid
"bOE8LZ6dNtRb8Imo3hAreGyx5zx2"
User에 대한 정보를 저장할 때
users 컬랙션안에 해당유저id 다큐먼트에 닉네임과 프로필 이미지를 넣고
채팅룸이라는 하위 컬랙션에는 해당유저의 id 와 상대유저의 id를 합친 고유의 채팅방id를 다큐먼트로 둠으로써 당해 유저와 채팅방이 중복적으로 생기는 것을 막으려고했다.
⇒생각해보니까 왜 궂이 막으려고 했는지 모르겠다. 카카오 톡과 같이 계속해서 채팅할 것이 아닌데
새로운 게시글에서 새로운 채팅 하기를 하면 새로운 대화방이 생기게끔 하는게 맞는 것 같다.
⇒ 대신 채팅하러가기를 중복해서 눌렀을 때 새로운 채팅방이 생기지 않게 하거나 채팅을하면 채팅하러가기 버튼이 비활성화 되게끔 상태관리가 되어야 될 것 같다.
(작성글 id + 상대방id) ___ 글마다 새로운 채팅방이 생기게 된다.
(작성자의id + 상대방id) ___ 여러 게시글에서 채팅하기를 눌러도 작성자가 같으면 하나의 채팅방에서 대화하게된다.