Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: 채팅 view type 관리 및 날짜 view 추가 #588

Merged
merged 11 commits into from
Oct 16, 2024

Conversation

chaehyuns
Copy link
Contributor

📌 관련 이슈

close #501

✨ 작업 내용

  • 흩어진 Event 한번에 관리
  • 채팅 뷰 type 관리
  • 채팅 날짜가 다른 경우 알려주는 기능 구현

📚 기타

채팅을 어느 날짜에 보냈는지 알려주는 기능 추가했서요!!
image

@chaehyuns chaehyuns self-assigned this Oct 16, 2024
Copy link
Contributor

@Namyunsuk Namyunsuk left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

날짜 구분선 만드시느라 고생하셨슴다!!
코멘트 몇개 남겼어용~!

@@ -107,47 +90,49 @@ class CommentDetailViewModel
}
}

private fun handleRepositoryError(
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

네이밍을 구체화 하는건 어떨까요??
예를 들면 handleNetworkError와 같이요!

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

repository 에서 일어나는 error 여서 이렇게 표현을 했는데, 현재는 network error 밖에 처리를 하고 있지 않으므로 네이밍을 변경하겠습니다. 하지만 추후 local repository에서 일어나는 에러도 표현하기 위해 더 적합한 네이밍을 생각해봐야겠군요,.,.


for (i in comments.indices) {
val currentComment = comments[i]
val previousComment = if (i > 0) comments[i - 1] else null
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

val previousComment = if (i != 0) comments[i - 1] else null
사소한 부분이긴 한데요, 이렇게 바꾸는 건 어떨까요?
첫번째 코멘트인지 아닌지를 구분하기 위함이다라는 걸 파악하기 쉬울 것 같아요~!

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

첫번째 코멘트가 아닌 이전 comment가 있는 경우를 previous 로 설정하는 부분이라 로직상 i > 0가 맞는 것 같습니다!

val currentComment = comments[i]
val previousComment = if (i > 0) comments[i - 1] else null

if (previousComment == null || currentComment.commentCreatedAt.date != previousComment.commentCreatedAt.date) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

조건문의 로직을 메서드 분리해서 네이밍을 통해 어떤 것을 검증하는 건지 알려주면 좋을 것 같아용

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

분리하면 더 좋을 듯 하네요 반영했습니다~

Comment on lines +3 to +12
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
class ChongdaeApplicationTests {

@Test
void contextLoads() {
}

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

백엔드 코드가 왜 들어왔지..?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

develop 에서 바로 따왔는데 이상한 코드가 들어왔어요... 나중에 충돌날까바 그냥 뒀어요

@chaehyuns chaehyuns merged commit a3c4f70 into develop Oct 16, 2024
3 checks passed
@chaehyuns chaehyuns deleted the feature/501-chatting-refactor branch October 16, 2024 06:32
Copy link
Contributor

@songpink songpink left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

와 리팩토링 정말 깔끔하게 해주셨네요~ 솔직히 보면서 감탄했습니다.

이벤트 처리, 함수분리, 추가 기능(날짜 표시) 등등 너무 잘 하신 것 같고 제가 저번에 alert 급하게 하느라 지저분한 코드다 싹 수정해 주셔서 고마워요 👍

채채 코드를 보니 저도 제 파트를 리팩토링을 하고 싶다는 열정이 생기네요~

코멘트 조금만 남겼습니다!

Comment on lines 17 to 26
for (i in comments.indices) {
val currentComment = comments[i]
val previousComment = if (i > 0) comments[i - 1] else null

if (previousComment == null || currentComment.commentCreatedAt.date != previousComment.commentCreatedAt.date) {
newItems.add(CommentViewType.DateSeparator(currentComment))
}

newItems.add(CommentViewType.fromComment(currentComment))
}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

forEachIndexed함수를 쓰는 것이 가독성이 더 좋을 것 같은데, 어떠신가요?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

오호 좋은 리뷰 감사해요!
forEachIndexed를 활용한다면 더 좋을 것 같은데, 큰 리스트를 다룰 때는 일반적인 for (i in indices)가 더 적합하다고 생각해서 이렇게 구현을 했습니다. 하지만 나중에 백친구들이 댓글에 페이징해준다면 forEachIndexed를 쓰는게 더 가독성이 좋겠네요!

Comment on lines +100 to +104
when (authRepository.saveRefresh()) {
is Result.Success -> retryAction()
is Result.Error ->
_event.value =
Event(CommentDetailEvent.ShowError("로그아웃 후 다시 진행해주세요."))
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

와 함수분리 너무 좋아요! 토큰 리프레시 작업을 어떻게 함수분리 해야하나 하고 깝깝했는데 솔루션을 제시해 주셔서 고마워요~~

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"로그아웃 후 다시 진행해주세요." 문자열은 string resource로 빼고, ShowError 객체는 파라미터로 Int타입을 받고 액티비티에서 getString()을 통해서 문자열을 가져오는 방법이 좋을 것 같아요.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

그리고 이 함수는 exitOffering() 함수에도 적용 가능할 것 같은데, 맞나요? (혹시 놓친 것인지 아니면 적용하지 않은 의도가 있는 것인지 여쭤봅니당 😄)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

exitOffering에서는 특수한 상황으로 body 가 null 로 들어와서 error 로 처리되더라고요...
'Delete' API만 이렇게 작동하는 것을 이전에 백엔드와 얘기했는데, 결론을 말하자면 의도적으로 적용 안한겁니다!

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

현재 error 부분이 String 으로 되어있어서 event 처리를 똑같이 주려고 이렇게 해놨습니다! 나중에 api 핸들러 다시 리팩토링 해야할듯합니다!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

♻️ 채팅 view type 관리 및 날짜 view 추가
4 participants