특정 사용자가 1분안에 50개의 채팅을 보내면
첫번째 채팅에만 프로필을 보여주어야한다.
프로필을 보여주는 케이스
시각 | 채팅 내용 | 프로필 표시 여부 | userId |
---|---|---|---|
09:56 | 안녕 | o | 1 |
09:56 | 이 프로젝트 | x | 1 |
09:56 | 좋아 | x | 1 |
09:56 | 맞지 | x | 1 |
09:56 | ? | x | 1 |
시각 | 채팅 내용 | 프로필 표시 여부 | userId |
---|---|---|---|
09:56 | 안녕 | o | 1 |
09:56 | 안녕하세요! | o | 2 |
09:56 | 좋아 | o | 1 |
09:56 | 맞지 | x | 1 |
09:56 | ? | x | 1 |
시각 | 채팅 내용 | 프로필 표시 여부 | userId |
---|---|---|---|
09:56 | 안녕 | o | 1 |
09:57 | 안녕하세요! | o | 1 |
09:57 | 좋아 | o | 2 |
09:57 | 맞지 | x | 2 |
09:57 | ? | x | 2 |
위의 케이스를 고려하여 완성된 로직은 다음과 같다.
const checkIsFirstChatFromUser = (
targetIndex: number,
chatLogData: Array<[string, ChatLog]>
): boolean => {
if (targetIndex === 0) {
return true;
}
const prevData = chatLogData[targetIndex - 1][1];
const targetData = chatLogData[targetIndex][1];
const prevTime = getTimeByDate(new Date(prevData.time));
const targetTime = getTimeByDate(new Date(targetData.time));
return prevTime !== targetTime || prevData.userId !== targetData.userId;
};