Merge remote-tracking branch 'origin/main'

This commit is contained in:
Juja2025 2025-02-19 11:52:20 +03:00
commit e656d452f2
8 changed files with 88 additions and 4 deletions

View File

@ -35,6 +35,11 @@ android {
} }
dependencies { 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() defaultLibrary()
implementation(Dependencies.AndroidX.activity) implementation(Dependencies.AndroidX.activity)

View File

@ -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()
}
}

View File

@ -0,0 +1,7 @@
package ru.myitschool.work.ui.entrylast
import androidx.lifecycle.ViewModel
class EntryListViewModel : ViewModel() {
// TODO: Implement the ViewModel
}

View File

@ -5,6 +5,7 @@ import android.view.View
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import androidx.fragment.app.viewModels import androidx.fragment.app.viewModels
import androidx.navigation.fragment.findNavController import androidx.navigation.fragment.findNavController
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout
import com.squareup.picasso.Picasso import com.squareup.picasso.Picasso
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
import ru.myitschool.work.R import ru.myitschool.work.R
@ -22,11 +23,20 @@ class ProfileFragment : Fragment(R.layout.fragment_profile) {
private val viewModel: ProfileViewModel by viewModels() private val viewModel: ProfileViewModel by viewModels()
private lateinit var swipeRefreshLayout: SwipeRefreshLayout
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
_binding = FragmentProfileBinding.bind(view) _binding = FragmentProfileBinding.bind(view)
initCallback() initCallback()
subscribe() subscribe()
swipeRefreshLayout = binding.swipeRefreshLayout
swipeRefreshLayout.setOnRefreshListener {
viewModel.updateUserInfo()
}
} }
private fun subscribe() { private fun subscribe() {
@ -36,11 +46,15 @@ class ProfileFragment : Fragment(R.layout.fragment_profile) {
binding.loading.visibleOrGone(state is ProfileViewModel.State.Loading) binding.loading.visibleOrGone(state is ProfileViewModel.State.Loading)
when(state) { when(state) {
is ProfileViewModel.State.Loading -> Unit is ProfileViewModel.State.Loading -> {
swipeRefreshLayout.isRefreshing = true
}
is ProfileViewModel.State.Error -> { is ProfileViewModel.State.Error -> {
swipeRefreshLayout.isRefreshing = false
binding.error.text = state.errorText binding.error.text = state.errorText
} }
is ProfileViewModel.State.Show -> { is ProfileViewModel.State.Show -> {
swipeRefreshLayout.isRefreshing = false
binding.fullname.text = state.fullname binding.fullname.text = state.fullname
binding.position.text = state.position binding.position.text = state.position
binding.lastEntry.text = state.lastEntry binding.lastEntry.text = state.lastEntry

View File

@ -52,7 +52,7 @@ class ProfileViewModel @Inject constructor(
} }
} }
private fun updateUserInfo() { fun updateUserInfo() {
viewModelScope.launch { viewModelScope.launch {
_state.update { State.Loading } _state.update { State.Loading }
getUserInfoUseCase.get().invoke().fold( getUserInfoUseCase.get().invoke().fold(

View File

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".ui.entrylast.EntryListFragment">
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="Hello" />
</FrameLayout>

View File

@ -1,7 +1,12 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" <androidx.swiperefreshlayout.widget.SwipeRefreshLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/swipeRefreshLayout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:padding="16dp"> android:padding="16dp">
@ -118,3 +123,4 @@
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>

View File

@ -4,4 +4,5 @@ plugins {
kotlinJvm version Version.Kotlin.language apply false kotlinJvm version Version.Kotlin.language apply false
kotlinAnnotationProcessor 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("com.google.dagger.hilt.android") version "2.51.1" apply false
id("org.jetbrains.kotlin.android") version "1.9.24" apply false
} }