-
Notifications
You must be signed in to change notification settings - Fork 71
[쇼핑 주문 1, 2 단계] 모찌 미션 제출합니다 #111
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
- 장바구니 화면에 Shimmer Effect를 활용한 로딩 UI를 추가했습니다. - 로딩 중에는 ShimmerFrameLayout이 화면에 표시되고, 로딩이 완료되면 사라집니다. - CatalogViewModel과 CartViewModel에 2초의 임의 딜레이를 추가하여 로딩 효과를 확인할 수 있도록 했습니다.
- RemoteCatalogProductRepositoryImpl 추가 - CatalogProductRepository에 getProductsByPage 추가 - CatalogViewModel에 RemoteCatalogProductRepositoryImpl 의존성 추가 - LocalDummyCatalogProductRepositoryImpl 주석 처리 - network_security_config에 서버 도메인 추가 - ShoppingApplication에서 ID 변경
- CatalogViewModel에서 장바구니에 담긴 상품의 cartItemId를 ProductUiModel에 추가 - DetailViewModel에서 상품 정보를 productId 대신 ProductUiModel 객체로 받도록 수정 - DetailViewModel에서 장바구니에 상품 추가 시 이미 담겨있는 상품이면 수량 업데이트, 아니면 새로 추가 - DetailActivity에서 DetailViewModelFactory에 productId 대신 ProductUiModel 객체 전달 - CatalogActivity에서 상품 클릭 시 DetailActivity로 productId 대신 ProductUiModel 객체 전달 - 최근 본 상품 클릭 시 DetailActivity로 productId 대신 ProductUiModel 객체 전달
- CartProductRepositoryImpl 삭제 - HttpCatalogProductRepositoryImpl 삭제 - LocalDummyCatalogProductRepositoryImpl 삭제 - CartProductRepository의 getAllProductsSize 메서드 제거 - CartProductRepository의 getProductQuantity 메서드 제거 - RemoteCartProductRepositoryImpl의 불필요한 Log.d 및 println 제거
- CartProductRepositoryImpl 삭제 - HttpCatalogProductRepositoryImpl 삭제 - LocalDummyCatalogProductRepositoryImpl 삭제 - CartProductRepository의 getAllProductsSize 메서드 제거 - CartProductRepository의 getProductQuantity 메서드 제거 - RemoteCartProductRepositoryImpl의 불필요한 Log.d 및 println 제거
코니, 안녕하세요! 너무너무너무 늦어서 죄송해요! 일단, 구현을 완료하였고, 현재, Service 리뷰를 반영하지 못한 상태입니다...! 정말, 감사하고 죄송합니다.... 😭 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
모찌 안녕하세요! 첫 리뷰 때 꽤나 많은 리뷰를 남겼었네요.
의문을 남긴에는 추가로 의견을 남겨드렸으며, 아직 덜 반영이 된 부분들이 보이긴 하는데 모찌도 이미 인지 중이니 3,4단계를 진행하면서 해당 부분을 적용해 볼지 아니면 3,4단계를 마무리를 해볼지 고민해 보시기 바랍니다.
추가로 DM으로 이야기했던 것처럼 시간이 많이 없다면 월요일까지는 3단계만이라도 마무리해서 리뷰 요청을 주시기 바랍니다.
DataBindingUtil.inflate(inflater, R.layout.fragment_cart_selection, container, false) | ||
binding.lifecycleOwner = this | ||
setCartProductAdapter() | ||
observeCartViewModel() |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
viewLifecycleOwner를 사용하는 Observe는 Fragment의 뷰 라이프사이클에 맞춰 자동으로 구독이 해제되기 때문에 안전해서, 반드시 뷰가 inflate 된 이후에 등록해야 한다는 의미일까요?
꼭 그런 의미는 아니었습니다. 지금 현재도 앱이 죽는다던가 그런 일은 없지만, 제가 원했던 방향은 View가 그려지기 전에 불필요한 동작이 아닌가를 되돌아봤었으면 했습니다.
Fragment에서 보통 observe를 할 때 lifecycleOwener를 어떤 것을 사용하는지 그리고, View 가 아직 그려지기 전부터 Observe를 하게 됐을 때 화면이 그려지기까지의 딜레이가 조금이라도 생길 텐데 굳이 그럴 필요가 있는가? 를 고민해 보시길 바랐습니다.
이런 부분은 앞으로도 계속 고민을 해야 하고, 나중에 Compose
를 가도 동일하게 생각해야 하는 것들이기에 익숙해지시길 바랍니다.
셀프 체크리스트
README.md
에 기능 목록을 정리하고 명확히 기술하였는가?어떤 부분에 집중하여 리뷰해야 할까요?
안녕하세요. 코니! 수미상관으로 또 뵐 수 있게 되었습니다!
코드 리뷰 커뮤니케이션
📌 GitHub에서 PR에 댓글 남기는 방법
참고 자료
스크린샷
ez.mp4