From 460d78a7f20f655f5b0be6049c16da3e6b04bdb3 Mon Sep 17 00:00:00 2001 From: Namyunsuk <84739562+Namyunsuk@users.noreply.github.com> Date: Wed, 23 Oct 2024 16:02:22 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20=EA=B3=B5=EB=AA=A8=20=EC=B0=B8=EC=97=AC?= =?UTF-8?q?=20=EC=8B=9C=20=ED=94=84=EB=A1=9C=EA=B7=B8=EB=9E=98=EC=8A=A4=20?= =?UTF-8?q?=EB=B0=94=20=EB=B3=B4=EC=9D=B4=EB=8F=84=EB=A1=9D=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84=20(#627)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix: 공모 참여 후 홈화면에서 상태가 바뀌지 않는 오류 수정 * refactor: ProgressBar색상 mainColor로 변경 * refactor: loading 상태 네이밍 변경 * feat: 공모 참여 시 프로그래스 바 보이는 기능 구현 --- .../presentation/view/home/HomeFragment.kt | 13 ++++++++----- .../offeringdetail/OfferingDetailFragment.kt | 2 +- .../offeringdetail/OfferingDetailViewModel.kt | 16 +++++++++++----- .../app/src/main/res/layout/fragment_home.xml | 1 + .../res/layout/fragment_offering_detail.xml | 19 +++++++++++++++---- .../fragment_offering_modify_optional.xml | 5 +++-- 6 files changed, 39 insertions(+), 17 deletions(-) diff --git a/android/app/src/main/java/com/zzang/chongdae/presentation/view/home/HomeFragment.kt b/android/app/src/main/java/com/zzang/chongdae/presentation/view/home/HomeFragment.kt index 632d2039b..a118618c0 100644 --- a/android/app/src/main/java/com/zzang/chongdae/presentation/view/home/HomeFragment.kt +++ b/android/app/src/main/java/com/zzang/chongdae/presentation/view/home/HomeFragment.kt @@ -118,11 +118,13 @@ class HomeFragment : Fragment(), OnOfferingClickListener { private fun initFragmentResultListener() { setFragmentResultListener(OfferingDetailFragment.OFFERING_DETAIL_BUNDLE_KEY) { _, bundle -> - viewModel.fetchUpdatedOffering(bundle.getLong(OfferingDetailFragment.UPDATED_OFFERING_ID_KEY)) - } + if (bundle.containsKey(OfferingDetailFragment.UPDATED_OFFERING_ID_KEY)) { + viewModel.fetchUpdatedOffering(bundle.getLong(OfferingDetailFragment.UPDATED_OFFERING_ID_KEY)) + } - setFragmentResultListener(OfferingDetailFragment.OFFERING_DETAIL_BUNDLE_KEY) { _, bundle -> - viewModel.refreshOfferings(bundle.getBoolean(OfferingDetailFragment.DELETED_OFFERING_ID_KEY)) + if (bundle.containsKey(OfferingDetailFragment.DELETED_OFFERING_ID_KEY)) { + viewModel.refreshOfferings(bundle.getBoolean(OfferingDetailFragment.DELETED_OFFERING_ID_KEY)) + } } setFragmentResultListener(OfferingWriteOptionalFragment.OFFERING_WRITE_BUNDLE_KEY) { _, bundle -> @@ -221,7 +223,8 @@ class HomeFragment : Fragment(), OnOfferingClickListener { viewModel.updatedOffering.observe(viewLifecycleOwner) { offeringAdapter.addUpdatedItem(it.toList()) } - viewModel.updatedOffering.getValue()?.toList()?.let { offeringAdapter.addUpdatedItem(it) } + viewModel.updatedOffering.getValue()?.toList() + ?.let { offeringAdapter.addUpdatedItem(it) } viewModel.refreshTokenExpiredEvent.observe(viewLifecycleOwner) { LoginActivity.startActivity(requireContext()) diff --git a/android/app/src/main/java/com/zzang/chongdae/presentation/view/offeringdetail/OfferingDetailFragment.kt b/android/app/src/main/java/com/zzang/chongdae/presentation/view/offeringdetail/OfferingDetailFragment.kt index 9d90139ce..136cc69d0 100644 --- a/android/app/src/main/java/com/zzang/chongdae/presentation/view/offeringdetail/OfferingDetailFragment.kt +++ b/android/app/src/main/java/com/zzang/chongdae/presentation/view/offeringdetail/OfferingDetailFragment.kt @@ -128,7 +128,7 @@ class OfferingDetailFragment : Fragment(), OnOfferingDeleteAlertClickListener { dialog.dismiss() } - viewModel.loading.observe(viewLifecycleOwner) { + viewModel.isOfferingDetailLoading.observe(viewLifecycleOwner) { startShimmer(it) } } diff --git a/android/app/src/main/java/com/zzang/chongdae/presentation/view/offeringdetail/OfferingDetailViewModel.kt b/android/app/src/main/java/com/zzang/chongdae/presentation/view/offeringdetail/OfferingDetailViewModel.kt index 4e55a2266..ba2775565 100644 --- a/android/app/src/main/java/com/zzang/chongdae/presentation/view/offeringdetail/OfferingDetailViewModel.kt +++ b/android/app/src/main/java/com/zzang/chongdae/presentation/view/offeringdetail/OfferingDetailViewModel.kt @@ -95,8 +95,11 @@ class OfferingDetailViewModel private val _alertCancelEvent = MutableSingleLiveData() val alertCancelEvent: SingleLiveData get() = _alertCancelEvent - private val _loading: MutableLiveData = MutableLiveData(false) - val loading: LiveData get() = _loading + private val _isOfferingDetailLoading: MutableLiveData = MutableLiveData(false) + val isOfferingDetailLoading: LiveData get() = _isOfferingDetailLoading + + private val _isParticipationLoading: MutableLiveData = MutableLiveData(false) + val isParticipationLoading: LiveData get() = _isParticipationLoading init { loadOffering() @@ -104,7 +107,7 @@ class OfferingDetailViewModel fun loadOffering() { viewModelScope.launch { - _loading.value = true + _isOfferingDetailLoading.value = true when (val result = offeringDetailRepository.fetchOfferingDetail(offeringId)) { is Result.Error -> when (result.error) { @@ -115,7 +118,7 @@ class OfferingDetailViewModel } is Result.Error -> { - _loading.value = false + _isOfferingDetailLoading.value = false userPreferencesDataStore.removeAllData() _refreshTokenExpiredEvent.setValue(Unit) return@launch @@ -133,7 +136,7 @@ class OfferingDetailViewModel } is Result.Success -> { - _loading.value = false + _isOfferingDetailLoading.value = false _offeringDetail.value = result.data _currentCount.value = result.data.currentCount.value _offeringCondition.value = result.data.condition @@ -148,6 +151,7 @@ class OfferingDetailViewModel override fun participate() { viewModelScope.launch { + _isParticipationLoading.value = true when (val result = offeringDetailRepository.saveParticipation(offeringId)) { is Result.Error -> when (result.error) { @@ -172,6 +176,7 @@ class OfferingDetailViewModel } is Result.Success -> { + _isParticipationLoading.value = false _isParticipated.value = true _commentDetailEvent.setValue(offeringDetail.value?.title ?: DEFAULT_TITLE) _updatedOfferingId.value = offeringId @@ -260,6 +265,7 @@ class OfferingDetailViewModel } override fun onClickConfirm() { + _alertCancelEvent.setValue(Unit) participate() } diff --git a/android/app/src/main/res/layout/fragment_home.xml b/android/app/src/main/res/layout/fragment_home.xml index 6df1f2d96..395adfdfa 100644 --- a/android/app/src/main/res/layout/fragment_home.xml +++ b/android/app/src/main/res/layout/fragment_home.xml @@ -124,6 +124,7 @@ android:id="@+id/pb_loading" android:layout_width="wrap_content" android:layout_height="wrap_content" + android:indeterminateTint="@color/main_color" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" diff --git a/android/app/src/main/res/layout/fragment_offering_detail.xml b/android/app/src/main/res/layout/fragment_offering_detail.xml index 23cdbc801..f253e2337 100644 --- a/android/app/src/main/res/layout/fragment_offering_detail.xml +++ b/android/app/src/main/res/layout/fragment_offering_detail.xml @@ -23,7 +23,7 @@ android:layout_height="0dp" android:overScrollMode="never" android:scrollbars="none" - app:isVisible="@{!vm.loading}" + app:isVisible="@{!vm.isOfferingDetailLoading}" app:layout_constraintBottom_toTopOf="@id/btn_participate" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" @@ -363,7 +363,7 @@ app:condition="@{vm.offeringCondition}" app:currentCount="@{vm.currentCount}" app:debouncedOnClick="@{() -> vm.onParticipateClick()}" - app:isVisible="@{!vm.isParticipated && !vm.loading}" + app:isVisible="@{!vm.isParticipated && !vm.isOfferingDetailLoading}" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" @@ -383,7 +383,7 @@ android:text="@string/offering_detail_move_comment_detail" android:textColor="@color/white" app:debouncedOnClick="@{() -> vm.onClickMoveCommentDetail()}" - app:isVisible="@{vm.isParticipated && !vm.loading}" + app:isVisible="@{vm.isParticipated && !vm.isOfferingDetailLoading}" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" @@ -393,7 +393,7 @@ android:id="@+id/sfl_offering_detail" android:layout_width="match_parent" android:layout_height="match_parent" - app:isVisible="@{vm.loading}" + app:isVisible="@{vm.isOfferingDetailLoading}" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent"> @@ -401,5 +401,16 @@ + + diff --git a/android/app/src/main/res/layout/fragment_offering_modify_optional.xml b/android/app/src/main/res/layout/fragment_offering_modify_optional.xml index cb48431e0..63eb84fb6 100644 --- a/android/app/src/main/res/layout/fragment_offering_modify_optional.xml +++ b/android/app/src/main/res/layout/fragment_offering_modify_optional.xml @@ -109,6 +109,7 @@ android:id="@+id/progressBar" android:layout_width="@dimen/size_20" android:layout_height="@dimen/size_20" + android:indeterminateTint="@color/main_color" app:isVisible="@{vm.isLoading}" app:layout_constraintBottom_toBottomOf="@+id/iv_upload_photo" app:layout_constraintEnd_toEndOf="@+id/iv_upload_photo" @@ -271,8 +272,8 @@ android:text="@string/modify_submit" android:textColor="@color/white" android:textSize="@dimen/size_16" - app:debouncedOnClick="@{() -> vm.postOfferingModify()}" app:debounceTime="@{1200L}" + app:debouncedOnClick="@{() -> vm.postOfferingModify()}" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" @@ -282,4 +283,4 @@ - \ No newline at end of file +