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