Путь к совершенству

This commit is contained in:
v228a 2025-02-19 16:13:34 +03:00
parent 3612959188
commit c5147cb105
4 changed files with 25 additions and 7 deletions

View File

@ -9,6 +9,7 @@ import dagger.Lazy
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.flow.firstOrNull import kotlinx.coroutines.flow.firstOrNull
import kotlinx.coroutines.withContext import kotlinx.coroutines.withContext
import ru.myitschool.work.data.dto.LoginDto
@Reusable @Reusable
class AuthorizationRepositoryImpl @Inject constructor( class AuthorizationRepositoryImpl @Inject constructor(
@ -16,11 +17,11 @@ class AuthorizationRepositoryImpl @Inject constructor(
private val authorizationNetworkDataSource: Lazy<AuthorizationNetworkDataSource>, private val authorizationNetworkDataSource: Lazy<AuthorizationNetworkDataSource>,
): AuthorizationRepository { ): AuthorizationRepository {
override suspend fun login(username: String): Result<Unit> { override suspend fun login(data: LoginDto): Result<Unit> {
return withContext(Dispatchers.IO) { return withContext(Dispatchers.IO) {
authorizationNetworkDataSource.get().checkLogin(username) authorizationNetworkDataSource.get().checkLogin(data.username!!)
.onSuccess { .onSuccess {
authorizationStorageDataSource.get().updateLogin(username) authorizationStorageDataSource.get().updateLogin(data.username)
} }
} }
} }

View File

@ -1,12 +1,17 @@
package ru.myitschool.work.domain.auth package ru.myitschool.work.domain.auth
import ru.myitschool.work.data.dto.LoginDto
import ru.myitschool.work.domain.auth.repo.AuthorizationRepository import ru.myitschool.work.domain.auth.repo.AuthorizationRepository
import javax.inject.Inject import javax.inject.Inject
class LoginUseCase @Inject constructor( class LoginUseCase @Inject constructor(
private val repo: AuthorizationRepository, private val repo: AuthorizationRepository,
) { ) {
suspend operator fun invoke(login: String): Result<Unit> { // suspend operator fun invoke(login: String): Result<Unit> {
return repo.login(username = login) // return repo.login(username = login)
// }
suspend operator fun invoke(data: LoginDto): Result<Unit>{
return repo.login(data=data)
} }
} }

View File

@ -1,8 +1,11 @@
package ru.myitschool.work.domain.auth.repo package ru.myitschool.work.domain.auth.repo
import ru.myitschool.work.data.dto.LoginDto
interface AuthorizationRepository { interface AuthorizationRepository {
//br //br
suspend fun login(username: String): Result<Unit> //suspend fun login(username: String): Result<Unit>
suspend fun login(data: LoginDto): Result<Unit>
suspend fun logout() suspend fun logout()
suspend fun getLogin(): Result<String> suspend fun getLogin(): Result<String>

View File

@ -12,6 +12,7 @@ import kotlinx.coroutines.flow.asStateFlow
import kotlinx.coroutines.flow.update import kotlinx.coroutines.flow.update
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import ru.myitschool.work.R import ru.myitschool.work.R
import ru.myitschool.work.data.dto.LoginDto
import ru.myitschool.work.domain.auth.CheckValidLoginUseCase import ru.myitschool.work.domain.auth.CheckValidLoginUseCase
import ru.myitschool.work.domain.auth.LoginUseCase import ru.myitschool.work.domain.auth.LoginUseCase
import ru.myitschool.work.utils.MutablePublishFlow import ru.myitschool.work.utils.MutablePublishFlow
@ -31,11 +32,13 @@ class LoginViewModel @Inject constructor(
val state = _state.asStateFlow() val state = _state.asStateFlow()
private var login: String = "" private var login: String = ""
private var password: String = "123"//пока пароль по дефалту
fun clickLogin() { fun clickLogin() {
viewModelScope.launch { viewModelScope.launch {
_state.update { State.Loading } _state.update { State.Loading }
loginUseCase.get().invoke(login = login).fold( val data = LoginDto(login,password)
loginUseCase.get().invoke(data).fold(
onSuccess = { onSuccess = {
_action.emit(Action.OpenProfile) _action.emit(Action.OpenProfile)
}, },
@ -51,6 +54,9 @@ class LoginViewModel @Inject constructor(
} }
} }
//Чек пароля на правильность
fun inputLogin(login: String) { fun inputLogin(login: String) {
this.login = login this.login = login
viewModelScope.launch { viewModelScope.launch {
@ -61,6 +67,9 @@ class LoginViewModel @Inject constructor(
} }
} }
} }
fun passwordCheck(password: String){
this.password = password
}
sealed interface Action { sealed interface Action {
data object OpenProfile : Action data object OpenProfile : Action