오늘 한 일
- notifications 페이지 UI 작업
- trips 페이지에서 Alarm 아이콘 누르면 notifications 페이지로 이동
- 탭메뉴 글씨 추가, 컬러 변경
- 채팅 목록에 안 읽은 메시지 숫자 표시하는 방법에 대해 고민
트러블 슈팅 & 기술적 의사 결정
안 읽은 메시지 숫자 표시하는 방법에 대해 고민. => contract 테이블에 '마지막으로 읽은 메시지 아이디' 컬럼 추가하는 방법으로 결정
의사 결정 사유
두 가지 방법을 생각했다. column을 새로 추가하는 방법과, 클라이언트 사이드에서 useState 변경을 주어서 realtime으로 메시지가 전송될 때마다 +1이 되는 방법. 최대한 table을 건드리지 않고 구현하는 쪽으로 생각해봤는데...
=> 후자의 경우, 새로고침하면 데이터가 날라간다는 걸 생각
=> 테이블에 column 추가하기로 결정.
로직
- contract table에 contract_last_read_message_id (이하 lrm_id) column 추가
- lrm_id의 message_created_at 값을 찾는다
- 그것보다 뒤에 올라온 메시지 수를 계산
- (+n) 컴포넌트 분리해서 realtime으로 구현. 테이블에 insert 될 때마다 업데이트
- 채팅리스트아이템 클릭 시 lrm_id를 last_message_id로 업데이트