Skip to content

[#159] TodoListView에서 Todo의 완료 액션을 줄 수 있는 스와이프 액션을 구현한다#163

Merged
opficdev merged 9 commits intodevelopfrom
feat/#159-TodoListView-isCompleted
Mar 2, 2026
Merged

[#159] TodoListView에서 Todo의 완료 액션을 줄 수 있는 스와이프 액션을 구현한다#163
opficdev merged 9 commits intodevelopfrom
feat/#159-TodoListView-isCompleted

Conversation

@opficdev
Copy link
Owner

@opficdev opficdev commented Mar 2, 2026

@opficdev opficdev self-assigned this Mar 2, 2026
@gemini-code-assist
Copy link

Summary of Changes

Hello, 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!

이 PR은 Todo 관리 기능에 중요한 개선 사항을 도입합니다. 사용자가 Todo 항목을 완료로 표시할 수 있도록 데이터 모델을 확장하고, Todo 목록 뷰에서 직관적인 스와이프 제스처를 통해 이 기능을 사용할 수 있도록 UI를 업데이트했습니다. 또한, 사용자 프로필의 활동 히트맵이 완료된 Todo를 더 정확하게 반영하도록 계산 로직을 최적화하여 전반적인 사용자 경험과 데이터 정확성을 향상시켰습니다.

Highlights

  • Todo 완료 기능 추가: Todo 항목에 완료 상태를 나타내는 completedAt 필드를 추가하고, Todo 목록에서 스와이프 액션을 통해 완료 상태를 토글할 수 있는 기능을 구현했습니다.
  • 데이터 모델 및 서비스 업데이트: 새로운 completedAt 필드를 지원하기 위해 Todo 엔티티, DTO, 매퍼 및 TodoService 로직을 업데이트했습니다.
  • 프로필 히트맵 개선: 프로필 히트맵에서 분기별 최대 활동 수를 계산하는 로직을 ProfileCompletionQuarter 구조체로 이동하여 효율성을 높였습니다.
  • Claude 권한 설정 파일 추가: .claude/settings.local.json 파일을 추가하여 특정 Xcode 작업에 대한 Claude 권한을 설정했습니다.
Changelog
  • .claude/settings.local.json
    • Claude 권한 설정을 위한 새 파일이 추가되었습니다.
  • DevLog/Data/DTO/TodoDTO.swift
    • TodoRequestTodoResponse 구조체에 completedAt: Date? 속성이 추가되었습니다.
  • DevLog/Data/Mapper/TodoMapping.swift
    • TodoRequestTodoResponse 확장 기능에 completedAt 매핑 로직이 추가되었습니다.
  • DevLog/Domain/Entity/Todo.swift
    • Todo 구조체에 completedAt: Date? 속성이 추가되었습니다.
  • DevLog/Infra/Service/TodoService.swift
    • updateTodo 메서드에서 completedAtnil일 경우 NSNull()로 처리하는 로직이 추가되었습니다.
    • mapTodoResponse 메서드에서 completedAt 필드를 파싱하는 로직이 추가되었습니다.
    • TodoFieldKey 열거형에 completedAt 케이스가 추가되었습니다.
  • DevLog/Presentation/Structure/ProfileCompletionQuarter.swift
    • 분기 내 최대 활동 수를 계산하는 maxCount 연산 프로퍼티가 추가되었습니다.
  • DevLog/Presentation/Structure/TodoListItem.swift
    • TodoListItem 구조체에 isCompleted 속성이 추가되었고, Todo 엔티티로부터 초기화되도록 변경되었습니다.
  • DevLog/Presentation/ViewModel/ProfileViewModel.swift
    • 완료된 날짜(completedDay) 계산 로직이 todo.completedAt을 사용하도록 수정되었습니다.
    • 일별 완료된 Todo 개수 계산 로직이 todo.completedAt을 사용하도록 업데이트되었습니다.
  • DevLog/Presentation/ViewModel/TodoEditorViewModel.swift
    • completedAt 프로퍼티가 추가되었고, Todo 생성 및 편집 시 초기화되도록 변경되었습니다.
  • DevLog/Presentation/ViewModel/TodoListViewModel.swift
    • 사용자 액션에 tapToggleCompleted가 추가되었습니다.
    • 실행 액션에 didToggleCompleted가 추가되었습니다.
    • 사이드 이펙트에 toggleCompleted가 추가되었습니다.
    • 새로운 액션들이 reduceByUserreduceByRun 함수에 통합되었습니다.
    • toggleCompleted 사이드 이펙트가 구현되어 Todo의 완료 상태를 토글하고 저장합니다.
  • DevLog/UI/Common/Component/TodoItemRow.swift
    • Todo 항목이 완료되었을 때 체크마크 아이콘을 표시하는 로직이 추가되었습니다.
  • DevLog/UI/Home/TodoListView.swift
    • Todo 항목의 완료 상태를 토글하는 스와이프 액션 버튼이 추가되었습니다.
  • DevLog/UI/Profile/ProfileHeatmapView.swift
    • ProfileCompletionQuarter에서 계산된 maxCountMonthCompactHeatmapView로 전달되도록 변경되었습니다.
    • MonthCompactHeatmapView 내의 중복된 maxCount 계산 로직이 제거되었습니다.
  • DevLog/UI/Setting/PushNotificationSettingsView.swift
    • 푸시 알림 토글 버튼에 .tint(.blue) 수정자가 추가되었습니다.
Using Gemini Code Assist

The 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 /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

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 .gemini/ folder in the base of the repository. Detailed instructions can be found here.

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

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

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

Code Review

이 PR은 Todo 항목을 완료 처리하는 스와이프 액션을 구현한 것으로 보입니다. completedAt 속성을 모델, DTO, 서비스 계층에 걸쳐 일관되게 추가하고, 이를 ViewModel과 View에 반영하여 기능이 잘 구현되었습니다. 한 가지 개선할 점으로, TodoListViewModel에서 Todo의 완료 상태를 변경할 때 updatedAt 필드를 갱신하지 않는 부분이 있어 코멘트를 남겼습니다. 이와 유사한 로직이 있는 togglePinned 부분도 함께 점검해보시면 좋을 것 같습니다.

@opficdev opficdev merged commit 30dcaf4 into develop Mar 2, 2026
1 check passed
@opficdev opficdev deleted the feat/#159-TodoListView-isCompleted branch March 2, 2026 13:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

TodoListView에서 Todo의 완료 액션을 줄 수 있는 스와이프 액션을 구현한다

1 participant