[#579] HomeView에 TCA를 적용한다#607
Conversation
There was a problem hiding this comment.
Code Review
이번 풀 리퀘스트는 기존 MVVM 패턴의 HomeViewModel을 Composable Architecture(TCA) 기반의 HomeFeature 리듀서로 마이그레이션하는 작업을 수행합니다. 이에 따라 HomeView가 TCA Store와 바인딩되도록 수정되었으며, 테스트 코드 역시 TestStore를 활용하도록 업데이트되었습니다. 리뷰어 피드백에서는 TCA 권장 사항에 따라 뷰에서 다중 액션을 연속으로 보내는 대신 단일 액션을 통해 리듀서 내에서 상태를 일괄 변경하도록 개선할 것과, 불필요한 DispatchQueue.main.async 호출을 제거하여 코드를 단순화할 것을 제안하고 있으며, 이는 모두 타당한 개선 사항입니다.
Important
The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.
|
❌ iOS CI failed. Tests failedFailed schemes:
Check the uploaded test log artifacts for full diagnostics. |
|
❌ iOS CI failed. Tests failedFailed schemes:
Check the uploaded test log artifacts for full diagnostics. |
🔗 연관된 이슈
🎯 의도
HomeView의 상태 관리와 presentation 흐름을HomeFeature중심의 TCA 구조로 이관📝 작업 내용
📌 요약
HomeViewModel제거와HomeFeature/HomeFeature+Effects/HomeFeature+Dependencies도입HomeViewCoordinator의StoreOf<HomeFeature>소유 및 Home 화면 의존성 주입 경로 정리AlertState,SheetState,FullScreenCoverState,CasePathable적용과ModalType제거contentPicker내부 내비게이션 이동과 URL 입력/추가/삭제/되돌리기 로직의 reducer/effect 이관HomeView의sheet/fullScreenCover바인딩 구조 정리와 상단 내비게이션 영역·row 패딩 UI 정돈HomeFeature기준 테스트 지원 코드와 assertion / test case 추가🔍 상세
HomeFeature.State에alert,sheet,fullScreenCover,loading을 두고 Home 화면의 presentation 상태를 TCA state로 통합fetchData를 Todo 카테고리 설정, 최근 수정 Todo, 저장 웹페이지 로드 이펙트 병합 구조로 재구성run기반 effect로 분리HomeViewCoordinator에서 기존 ViewModel 대신HomeFeaturestore를 생성하고, Todo editor / Search feature store 조립 책임만 유지showTodoEditor,showSearchView같은 bool 제어 제거와FullScreenCoverState기반 destination 관리로 변경contentPicker내부webPageInputdestination으로 연결sheetContent,coverContent분리를 통해HomeView의 presentation 렌더링 경로를 store scope 기반으로 정리HomeFeatureTests,HomeFeatureTestSupport,HomeFeatureTestAssertions추가를 통한 fetch, presentation, 카테고리 정렬, 웹페이지 처리, 네트워크 관찰 검증 추가📸 영상 / 이미지 (Optional)