Skip to content

[#580] ProfileView에 TCA를 적용한다#614

Merged
opficdev merged 8 commits into
developfrom
refactor/#580-ProfileView-TCA
Jun 15, 2026
Merged

[#580] ProfileView에 TCA를 적용한다#614
opficdev merged 8 commits into
developfrom
refactor/#580-ProfileView-TCA

Conversation

@opficdev

Copy link
Copy Markdown
Owner

🔗 연관된 이슈

🎯 의도

ProfileView의 기존 ViewModel 상태 변화를 유지하면서 TCA 기반 Store 구조로 전환

📝 작업 내용

📌 요약

  • ProfileFeature 추가 및 ProfileView에 StoreOf 적용
  • 기존 ProfileViewModel과 동일한 상태 변화를 검증하는 TestStore 기반 테스트 추가
  • 히트맵 데이터 구성 로직을 ProfileHeatmapBuilder로 분리
  • ProfileView의 activity Toggle을 BindingAction 경로로 정리
  • TextField focus animation 적용 중 프로필 이미지가 깜빡이는 문제 수정

🔍 상세

  • ProfileFeature에 프로필 정보 조회, 상태 메시지 저장, 분기별 히트맵 조회, activity filter 상태 처리 추가
  • ProfileFeature+Dependencies로 Profile 전용 use case dependency key 분리
  • ProfileFeature+State로 View 표시용 computed state 분리
  • ProfileHeatmapBuilder에서 quarter 계산, activity type 정규화, heatmap data 구성 처리
  • ProfileViewCoordinator가 ProfileFeature Store를 생성하고 ProfileView에 주입하도록 변경
  • Toggle의 isOn에서 수동 Binding(get:set:) 제거 후 $store 기반 BindingAction 사용
  • focus 변경 시 TCA send animation API를 사용하되, 프로필 이미지 영역은 animation transaction에서 제외
  • ProfileViewModelTests에 ProfileFeature parity 검증 추가

📸 영상 / 이미지 (Optional)

없음

@opficdev opficdev self-assigned this Jun 15, 2026

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

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Code Review

이 풀 리퀘스트는 기존 MVVM 패턴의 ProfileViewModel을 Composable Architecture(TCA) 기반의 ProfileFeature로 마이그레이션합니다. 이를 위해 ProfileFeature, ProfileFeature+State, ProfileFeature+Dependencies가 새로 도입되었으며, ProfileView와 ProfileViewCoordinator가 TCA Store를 사용하도록 업데이트되었습니다. 또한 ProfileViewModelTests에 ProfileFeature에 대한 테스트 코드가 추가되었습니다. 피드백으로는 ProfileView의 .refreshable 블록 내에서 store.send(.refresh) 호출 시 비동기 작업이 완료될 때까지 새로고침 인디케이터가 유지되도록 await store.send(.refresh).finish()를 사용할 것을 권장하는 의견이 있었습니다.

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.

Comment thread Application/DevLogPresentation/Sources/Profile/ProfileView.swift Outdated
@opficdev opficdev merged commit 227947f into develop Jun 15, 2026
5 checks passed
@opficdev opficdev deleted the refactor/#580-ProfileView-TCA branch June 15, 2026 18:56
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.

ProfileView에 TCA를 적용한다

1 participant