[#198] 오늘 기준으로 관련이 있는 Todo들을 보여주는 뷰를 구성한다#201
Conversation
opficdev
commented
Mar 6, 2026
- closed 오늘 기준으로 관련이 있는 Todo들을 보여주는 뷰를 구성한다 #198
Summary of ChangesHello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed! 이 풀 리퀘스트는 사용자가 현재 날짜와 관련된 Todo 항목들을 효과적으로 관리할 수 있도록 '오늘' 뷰를 새롭게 도입합니다. 이 뷰는 마감일, 집중 표시 여부 등 다양한 필터링 및 정렬 옵션을 제공하며, 사용자 선호도를 저장하여 개인화된 경험을 가능하게 합니다. 이를 통해 Todo 목록의 가독성과 관리 편의성이 크게 향상됩니다. Highlights
Changelog
Activity
Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here. You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension. Footnotes
|
There was a problem hiding this comment.
Code Review
안녕하세요. 오늘 날짜를 기준으로 관련된 Todo를 보여주는 새로운 '오늘' 뷰를 추가하는 PR 잘 보았습니다. Firestore의 복잡한 정렬 및 필터링 요구사항을 해결하기 위한 노력이 돋보입니다. 전반적으로 훌륭한 구현이지만, 몇 가지 개선점을 제안합니다. 페이지네이션 로직에 치명적인 버그가 될 수 있는 부분을 발견했으며, 성능 최적화 및 코드 가독성 향상을 위한 제안을 포함했습니다. 자세한 내용은 아래 주석을 확인해주세요.
| private var emptyStateTitle: String { | ||
| if viewModel.state.selectedSummaryScope == .all, viewModel.state.todos.isEmpty { | ||
| return "남아 있는 Todo가 없습니다." | ||
| } | ||
| if viewModel.state.selectedSummaryScope == .all, viewModel.sections.isEmpty { | ||
| return "선택한 보기 옵션에 맞는 Todo가 없습니다." | ||
| } | ||
|
|
||
| switch viewModel.state.selectedSummaryScope { | ||
| case .all: | ||
| return "남아 있는 Todo가 없습니다." | ||
| case .focused: | ||
| return "집중할 일이 없습니다." | ||
| case .overdue: | ||
| return "지난 마감 Todo가 없습니다." | ||
| case .dueSoon: | ||
| return "7일 내 일정이 없습니다." | ||
| } | ||
| } | ||
|
|
||
| private var emptyStateMessage: String { | ||
| if viewModel.state.selectedSummaryScope == .all, | ||
| !viewModel.state.todos.isEmpty, | ||
| viewModel.sections.isEmpty { | ||
| return "툴바에서 보기 범위를 조정하거나 전체 보기로 돌아가세요." | ||
| } | ||
|
|
||
| switch viewModel.state.selectedSummaryScope { | ||
| case .all: | ||
| return "완료되지 않은 일이 생기면 이곳에서 우선순위대로 볼 수 있습니다." | ||
| case .focused: | ||
| return "중요 표시한 Todo가 생기면 이곳에서 바로 볼 수 있습니다." | ||
| case .overdue: | ||
| return "지금은 기한이 지난 Todo가 없습니다." | ||
| case .dueSoon: | ||
| return "곧 마감되는 Todo가 생기면 이곳에서 먼저 볼 수 있습니다." | ||
| } | ||
| } |
There was a problem hiding this comment.
emptyStateTitle과 emptyStateMessage의 로직이 다소 복잡하고, emptyStateTitle의 경우 도달할 수 없는 코드 경로가 포함되어 있습니다. switch 문을 사용하여 각 SummaryScope에 대한 상태를 명확하게 분기 처리하면 코드의 가독성과 유지보수성을 높일 수 있습니다.
private var emptyStateTitle: String {
switch viewModel.state.selectedSummaryScope {
case .all:
return viewModel.state.todos.isEmpty ? "남아 있는 Todo가 없습니다." : "선택한 보기 옵션에 맞는 Todo가 없습니다."
case .focused:
return "집중할 일이 없습니다."
case .overdue:
return "지난 마감 Todo가 없습니다."
case .dueSoon:
return "7일 내 일정이 없습니다."
}
}
private var emptyStateMessage: String {
switch viewModel.state.selectedSummaryScope {
case .all:
if viewModel.state.todos.isEmpty {
return "완료되지 않은 일이 생기면 이곳에서 우선순위대로 볼 수 있습니다."
} else {
return "툴바에서 보기 범위를 조정하거나 전체 보기로 돌아가세요."
}
case .focused:
return "중요 표시한 Todo가 생기면 이곳에서 바로 볼 수 있습니다."
case .overdue:
return "지금은 기한이 지난 Todo가 없습니다."
case .dueSoon:
return "곧 마감되는 Todo가 생기면 이곳에서 먼저 볼 수 있습니다."
}
}There was a problem hiding this comment.
Code Review
이 PR은 오늘 날짜를 기준으로 관련 Todo 항목을 표시하는 새로운 "오늘" 뷰를 성공적으로 도입합니다. TodoCursorDTO 및 TodoCursor 엔티티에 다중 필드 정렬을 지원하기 위한 정렬 필드가 추가되었고, TodoQuery에 마감일 필터링 옵션이 구현되었습니다. 사용자 환경설정 저장소에 새로운 TodayDisplayOptions를 저장하고 불러오는 기능도 잘 구현되었습니다. 전반적으로 변경 사항은 잘 구성되어 있으며 새로운 기능을 지원하기 위해 기존 데이터 모델 및 서비스 로직을 확장하는 데 필요한 변경 사항을 포함하고 있습니다. 코드 품질은 높으며, 새로운 기능이 기존 시스템에 잘 통합되었습니다.