[#570] TodoDetailView에 TCA를 적용한다#588
Conversation
There was a problem hiding this comment.
Code Review
이번 풀리퀘스트는 기존 TodoDetailViewModel 기반의 구조를 Composable Architecture(TCA)의 TodoDetailFeature 리듀서 구조로 마이그레이션하고 관련 뷰와 테스트 코드를 업데이트합니다. 리뷰 피드백으로는 1) TodoDetailView에서 Store를 @State로 감싸지 않고 직접 선언하도록 수정하여 상태 업데이트 버그를 방지할 것, 2) 리듀서 내부에서 참조 타입인 LoadingState를 직접 소유하지 않도록 의존성 주입 등으로 개선할 것, 3) @CasePathable이 자동 생성하는 프로퍼티를 활용하여 중복 코드(todoDetail)를 제거하고 스코프 지정을 단순화할 것, 4) fetchTodoEffect에 취소 ID를 부여하여 레이스 컨디션을 방지할 것, 5) 테스트 코드에서 waitUntil 대신 TCA 표준인 TestStore를 사용하여 결정론적인 테스트를 작성할 것을 제안합니다.
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.
🔗 연관된 이슈
🎯 의도
📝 작업 내용
📌 요약
TodoDetailViewModel제거 및TodoDetailFeature추가TodoDetailView를StoreOf<TodoDetailFeature>기반으로 전환🔍 상세
TodoDetailFeature에서 Todo 조회, 로딩 상태, 조회 실패 alert, reference item 해석 상태 처리LoadingState를 reducer 내부에서 직접 생성해 기존 delayed loading 동작 유지FetchTodoByIdUseCase,FetchReferenceItemsUseCase를 TCA dependency로 주입TodoDetailView생성자를 Store 기반으로 정리하고, 기존 ViewModel 생성 경로 제거SheetState를 enum으로 정리하고TodoDetailSheetFeature에서 childTodoDetailFeature를ifCaseLet으로 연결TodoDetailView생성부를 Store 조립 방식으로 변경TodoDetailFeatureTests추가로 조회 성공, reference item 해석, 로딩, 실패 alert, sheet/fullScreenCover 상태 변화 검증📸 영상 / 이미지 (Optional)