From 59d6519f5692a05c8c51d1c9a9d6452a206ab67e Mon Sep 17 00:00:00 2001 From: v228a Date: Wed, 19 Feb 2025 11:35:14 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB=20?= =?UTF-8?q?=D0=BE=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5=20?= =?UTF-8?q?=D0=BF=D0=BE=20=D1=81=D0=B2=D0=B0=D0=B9=D0=BF=D1=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle.kts | 1 + .../work/ui/profile/ProfileFragment.kt | 16 +++++++++++++++- .../work/ui/profile/ProfileViewModel.kt | 2 +- app/src/main/res/layout/fragment_profile.xml | 10 ++++++++-- 4 files changed, 25 insertions(+), 4 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index a28d464..62ff353 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -35,6 +35,7 @@ android { } dependencies { + implementation("androidx.swiperefreshlayout:swiperefreshlayout:1.1.0") defaultLibrary() implementation(Dependencies.AndroidX.activity) diff --git a/app/src/main/java/ru/myitschool/work/ui/profile/ProfileFragment.kt b/app/src/main/java/ru/myitschool/work/ui/profile/ProfileFragment.kt index ea901a4..ae9b7a7 100644 --- a/app/src/main/java/ru/myitschool/work/ui/profile/ProfileFragment.kt +++ b/app/src/main/java/ru/myitschool/work/ui/profile/ProfileFragment.kt @@ -5,6 +5,7 @@ import android.view.View import androidx.fragment.app.Fragment import androidx.fragment.app.viewModels import androidx.navigation.fragment.findNavController +import androidx.swiperefreshlayout.widget.SwipeRefreshLayout import com.squareup.picasso.Picasso import dagger.hilt.android.AndroidEntryPoint import ru.myitschool.work.R @@ -22,11 +23,20 @@ class ProfileFragment : Fragment(R.layout.fragment_profile) { private val viewModel: ProfileViewModel by viewModels() + private lateinit var swipeRefreshLayout: SwipeRefreshLayout + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) _binding = FragmentProfileBinding.bind(view) + initCallback() subscribe() + + swipeRefreshLayout = binding.swipeRefreshLayout + + swipeRefreshLayout.setOnRefreshListener { + viewModel.updateUserInfo() + } } private fun subscribe() { @@ -36,11 +46,15 @@ class ProfileFragment : Fragment(R.layout.fragment_profile) { binding.loading.visibleOrGone(state is ProfileViewModel.State.Loading) when(state) { - is ProfileViewModel.State.Loading -> Unit + is ProfileViewModel.State.Loading -> { + swipeRefreshLayout.isRefreshing = true + } is ProfileViewModel.State.Error -> { + swipeRefreshLayout.isRefreshing = false binding.error.text = state.errorText } is ProfileViewModel.State.Show -> { + swipeRefreshLayout.isRefreshing = false binding.fullname.text = state.fullname binding.position.text = state.position binding.lastEntry.text = state.lastEntry diff --git a/app/src/main/java/ru/myitschool/work/ui/profile/ProfileViewModel.kt b/app/src/main/java/ru/myitschool/work/ui/profile/ProfileViewModel.kt index b4210fb..680cf1d 100644 --- a/app/src/main/java/ru/myitschool/work/ui/profile/ProfileViewModel.kt +++ b/app/src/main/java/ru/myitschool/work/ui/profile/ProfileViewModel.kt @@ -52,7 +52,7 @@ class ProfileViewModel @Inject constructor( } } - private fun updateUserInfo() { + fun updateUserInfo() { viewModelScope.launch { _state.update { State.Loading } getUserInfoUseCase.get().invoke().fold( diff --git a/app/src/main/res/layout/fragment_profile.xml b/app/src/main/res/layout/fragment_profile.xml index e92178b..1b47083 100644 --- a/app/src/main/res/layout/fragment_profile.xml +++ b/app/src/main/res/layout/fragment_profile.xml @@ -1,7 +1,12 @@ - + @@ -117,4 +122,5 @@ app:layout_constraintEnd_toEndOf="parent" /> - \ No newline at end of file + + \ No newline at end of file