Skip to content

[쇼핑 주문 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

Merged
merged 72 commits into from
Jun 7, 2025

Conversation

wondroid-world
Copy link

@wondroid-world wondroid-world commented May 29, 2025

셀프 체크리스트

  • 프로그램이 정상적으로 작동하는가?
  • 모든 테스트가 통과하는가?
  • 이전에 받은 피드백을 모두 반영하였는가?
  • 코딩 스타일 가이드를 준수하였는가?
    • IDE 코드 자동 정렬을 적용하였는가?
    • 린트 검사를 통과하였는가?
  • 프로그래밍 요구 사항을 준수하였는가?
  • README.md에 기능 목록을 정리하고 명확히 기술하였는가?

어떤 부분에 집중하여 리뷰해야 할까요?

안녕하세요. 코니! 수미상관으로 또 뵐 수 있게 되었습니다!

코드 리뷰 커뮤니케이션

📌 GitHub에서 PR에 댓글 남기는 방법

참고 자료

스크린샷

ez.mp4

ijh1298 and others added 30 commits May 27, 2025 13:54
- 장바구니 화면에 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 제거
@wondroid-world
Copy link
Author

코니, 안녕하세요! 너무너무너무 늦어서 죄송해요!

일단, 구현을 완료하였고, 현재, Service 리뷰를 반영하지 못한 상태입니다...!
이부분은 3, 4단계에 반영을 하도록 하겠습니다.
이번에 DataSource와 Repository 분리도 CartPage에만 적용을 한 점 양해부탁드립니다.

정말, 감사하고 죄송합니다.... 😭

Copy link

@lee-ji-hoon lee-ji-hoon left a 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()
Copy link

@lee-ji-hoon lee-ji-hoon Jun 7, 2025

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를 가도 동일하게 생각해야 하는 것들이기에 익숙해지시길 바랍니다.

@lee-ji-hoon lee-ji-hoon merged commit 076c0f9 into woowacourse:wondroid-world Jun 7, 2025
1 check passed
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.

3 participants