From d80a99ade03656d393b4b23a1ce2e72efbfa5184 Mon Sep 17 00:00:00 2001 From: Niktia Date: Thu, 20 Feb 2025 15:49:24 +0300 Subject: [PATCH] admin viewmodel and fragment --- .../work/domain/user/BlockUseCase.kt | 2 +- .../work/domain/user/UnBlockUseCase.kt | 2 +- .../myitschool/work/ui/admin/AdminFragment.kt | 35 ++++++++-------- .../work/ui/admin/AdminViewModel.kt | 40 ++++++++++++++++++- 4 files changed, 57 insertions(+), 22 deletions(-) diff --git a/app/src/main/java/ru/myitschool/work/domain/user/BlockUseCase.kt b/app/src/main/java/ru/myitschool/work/domain/user/BlockUseCase.kt index e2dd081..9576e1a 100644 --- a/app/src/main/java/ru/myitschool/work/domain/user/BlockUseCase.kt +++ b/app/src/main/java/ru/myitschool/work/domain/user/BlockUseCase.kt @@ -11,5 +11,5 @@ public class BlockUseCase ( private fun getUserFromStorage() : UserDto? { return authStorageDataSource.userInfo } - suspend operator fun invoke(value : String) = repo.block(getUserFromStorage()?.login!!) + suspend operator fun invoke() = repo.block(getUserFromStorage()?.login!!) } diff --git a/app/src/main/java/ru/myitschool/work/domain/user/UnBlockUseCase.kt b/app/src/main/java/ru/myitschool/work/domain/user/UnBlockUseCase.kt index b593dcb..de5ef0b 100644 --- a/app/src/main/java/ru/myitschool/work/domain/user/UnBlockUseCase.kt +++ b/app/src/main/java/ru/myitschool/work/domain/user/UnBlockUseCase.kt @@ -11,5 +11,5 @@ public class UnBlockUseCase ( private fun getUserFromStorage() : UserDto? { return authStorageDataSource.userInfo } - suspend operator fun invoke(value : String) = repo.unblock(getUserFromStorage()?.login!!) + suspend operator fun invoke() = repo.unblock(getUserFromStorage()?.login!!) } diff --git a/app/src/main/java/ru/myitschool/work/ui/admin/AdminFragment.kt b/app/src/main/java/ru/myitschool/work/ui/admin/AdminFragment.kt index 0db8ec8..7225a7b 100644 --- a/app/src/main/java/ru/myitschool/work/ui/admin/AdminFragment.kt +++ b/app/src/main/java/ru/myitschool/work/ui/admin/AdminFragment.kt @@ -16,7 +16,6 @@ import ru.myitschool.work.utils.collectWithLifecycle class AdminFragment : Fragment(R.layout.fragment_admin) { private var _viewBinding: FragmentAdminBinding? = null private val viewBinding: FragmentAdminBinding get() = _viewBinding!! - private val viewModel by viewModels { AdminViewModel.Factory } @@ -24,23 +23,23 @@ class AdminFragment : Fragment(R.layout.fragment_admin) { _viewBinding = FragmentAdminBinding.bind(view) super.onViewCreated(view, savedInstanceState) - - /*viewModel.state.collectWithLifecycle(this) { state -> - - viewBinding.error.visibility = if (state is AdminViewModel.State.Error) View.VISIBLE else View.GONE - - - when(state) { - is AdminViewModel.State.Loading -> Unit - is AdminViewModel.State.GoToInfo -> { - findNavController().navigate() - } - is ProfileViewModel.State.Error -> { - viewBinding.errorText.text = state.text - } - } - - }*/ +// +// viewModel.state.collectWithLifecycle(this) { state -> +// +// viewBinding.error.visibility = if (state is AdminViewModel.State.Error) View.VISIBLE else View.GONE +// +// +// when(state) { +// is AdminViewModel.State.Loading -> Unit +// is AdminViewModel.State.GoToInfo -> { +// findNavController().navigate() +// } +// is ProfileViewModel.State.Error -> { +// viewBinding.errorText.text = state.text +// } +// } +// +// } } override fun onDestroyView() { diff --git a/app/src/main/java/ru/myitschool/work/ui/admin/AdminViewModel.kt b/app/src/main/java/ru/myitschool/work/ui/admin/AdminViewModel.kt index 49fb685..843fd2b 100644 --- a/app/src/main/java/ru/myitschool/work/ui/admin/AdminViewModel.kt +++ b/app/src/main/java/ru/myitschool/work/ui/admin/AdminViewModel.kt @@ -10,12 +10,16 @@ import kotlinx.coroutines.launch import ru.myitschool.work.data.auth.AuthStorageDataSource import ru.myitschool.work.data.user.UserNetworkDataSource import ru.myitschool.work.data.user.UserRepoImpl +import ru.myitschool.work.domain.user.BlockUseCase import ru.myitschool.work.domain.user.EntranceEntity import ru.myitschool.work.domain.user.GetUserUseCase +import ru.myitschool.work.domain.user.UnBlockUseCase import ru.myitschool.work.domain.user.UserEntity class AdminViewModel( - private val getUserUseCase: GetUserUseCase + private val getUserUseCase: GetUserUseCase, + private val blockUseCase: BlockUseCase, + private val unBlockUseCase: UnBlockUseCase ) : ViewModel() { private val _state = MutableStateFlow(State.Loading) val state = _state.asStateFlow() @@ -52,11 +56,33 @@ class AdminViewModel( } ) ) - //_state.emit(State.Error("о нет ошибка ошибка помогите")) + _state.emit(State.Error("о нет ошибка ошибка помогите")) } } + suspend fun blockUser() { + blockUseCase.invoke().fold( + onSuccess = { data -> + Log.d("uraa", "успех успех ${data.toString()}") + }, + onFailure = { error -> + Log.d("kaput", error.message.toString()) + State.Error(error.message.toString()) + } + ) + } + suspend fun unblockUser() { + unBlockUseCase.invoke().fold( + onSuccess = { data -> + Log.d("uraa", "успех успех ${data.toString()}") + }, + onFailure = { error -> + Log.d("kaput", error.message.toString()) + State.Error(error.message.toString()) + } + ) + } sealed interface State { data object Loading: State @@ -78,6 +104,16 @@ class AdminViewModel( userNetworkDataSource = UserNetworkDataSource() ), authStorageDataSource = AuthStorageDataSource + ), + blockUseCase = BlockUseCase(repo = UserRepoImpl( + userNetworkDataSource = UserNetworkDataSource() + ), + authStorageDataSource = AuthStorageDataSource + ), + unBlockUseCase = UnBlockUseCase(repo = UserRepoImpl( + userNetworkDataSource = UserNetworkDataSource() + ), + authStorageDataSource = AuthStorageDataSource ) ) as T }