[TIL] 17주차 목요일. 안 읽은 메시지 숫자 표시하는 방법에 대해 고민

Minji Kim·2024년 8월 8일

내배캠TIL

목록 보기
71/73

오늘 한 일

  • notifications 페이지 UI 작업
  • trips 페이지에서 Alarm 아이콘 누르면 notifications 페이지로 이동
  • 탭메뉴 글씨 추가, 컬러 변경
  • 채팅 목록에 안 읽은 메시지 숫자 표시하는 방법에 대해 고민

트러블 슈팅 & 기술적 의사 결정

안 읽은 메시지 숫자 표시하는 방법에 대해 고민. => contract 테이블에 '마지막으로 읽은 메시지 아이디' 컬럼 추가하는 방법으로 결정

의사 결정 사유

두 가지 방법을 생각했다. column을 새로 추가하는 방법과, 클라이언트 사이드에서 useState 변경을 주어서 realtime으로 메시지가 전송될 때마다 +1이 되는 방법. 최대한 table을 건드리지 않고 구현하는 쪽으로 생각해봤는데...
=> 후자의 경우, 새로고침하면 데이터가 날라간다는 걸 생각
=> 테이블에 column 추가하기로 결정.

로직

  1. contract table에 contract_last_read_message_id (이하 lrm_id) column 추가
  2. lrm_id의 message_created_at 값을 찾는다
  3. 그것보다 뒤에 올라온 메시지 수를 계산
  4. (+n) 컴포넌트 분리해서 realtime으로 구현. 테이블에 insert 될 때마다 업데이트
  5. 채팅리스트아이템 클릭 시 lrm_id를 last_message_id로 업데이트

0개의 댓글