-
Notifications
You must be signed in to change notification settings - Fork 3
[FEAT] 미확인 알림 여부 확인 api 연결 #146
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
Conversation
Walkthrough미확인 알림 존재 여부를 확인하는 신규 API를 연동했다. 응답 DTO 추가, 서비스/레포지토리 메서드 추가, AlarmUiState에 불리언 플래그 도입, AlarmViewModel에 검사 함수 추가 및 초기화/갱신 시 호출, Feed/Group 화면에서 해당 검사 호출로 교체했다. Changes
Sequence Diagram(s)sequenceDiagram
autonumber
actor U as 사용자
participant F as Feed/Group 화면
participant VM as AlarmViewModel
participant R as NotificationRepository
participant S as NotificationService
participant API as Backend API
U->>F: 탭 재선택/새로고침
F->>VM: checkUnreadNotifications()
VM->>R: existsUncheckedNotifications()
R->>S: existsUncheckedNotifications()
S->>API: GET /notifications/exists-unchecked
API-->>S: BaseResponse{ data: { exists } }
S-->>R: BaseResponse<NotificationExistsUncheckedResponse>
R-->>VM: Result<NotificationExistsUncheckedResponse?>
VM->>VM: uiState.copy(hasUnreadNotifications = data.exists)
VM-->>F: 상태 업데이트
note right of VM: 실패 시 error 갱신, 기존 상태 유지
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes Possibly related PRs
Suggested labels
Suggested reviewers
Poem
Pre-merge checks and finishing touches❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing touches
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
🧹 Nitpick comments (1)
app/src/main/java/com/texthip/thip/ui/common/alarmpage/viewmodel/AlarmViewModel.kt (1)
167-182: 주석과 실제 동작이 일치하지 않습니다.Line 178의 주석에는 "기존 상태 유지 (로그만 남김)"라고 명시되어 있지만, 실제로는 line 179에서
error상태를 업데이트하고 있습니다.주석을 다음과 같이 수정하는 것을 권장합니다:
- // 에러 발생 시 기존 상태 유지 (로그만 남김) - updateState { it.copy(error = exception.message) } + // 에러 발생 시 hasUnreadNotifications는 유지하고 error만 업데이트 + updateState { it.copy(error = exception.message) }또는 주석대로 에러 상태만 로깅하고 UI 상태는 업데이트하지 않으려면:
- // 에러 발생 시 기존 상태 유지 (로그만 남김) - updateState { it.copy(error = exception.message) } + // 에러 발생 시 기존 상태 유지 + android.util.Log.e("AlarmViewModel", "Failed to check unread notifications", exception)
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
Disabled knowledge base sources:
- Jira integration is disabled by default for public repositories
You can enable these sources in your CodeRabbit configuration.
📒 Files selected for processing (7)
app/src/main/java/com/texthip/thip/data/model/notification/response/NotificationExistsUncheckedResponse.kt(1 hunks)app/src/main/java/com/texthip/thip/data/repository/NotificationRepository.kt(2 hunks)app/src/main/java/com/texthip/thip/data/service/NotificationService.kt(2 hunks)app/src/main/java/com/texthip/thip/ui/common/alarmpage/viewmodel/AlarmUiState.kt(1 hunks)app/src/main/java/com/texthip/thip/ui/common/alarmpage/viewmodel/AlarmViewModel.kt(4 hunks)app/src/main/java/com/texthip/thip/ui/feed/screen/FeedScreen.kt(2 hunks)app/src/main/java/com/texthip/thip/ui/group/screen/GroupScreen.kt(2 hunks)
🧰 Additional context used
🧬 Code graph analysis (1)
app/src/main/java/com/texthip/thip/ui/common/alarmpage/viewmodel/AlarmViewModel.kt (1)
app/src/main/java/com/texthip/thip/ui/group/viewmodel/GroupViewModel.kt (1)
updateState(30-32)
🔇 Additional comments (9)
app/src/main/java/com/texthip/thip/ui/common/alarmpage/viewmodel/AlarmUiState.kt (1)
12-13: LGTM! API에서 가져온 명시적 상태로 전환이 적절합니다.기존의 알림 목록 기반 계산 프로퍼티에서 API 응답 기반의 명시적 상태로 변경한 것이 올바릅니다. 이를 통해 전체 알림 목록을 로드하지 않고도 미확인 알림 존재 여부를 효율적으로 확인할 수 있습니다.
app/src/main/java/com/texthip/thip/data/model/notification/response/NotificationExistsUncheckedResponse.kt (1)
1-9: LGTM! DTO 구조가 간결하고 올바릅니다.미확인 알림 존재 여부를 나타내는 단일 Boolean 필드를 가진 간단한 응답 DTO입니다. 직렬화 어노테이션도 적절하게 설정되어 있습니다.
app/src/main/java/com/texthip/thip/ui/group/screen/GroupScreen.kt (2)
67-67: LGTM! 효율적인 API 호출로 개선되었습니다.전체 알림 데이터를 새로고침하는 대신 미확인 알림 존재 여부만 확인하도록 변경한 것이 적절합니다. 화면 진입 시 필요한 최소한의 데이터만 가져오는 효율적인 접근 방식입니다.
83-86: LGTM! Pull-to-refresh 시에도 일관된 패턴을 적용했습니다.그룹 데이터 새로고침 시 알림 미확인 상태도 함께 업데이트하도록 구현한 것이 올바릅니다.
checkUnreadNotifications()사용으로 불필요한 알림 목록 로드 없이 상태만 효율적으로 갱신합니다.app/src/main/java/com/texthip/thip/ui/feed/screen/FeedScreen.kt (2)
227-227: LGTM! 바텀 네비게이션 재선택 시 효율적인 업데이트입니다.탭 재선택 시 알림 목록 전체를 새로고침하는 대신 미확인 알림 존재 여부만 확인하도록 변경한 것이 적절합니다. 사용자 경험을 개선하면서도 불필요한 네트워크 요청을 줄였습니다.
291-291: LGTM! Pull-to-refresh에서도 일관된 패턴을 유지합니다.피드 데이터 새로고침과 함께 알림 미확인 상태를 효율적으로 업데이트합니다. GroupScreen과 동일한 패턴을 사용하여 코드베이스의 일관성을 유지하고 있습니다.
app/src/main/java/com/texthip/thip/data/service/NotificationService.kt (1)
51-52: LGTM! RESTful 엔드포인트 정의가 올바릅니다.미확인 알림 존재 여부를 확인하는 GET 엔드포인트가 적절하게 정의되었습니다. 경로명이 명확하고 Retrofit 규칙을 올바르게 따르고 있습니다.
app/src/main/java/com/texthip/thip/data/repository/NotificationRepository.kt (1)
113-118: LGTM! 기존 패턴을 일관되게 따릅니다.새로운 레포지토리 메서드가 파일 내 다른 메서드들과 동일한 에러 핸들링 패턴을 사용합니다.
runCatching,handleBaseResponse,getOrNull()을 통한 표준화된 접근 방식이 적절합니다.app/src/main/java/com/texthip/thip/ui/common/alarmpage/viewmodel/AlarmViewModel.kt (1)
34-34: LGTM! 미확인 알림 상태를 적절한 시점에 동기화합니다.
checkUnreadNotifications()호출이 다음과 같이 적절한 위치에 배치되어 상태를 최신으로 유지합니다:
- 초기화 시 (line 34): 초기 상태 설정
- 알림 읽음 처리 후 (line 40): 배지 상태 업데이트
- 푸시 알림 수신 시 (line 47): 실시간 상태 반영
- 수동 새로고침 시 (line 130): 일관성 보장
Also applies to: 40-40, 47-47, 130-130
➕ 이슈 링크
🔎 작업 내용
📸 스크린샷
😢 해결하지 못한 과제
[] TASK
📢 리뷰어들에게
Summary by CodeRabbit
신규 기능
개선