diff --git a/app/build.gradle.kts b/app/build.gradle.kts index a28d464..941629f 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -35,6 +35,11 @@ android { } dependencies { + implementation("androidx.swiperefreshlayout:swiperefreshlayout:1.1.0") + implementation("androidx.legacy:legacy-support-v4:1.0.0") + implementation("androidx.lifecycle:lifecycle-livedata-ktx:2.8.7") + implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:2.8.7") + implementation("androidx.fragment:fragment-ktx:1.5.6") defaultLibrary() implementation(Dependencies.AndroidX.activity) diff --git a/app/src/main/java/ru/myitschool/work/ui/entrylast/EntryListFragment.kt b/app/src/main/java/ru/myitschool/work/ui/entrylast/EntryListFragment.kt new file mode 100644 index 0000000..ecdc58c --- /dev/null +++ b/app/src/main/java/ru/myitschool/work/ui/entrylast/EntryListFragment.kt @@ -0,0 +1,38 @@ +package ru.myitschool.work.ui.entrylast + +import androidx.fragment.app.viewModels +import android.os.Bundle +import androidx.fragment.app.Fragment +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import ru.myitschool.work.R +import ru.myitschool.work.databinding.FragmentEntryListBinding +import ru.myitschool.work.databinding.FragmentLoginBinding +import ru.myitschool.work.ui.login.LoginViewModel + +class EntryListFragment : Fragment(R.layout.fragment_entry_list) { + + private var _binding: FragmentEntryListBinding? = null + private val binding: FragmentEntryListBinding get() = _binding!! + + private val viewModel: LoginViewModel by viewModels() + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + _binding = FragmentEntryListBinding.bind(view) + + } + private fun subscribe(){ + //TODO + } + + private fun initCallback(){ + //TODO + } + + override fun onDestroyView() { + _binding = null + super.onDestroyView() + } +} \ No newline at end of file diff --git a/app/src/main/java/ru/myitschool/work/ui/entrylast/EntryListViewModel.kt b/app/src/main/java/ru/myitschool/work/ui/entrylast/EntryListViewModel.kt new file mode 100644 index 0000000..2476f6d --- /dev/null +++ b/app/src/main/java/ru/myitschool/work/ui/entrylast/EntryListViewModel.kt @@ -0,0 +1,7 @@ +package ru.myitschool.work.ui.entrylast + +import androidx.lifecycle.ViewModel + +class EntryListViewModel : ViewModel() { + // TODO: Implement the ViewModel +} \ No newline at end of file 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_entry_list.xml b/app/src/main/res/layout/fragment_entry_list.xml new file mode 100644 index 0000000..4aeab52 --- /dev/null +++ b/app/src/main/res/layout/fragment_entry_list.xml @@ -0,0 +1,13 @@ + + + + + + \ No newline at end of file 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 diff --git a/build.gradle.kts b/build.gradle.kts index 4a92e0e..cf1d650 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -4,4 +4,5 @@ plugins { kotlinJvm version Version.Kotlin.language apply false kotlinAnnotationProcessor version Version.Kotlin.language apply false id("com.google.dagger.hilt.android") version "2.51.1" apply false + id("org.jetbrains.kotlin.android") version "1.9.24" apply false } \ No newline at end of file