일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 호이스팅
- 타입 좁히기
- TS
- recoil
- tailwind
- Promise
- ESlint
- 태그된 유니온
- CORS
- webpack
- SSR
- React
- 이분 검색
- RTK Query
- 결정 알고리즘
- Jest
- CI/CD
- 무한 스크롤
- async/await
- 투포인터
- dfs
- 리터럴 타입
- autosize
- 인터섹션
- 반공변성
- useAppDispatch
- map
- 공변성
- Cypress
- app router
Archives
- Today
- Total
짧은코딩
안 읽은 메시지 수 구하기 본문
반응형
안 읽은 메시지 수 구하기
안 읽은 메시지 수를 구하는 것은 생각보다 어렵다. 내가 어디까지 읽었는지와 그 이후로 몇 개가 쌓였는지도 알아야 한다. 얼마나 쌓였는지는 API로 알 수 있다.
어디까지 읽었는지는 어떤 채널이나 디엠에 들어갔을 때, 어디까지 읽었는지 저장을 해야한다. 또 어디에 저장할지도 생각해야한다. 크게 DB에 저장할 수 있고 아니면 로컬 스토리지에 저장할 수 있다. 이걸 DB에 저장하면 서버가 부담스러울 수도 있다. 따라서 로컬 스토리지에 저장하는 방식을 사용하겠다.
따라서 EachChannel, EachDM을 만들어서 하나하나 컴포넌트로 만들었다. 채널이나 DM 클릭했을 때를 기록해주면 된다.
-ChannelList
<div>
{!channelCollapse &&
channelData?.map((channel) => {
return <EachChannel key={channel.id} channel={channel} />;
})}
</div>
ChannelList를 별도의 컴포넌트로 분리하면 된다. 그리고 더 최적화가 돼서 좋다.
그리고 채널이나 DM 클릭했을 때를 기록해주는 것은
useEffect(() => {
localStorage.setItem(`${workspace}-${id}`, new Date().getTime().toString());
}, [workspace, id]);
이렇게 기록해야 한다. 채팅, DM에 들어갔을 때와 채팅, 이미지를 보냈을 때도 기록을 해줘야 내가 보낸 채팅을 카운트하지 않는다.
이렇게 하고 EachChannel, EachDM에서 받아와서 사용하면된다.
반응형
'인프런, 유데미 > Slack 클론 코딩' 카테고리의 다른 글
배포하기 (0) | 2022.08.01 |
---|---|
SWR Devtools(디버깅 유용) (0) | 2022.08.01 |
이미지 업로드 하기 (0) | 2022.07.31 |
가상 스크롤 바, 날짜 라이브러리(DAY.JS), 해시 태그, emotion.js에서 css에 변수 활용, 정규 표현식 (0) | 2022.07.30 |
WebSocket (0) | 2022.07.29 |
Comments