adminFragment
This commit is contained in:
parent
b8147eff8b
commit
1af9aad25b
@ -10,7 +10,8 @@ class GetUserUseCase(
|
|||||||
private fun getUserFromStorage() : UserDto? {
|
private fun getUserFromStorage() : UserDto? {
|
||||||
return authStorageDataSource.userInfo
|
return authStorageDataSource.userInfo
|
||||||
}
|
}
|
||||||
suspend operator fun invoke() = repo.getUser(getUserFromStorage()?.login!!)
|
suspend operator fun invoke(user_login : String?) = repo.getUser(user_login
|
||||||
|
?: getUserFromStorage()?.login!!)
|
||||||
suspend fun getEntrancesList() = repo.getEntrancesList(getUserFromStorage()?.login!!)
|
suspend fun getEntrancesList() = repo.getEntrancesList(getUserFromStorage()?.login!!)
|
||||||
|
|
||||||
}
|
}
|
@ -1,5 +1,6 @@
|
|||||||
package ru.myitschool.work.ui.admin
|
package ru.myitschool.work.ui.admin
|
||||||
|
|
||||||
|
import android.annotation.SuppressLint
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import androidx.fragment.app.Fragment
|
import androidx.fragment.app.Fragment
|
||||||
@ -12,6 +13,7 @@ import ru.myitschool.work.databinding.FragmentAdminBinding
|
|||||||
import ru.myitschool.work.databinding.FragmentProfileBinding
|
import ru.myitschool.work.databinding.FragmentProfileBinding
|
||||||
import ru.myitschool.work.ui.profile.ProfileViewModel
|
import ru.myitschool.work.ui.profile.ProfileViewModel
|
||||||
import ru.myitschool.work.utils.collectWithLifecycle
|
import ru.myitschool.work.utils.collectWithLifecycle
|
||||||
|
import ru.sicampus.bootcamp2025.ui.centerList.EntranceAdapter
|
||||||
|
|
||||||
class AdminFragment : Fragment(R.layout.fragment_admin) {
|
class AdminFragment : Fragment(R.layout.fragment_admin) {
|
||||||
private var _viewBinding: FragmentAdminBinding? = null
|
private var _viewBinding: FragmentAdminBinding? = null
|
||||||
@ -19,27 +21,47 @@ class AdminFragment : Fragment(R.layout.fragment_admin) {
|
|||||||
private val viewModel by viewModels<AdminViewModel> { AdminViewModel.Factory }
|
private val viewModel by viewModels<AdminViewModel> { AdminViewModel.Factory }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||||
_viewBinding = FragmentAdminBinding.bind(view)
|
_viewBinding = FragmentAdminBinding.bind(view)
|
||||||
super.onViewCreated(view, savedInstanceState)
|
super.onViewCreated(view, savedInstanceState)
|
||||||
|
val adapter = EntranceAdapter()
|
||||||
|
viewBinding.recyclerView.adapter = adapter
|
||||||
|
|
||||||
//
|
viewBinding.findButton.setOnClickListener {
|
||||||
// viewModel.state.collectWithLifecycle(this) { state ->
|
val login = viewBinding.userLogin.text.toString()
|
||||||
//
|
viewModel.search(login)
|
||||||
// viewBinding.error.visibility = if (state is AdminViewModel.State.Error) View.VISIBLE else View.GONE
|
}
|
||||||
//
|
|
||||||
//
|
|
||||||
// when(state) {
|
viewModel.state.collectWithLifecycle(this) { state ->
|
||||||
// is AdminViewModel.State.Loading -> Unit
|
|
||||||
// is AdminViewModel.State.GoToInfo -> {
|
viewBinding.error.visibility = if (state is AdminViewModel.State.Error) View.VISIBLE else View.GONE
|
||||||
// findNavController().navigate()
|
|
||||||
// }
|
|
||||||
// is ProfileViewModel.State.Error -> {
|
when(state) {
|
||||||
// viewBinding.errorText.text = state.text
|
is AdminViewModel.State.Loading -> Unit
|
||||||
// }
|
is AdminViewModel.State.Show -> {
|
||||||
// }
|
viewBinding.noData.visibility = View.GONE
|
||||||
//
|
viewBinding.name.text = "Должность: ${state.profileInfo.position}"
|
||||||
// }
|
if (state.profileInfo.lastEntry == null) viewBinding.lastEntry.text = "Время последнего входа: Нет данных"
|
||||||
|
else viewBinding.lastEntry.text = "Время последнего входа: ${state.profileInfo.lastEntry}"
|
||||||
|
Picasso.get().load(state.profileInfo.avatarUrl).resize(100, 100).centerCrop().into(viewBinding.imageView)
|
||||||
|
|
||||||
|
if (state.entrancesList.isEmpty()) {
|
||||||
|
viewBinding.noData.visibility = View.VISIBLE
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
viewBinding.recyclerView.visibility = View.VISIBLE
|
||||||
|
adapter.submitList(state.entrancesList)
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
is AdminViewModel.State.Error -> {
|
||||||
|
viewBinding.errorText.text = state.text
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onDestroyView() {
|
override fun onDestroyView() {
|
||||||
|
@ -15,6 +15,7 @@ import ru.myitschool.work.domain.user.EntranceEntity
|
|||||||
import ru.myitschool.work.domain.user.GetUserUseCase
|
import ru.myitschool.work.domain.user.GetUserUseCase
|
||||||
import ru.myitschool.work.domain.user.UnBlockUseCase
|
import ru.myitschool.work.domain.user.UnBlockUseCase
|
||||||
import ru.myitschool.work.domain.user.UserEntity
|
import ru.myitschool.work.domain.user.UserEntity
|
||||||
|
import ru.myitschool.work.ui.profile.ProfileViewModel.State
|
||||||
|
|
||||||
class AdminViewModel(
|
class AdminViewModel(
|
||||||
private val getUserUseCase: GetUserUseCase,
|
private val getUserUseCase: GetUserUseCase,
|
||||||
@ -24,15 +25,9 @@ class AdminViewModel(
|
|||||||
private val _state = MutableStateFlow<State>(State.Loading)
|
private val _state = MutableStateFlow<State>(State.Loading)
|
||||||
val state = _state.asStateFlow()
|
val state = _state.asStateFlow()
|
||||||
|
|
||||||
init {
|
fun search(
|
||||||
updateStateGet()
|
login : String,
|
||||||
}
|
) {
|
||||||
|
|
||||||
fun clickRefresh() {
|
|
||||||
updateStateGet()
|
|
||||||
}
|
|
||||||
|
|
||||||
fun updateStateGet() {
|
|
||||||
viewModelScope.launch {
|
viewModelScope.launch {
|
||||||
_state.emit(State.Loading)
|
_state.emit(State.Loading)
|
||||||
val entranceList : List<EntranceEntity> = getUserUseCase.getEntrancesList().fold(
|
val entranceList : List<EntranceEntity> = getUserUseCase.getEntrancesList().fold(
|
||||||
@ -44,22 +39,54 @@ class AdminViewModel(
|
|||||||
}
|
}
|
||||||
)
|
)
|
||||||
_state.emit(
|
_state.emit(
|
||||||
getUserUseCase.invoke().fold(
|
getUserUseCase.invoke(login).fold(
|
||||||
onSuccess = { data ->
|
onSuccess = { data ->
|
||||||
Log.d("uraa", "успех успех ${data.toString()}")
|
Log.d("uraa", "успех успех ${data.toString()}")
|
||||||
|
|
||||||
State.GoToInfo(data, entranceList)
|
State.Show(data, entranceList)
|
||||||
},
|
},
|
||||||
onFailure = { error ->
|
onFailure = { error ->
|
||||||
Log.d("kaput", error.message.toString())
|
Log.d("kaput", error.message.toString())
|
||||||
State.Error(error.message.toString())
|
State.Error(error.message.toString())
|
||||||
}
|
}
|
||||||
)
|
) as State
|
||||||
)
|
)
|
||||||
_state.emit(State.Error("о нет ошибка ошибка помогите"))
|
_state.emit(State.Error("Не удалось загрузить профиль"))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// fun clickRefresh() {
|
||||||
|
// updateStateGet()
|
||||||
|
// }
|
||||||
|
|
||||||
|
// fun updateStateGet() {
|
||||||
|
// viewModelScope.launch {
|
||||||
|
// _state.emit(State.Loading)
|
||||||
|
// val entranceList : List<EntranceEntity> = getUserUseCase.getEntrancesList().fold(
|
||||||
|
// onSuccess = { list ->
|
||||||
|
// list
|
||||||
|
// },
|
||||||
|
// onFailure = {
|
||||||
|
// emptyList()
|
||||||
|
// }
|
||||||
|
// )
|
||||||
|
// _state.emit(
|
||||||
|
// getUserUseCase.invoke().fold(
|
||||||
|
// onSuccess = { data ->
|
||||||
|
// Log.d("uraa", "успех успех ${data.toString()}")
|
||||||
|
//
|
||||||
|
// State.Show(data, entranceList)
|
||||||
|
// },
|
||||||
|
// onFailure = { error ->
|
||||||
|
// Log.d("kaput", error.message.toString())
|
||||||
|
// State.Error(error.message.toString())
|
||||||
|
// }
|
||||||
|
// ) as State
|
||||||
|
// )
|
||||||
|
// _state.emit(State.Error("о нет ошибка ошибка помогите"))
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
suspend fun blockUser() {
|
suspend fun blockUser() {
|
||||||
blockUseCase.invoke().fold(
|
blockUseCase.invoke().fold(
|
||||||
onSuccess = { data ->
|
onSuccess = { data ->
|
||||||
@ -86,8 +113,8 @@ class AdminViewModel(
|
|||||||
|
|
||||||
sealed interface State {
|
sealed interface State {
|
||||||
data object Loading: State
|
data object Loading: State
|
||||||
data class GoToInfo(
|
data class Show(
|
||||||
val profileInfo: UserEntity,
|
val profileInfo : UserEntity,
|
||||||
val entrancesList : List<EntranceEntity>
|
val entrancesList : List<EntranceEntity>
|
||||||
) : State
|
) : State
|
||||||
data class Error(
|
data class Error(
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package ru.myitschool.work.ui.profile
|
package ru.myitschool.work.ui.profile
|
||||||
|
|
||||||
|
import android.annotation.SuppressLint
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.util.Log
|
import android.util.Log
|
||||||
|
@ -41,7 +41,7 @@ class ProfileViewModel(
|
|||||||
}
|
}
|
||||||
)
|
)
|
||||||
_state.emit(
|
_state.emit(
|
||||||
getUserUseCase.invoke().fold(
|
getUserUseCase.invoke(null).fold(
|
||||||
onSuccess = { data ->
|
onSuccess = { data ->
|
||||||
Log.d("uraa", "успех успех ${data.toString()}")
|
Log.d("uraa", "успех успех ${data.toString()}")
|
||||||
State.Show(data, entranceList)
|
State.Show(data, entranceList)
|
||||||
|
@ -34,7 +34,9 @@
|
|||||||
tools:layout="@layout/fragment_qr_result" >
|
tools:layout="@layout/fragment_qr_result" >
|
||||||
<action
|
<action
|
||||||
android:id="@+id/action_fragment_qr_result_to_fragment_profile"
|
android:id="@+id/action_fragment_qr_result_to_fragment_profile"
|
||||||
app:destination="@id/fragment_profile" />
|
app:destination="@id/fragment_profile"
|
||||||
|
app:popUpTo="@id/fragment_qr_result"
|
||||||
|
app:popUpToInclusive="true"/>
|
||||||
</fragment>
|
</fragment>
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user