diff --git a/app/src/main/java/org/go/sopt/winey/presentation/main/mypage/MyPageFragment.kt b/app/src/main/java/org/go/sopt/winey/presentation/main/mypage/MyPageFragment.kt index 81ce2142..bb115679 100644 --- a/app/src/main/java/org/go/sopt/winey/presentation/main/mypage/MyPageFragment.kt +++ b/app/src/main/java/org/go/sopt/winey/presentation/main/mypage/MyPageFragment.kt @@ -22,6 +22,7 @@ import androidx.fragment.app.activityViewModels import androidx.lifecycle.flowWithLifecycle import androidx.lifecycle.lifecycleScope import dagger.hilt.android.AndroidEntryPoint +import kotlinx.coroutines.delay import kotlinx.coroutines.flow.first import kotlinx.coroutines.flow.firstOrNull import kotlinx.coroutines.flow.launchIn @@ -269,11 +270,23 @@ class MyPageFragment : BindingFragment(R.layout.fragment_ } } + private fun showLoadingProgressBar() { + binding.pbMypageLoading.isVisible = true + binding.svMypage.isVisible = false + } + + private fun dismissLoadingProgressBar() { + binding.pbMypageLoading.isVisible = false + binding.svMypage.isVisible = true + } + private fun setupGetUserStateObserver() { - mainViewModel.getUserState.flowWithLifecycle(lifecycle).onEach { state -> + mainViewModel.getUserState.flowWithLifecycle(lifecycle).onEach launch@{ state -> when (state) { is UiState.Success -> { - val data = dataStoreRepository.getUserInfo().first() ?: return@onEach + dismissLoadingProgressBar() + delay(100) + val data = dataStoreRepository.getUserInfo().first() ?: return@launch updateUserInfo(data) setUpUserGoalByLevel(data) setUpUserDataByGoal(data) @@ -285,6 +298,10 @@ class MyPageFragment : BindingFragment(R.layout.fragment_ snackBar(binding.root) { state.msg } } + is UiState.Loading -> { + showLoadingProgressBar() + } + else -> {} } }.launchIn(lifecycleScope) diff --git a/app/src/main/res/layout/fragment_my_page.xml b/app/src/main/res/layout/fragment_my_page.xml index cf84c04d..bc81b220 100644 --- a/app/src/main/res/layout/fragment_my_page.xml +++ b/app/src/main/res/layout/fragment_my_page.xml @@ -14,6 +14,16 @@ android:layout_width="match_parent" android:layout_height="match_parent"> + + +