Conversation
There was a problem hiding this comment.
수고하셨습니다!
이번 코드는 패키지를 data/, domain/, di/, viewmodel/, fragment/, adapter/로
잘 나눠주셨고, RepositoryModule에서 @BINDS로 interface-구현체를 연결한 점,
ShopAllViewModel과 WishlistViewModel에서 combine으로 즐겨찾기 상태를
Flow로 깔끔하게 합친 점이 정말 좋았어요!
다만 몇 가지 수정하면 좋을점 있어서 코멘트 남겼습니다!
HomeFragment와 WishlistFragment에서 상태가 바뀔 때마다
ProductAdapter를 새로 생성하고 있는데, Adapter를 필드로 선언하고
submitList()로만 갱신하도록 수정해주세요!
그리고 ProductAdapter도 ShopProductAdapter처럼 ListAdapter + DiffUtil로
교체해주시면 더 좋을거 같습니다!
또한 ProductDataStore가 object로 선언되어 매번 Context를 파라미터로 받고 있는데,
class로 바꿔서 Context를 생성자 주입받도록 수정하면 더 깔끔해져요! ProfileEditFragment에 TODO 주석과 템플릿 코드도 정리해주세요!
추가로,
Repository 분리 기준이 Local/Remote로 되어있는데, 일반적으로는 StoreRepository, UserRepository처럼
도메인(기능) 단위로 나누는 게 더 자연스러워요! 하나의 Repository가 필요에 따라 Local과 Remote를 모두 사용할 수 있어야 확장성이 좋아집니다 :) repeatOnLifecycle(STARTED) 패턴도 잘 적용하고 있으십니다!
전반적으로 아키텍처 구조와 Flow 활용이 굉장히 잘 되어있어요.
위 부분들만 다듬어주시면 완성도 높은 코드가 될 것 같습니다. 고생 많으셨어요! 😊
📝 작업 내용
ApiClient(object 싱글턴) →NetworkModule로 대체📸 스크린샷
UI 변경 없음
🙏 리뷰 요구사항 (선택)
StateFlowcollect 시repeatOnLifecycle(STARTED)로 감싼 패턴이 적절한지