From 100ad76ef2ad8a6baf4501f322d52f8a7cebee4b Mon Sep 17 00:00:00 2001 From: BENDENG1 <76191161+BENDENG1@users.noreply.github.com> Date: Mon, 2 Sep 2024 21:13:26 +0900 Subject: [PATCH 1/3] =?UTF-8?q?[fix/#175]=20=EC=8A=A4=ED=81=AC=EB=9E=A9=20?= =?UTF-8?q?=EC=83=81=EC=84=B8=ED=99=94=EB=A9=B4=20=EC=A0=84=EB=B6=80=20?= =?UTF-8?q?=EC=82=AD=EC=A0=9C=20=EC=BC=80=EC=9D=B4=EC=8A=A4=20=EB=8C=80?= =?UTF-8?q?=EC=9D=91,=20=EB=AC=B4=ED=95=9C=EC=8A=A4=ED=81=AC=EB=A1=A4=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dpm/presentation/scrap/ScrapActivity.kt | 2 +- .../scrap/ScrapDetailPictureFragment.kt | 10 +++--- .../scrap/viewmodel/ScrapViewModel.kt | 33 ++++++++++++------- 3 files changed, 27 insertions(+), 18 deletions(-) diff --git a/presentation/src/main/java/com/dpm/presentation/scrap/ScrapActivity.kt b/presentation/src/main/java/com/dpm/presentation/scrap/ScrapActivity.kt index ae73a4cd..eda3af3d 100644 --- a/presentation/src/main/java/com/dpm/presentation/scrap/ScrapActivity.kt +++ b/presentation/src/main/java/com/dpm/presentation/scrap/ScrapActivity.kt @@ -131,7 +131,7 @@ class ScrapActivity : BaseActivity( val scrollBottom = !binding.rvScrapRecord.canScrollVertically(1) val scrollTop = !binding.rvScrapRecord.canScrollVertically(-1) - if (scrollBottom && !isLoading && (viewModel.scrap.value as UiState.Success).data.hasNext) { + if (scrollBottom && !isLoading && viewModel.scrap.value is UiState.Success && (viewModel.scrap.value as UiState.Success).data.hasNext) { viewModel.getNextScrapRecord() isLoading = true } diff --git a/presentation/src/main/java/com/dpm/presentation/scrap/ScrapDetailPictureFragment.kt b/presentation/src/main/java/com/dpm/presentation/scrap/ScrapDetailPictureFragment.kt index b6305b65..c39a7dc1 100644 --- a/presentation/src/main/java/com/dpm/presentation/scrap/ScrapDetailPictureFragment.kt +++ b/presentation/src/main/java/com/dpm/presentation/scrap/ScrapDetailPictureFragment.kt @@ -79,8 +79,9 @@ class ScrapDetailPictureFragment : BindingFragment - adapter.submitList(data.reviews.map { it.baseReview }.toList()) - binding.vpScrap.setCurrentItem(viewModel.currentPage.value, false) + adapter.submitList(data.reviews.map { it.baseReview }.toList()){ + binding.vpScrap.setCurrentItem(viewModel.currentPage.value, false) + } isLoading = false } @@ -151,8 +152,7 @@ class ScrapDetailPictureFragment : BindingFragment= adapter.itemCount - 2 && (viewModel.scrap.value as UiState.Success).data.hasNext) { + if (!isLoading && position >= adapter.itemCount - 2 && viewModel.scrap.value is UiState.Success && viewModel.detailScrap.value.hasNext) { isLoading = true viewModel.getNextScrapRecord() } diff --git a/presentation/src/main/java/com/dpm/presentation/scrap/viewmodel/ScrapViewModel.kt b/presentation/src/main/java/com/dpm/presentation/scrap/viewmodel/ScrapViewModel.kt index 3808cd22..9c240ce4 100644 --- a/presentation/src/main/java/com/dpm/presentation/scrap/viewmodel/ScrapViewModel.kt +++ b/presentation/src/main/java/com/dpm/presentation/scrap/viewmodel/ScrapViewModel.kt @@ -42,7 +42,7 @@ data class BadReviewData( class ScrapViewModel @Inject constructor( private val homeRepository: HomeRepository, private val viewfinderRepository: ViewfinderRepository, - private val sharedPreference: SharedPreference + private val sharedPreference: SharedPreference, ) : ViewModel() { private var monthsSelected: List = emptyList() @@ -100,12 +100,12 @@ class ScrapViewModel @Inject constructor( } } - fun updateIsFirstLike(isFirstLike : Boolean) { + fun updateIsFirstLike(isFirstLike: Boolean) { sharedPreference.isFirstLike = isFirstLike _isFirstLike.value = isFirstLike } - fun updateIsFirstShare(isFirstShare : Boolean) { + fun updateIsFirstShare(isFirstShare: Boolean) { sharedPreference.isFirstShare = isFirstShare } @@ -114,16 +114,16 @@ class ScrapViewModel @Inject constructor( } fun reloadScrap() { - if(GlobalVariable.isScrap && _scrap.value is UiState.Empty) { + if (GlobalVariable.isScrap && _scrap.value is UiState.Empty) { getScrapRecord() } } fun updateScrapRecord() { - if(_detailScrap.value.reviews.count { it.baseReview.isScrapped } == 0){ + if (_detailScrap.value.reviews.count { it.baseReview.isScrapped } == 0) { _scrap.value = UiState.Empty - }else{ - _scrap.value = UiState.Success( detailScrap.value.copy( + } else { + _scrap.value = UiState.Success(detailScrap.value.copy( reviews = _detailScrap.value.reviews.filter { it.baseReview.isScrapped } )) } @@ -131,6 +131,8 @@ class ScrapViewModel @Inject constructor( fun getNextScrapRecord() { + val data = (_scrap.value as? UiState.Success)?.data ?: return + if (!data.hasNext || data.nextCursor == null) return viewModelScope.launch { homeRepository.getScrap( size = 20, @@ -156,7 +158,14 @@ class ScrapViewModel @Inject constructor( ) _scrap.value = UiState.Success(updatedScrap) val currentDetailScrap = _detailScrap.value.reviews - _detailScrap.value = detailScrap.value.copy(reviews = currentDetailScrap + it.reviews) + _detailScrap.value = + detailScrap.value.copy( + reviews = currentDetailScrap + it.reviews, + nextCursor = it.nextCursor, + hasNext = it.hasNext, + totalScrapCount = it.totalScrapCount, + filter = it.filter + ) }.onFailure {} } } @@ -181,7 +190,7 @@ class ScrapViewModel @Inject constructor( getScrapRecord() } - fun setCurrentPage(page : Int) { + fun setCurrentPage(page: Int) { _currentPage.value = page } @@ -248,11 +257,11 @@ class ScrapViewModel @Inject constructor( } } val updatedDetailList = detailScrap.value.reviews.map { review -> - if(review.baseReview.id == id){ + if (review.baseReview.id == id) { review.copy( baseReview = review.baseReview.copy( isLiked = !review.baseReview.isLiked, - likesCount = if (review.baseReview.isLiked) { + likesCount = if (review.baseReview.isLiked) { review.baseReview.likesCount - 1 } else { review.baseReview.likesCount + 1 @@ -290,7 +299,7 @@ class ScrapViewModel @Inject constructor( } val detailScrapUpdatedList = detailScrap.value.reviews.map { review -> - if(review.baseReview.id == id){ + if (review.baseReview.id == id) { review.copy( baseReview = review.baseReview.copy( isScrapped = !review.baseReview.isScrapped From fdfa4bb31c7c2194f6549073f5c33fc5105a64ef Mon Sep 17 00:00:00 2001 From: BENDENG1 <76191161+BENDENG1@users.noreply.github.com> Date: Mon, 2 Sep 2024 21:30:01 +0900 Subject: [PATCH 2/3] =?UTF-8?q?[fix/#175]=20=ED=94=84=EB=A1=9C=ED=95=84=20?= =?UTF-8?q?=EC=88=98=EC=A0=95=20=ED=9B=84=20=ED=99=88=20=EB=84=A4=ED=8A=B8?= =?UTF-8?q?=EC=9B=8C=ED=81=AC=20=EB=81=8A=EA=B9=80=20=EB=8C=80=EC=9D=91(?= =?UTF-8?q?=EC=9D=91=EC=9B=90=20=ED=8C=80)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/dpm/presentation/home/HomeActivity.kt | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/presentation/src/main/java/com/dpm/presentation/home/HomeActivity.kt b/presentation/src/main/java/com/dpm/presentation/home/HomeActivity.kt index 931a0b3d..df995616 100644 --- a/presentation/src/main/java/com/dpm/presentation/home/HomeActivity.kt +++ b/presentation/src/main/java/com/dpm/presentation/home/HomeActivity.kt @@ -174,7 +174,7 @@ class HomeActivity : BaseActivity( } } - private fun setLayoutBorder(){ + private fun setLayoutBorder() { binding.clHomeArchiving.clipToOutline = true binding.clHomeScrap.clipToOutline = true } @@ -224,6 +224,11 @@ class HomeActivity : BaseActivity( when (state) { is UiState.Empty -> Unit is UiState.Failure -> { + binding.tvHomeTeam.text = if(sharedPreference.teamId == 0){ + "모두를 응원하는" + } else { + sharedPreference.teamName + } makeSpotImageAppbar("내 정보 불러오기를 실패하였습니다.\uD83E\uDEE2") } @@ -262,8 +267,8 @@ class HomeActivity : BaseActivity( message = "현재 잠실야구장만 이용할 수 있어요!", endMessage = "잠실야구장 보기", marginBottom = 87, - onClick = {startStadiumActivity(it)} - ) .show() + onClick = { startStadiumActivity(it) } + ).show() } else { MixpanelManager.track("home_find_view") @@ -324,6 +329,7 @@ class HomeActivity : BaseActivity( shimmerHomeStadium.visibility = View.GONE } } + private fun setHomeFeedVisibility(isSuccess: Boolean) { val visibility = if (isSuccess) View.VISIBLE else View.GONE with(binding) { From 13a8f46809216a7d40999727497cdefd71807b39 Mon Sep 17 00:00:00 2001 From: BENDENG1 <76191161+BENDENG1@users.noreply.github.com> Date: Mon, 2 Sep 2024 21:41:09 +0900 Subject: [PATCH 3/3] =?UTF-8?q?[fix/#175]=20=EC=8A=A4=ED=81=AC=EB=9E=A9=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80=20=EB=A1=9C=EB=94=A9=20=EC=8B=9C=20itemDecor?= =?UTF-8?q?ation=EC=98=A4=EB=A5=98=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/dpm/presentation/scrap/ScrapActivity.kt | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/presentation/src/main/java/com/dpm/presentation/scrap/ScrapActivity.kt b/presentation/src/main/java/com/dpm/presentation/scrap/ScrapActivity.kt index eda3af3d..4f0cd223 100644 --- a/presentation/src/main/java/com/dpm/presentation/scrap/ScrapActivity.kt +++ b/presentation/src/main/java/com/dpm/presentation/scrap/ScrapActivity.kt @@ -77,8 +77,11 @@ class ScrapActivity : BaseActivity( when (state) { is UiState.Success -> { binding.tvScrapCount.text = state.data.totalScrapCount.toString() - scrapAdapter.submitList(state.data.reviews) - isLoading = false + scrapAdapter.submitList(state.data.reviews) { + binding.rvScrapRecord.invalidateItemDecorations() + isLoading = false + } + setScrapScreenVisibility(ScrapScreenState.SUCCESS) }