separation of users use cases

This commit is contained in:
2024-08-14 21:03:35 +03:00
parent bafebfa4ae
commit 58e2906c0f
13 changed files with 170 additions and 80 deletions
@@ -20,8 +20,8 @@ import dev.meloda.fast.data.UserConfig
import dev.meloda.fast.data.db.AccountsRepository
import dev.meloda.fast.data.processState
import dev.meloda.fast.datastore.AppSettings
import dev.meloda.fast.domain.LoadUserByIdUseCase
import dev.meloda.fast.domain.OAuthUseCase
import dev.meloda.fast.domain.UsersUseCase
import dev.meloda.fast.model.database.AccountEntity
import dev.meloda.fast.network.OAuthErrorDomain
import kotlinx.coroutines.Dispatchers
@@ -71,7 +71,7 @@ interface LoginViewModel {
class LoginViewModelImpl(
private val oAuthUseCase: OAuthUseCase,
private val usersUseCase: UsersUseCase,
private val loadUserByIdUseCase: LoadUserByIdUseCase,
private val accountsRepository: AccountsRepository,
private val loginValidator: LoginValidator,
private val longPollController: LongPollController
@@ -171,8 +171,8 @@ class LoginViewModelImpl(
UserConfig.trustedHash = account.trustedHash
}
usersUseCase.get(
userIds = null,
loadUserByIdUseCase(
userId = null,
fields = VkConstants.USER_FIELDS,
nomCase = null
).listenValue(viewModelScope) { state ->
@@ -185,7 +185,7 @@ class LoginViewModelImpl(
// TODO: 19/07/2024, Danil Nikolaev: show error?
},
success = { response ->
val actualUserId = response.first().id
val actualUserId = requireNotNull(response).id
currentAccount = currentAccount.copy(userId = actualUserId)
@@ -245,8 +245,8 @@ class LoginViewModelImpl(
return@processState
}
usersUseCase.get(
userIds = listOf(userId),
loadUserByIdUseCase(
userId = userId,
fields = VkConstants.USER_FIELDS,
nomCase = null
)
@@ -8,7 +8,8 @@ import dev.meloda.fast.common.extensions.setValue
import dev.meloda.fast.data.State
import dev.meloda.fast.data.UserConfig
import dev.meloda.fast.data.processState
import dev.meloda.fast.domain.UsersUseCase
import dev.meloda.fast.domain.GetLocalUserByIdUseCase
import dev.meloda.fast.domain.LoadUserByIdUseCase
import dev.meloda.fast.model.BaseError
import dev.meloda.fast.network.VkErrorCode
import dev.meloda.fast.profile.model.ProfileScreenState
@@ -21,7 +22,8 @@ interface ProfileViewModel {
}
class ProfileViewModelImpl(
private val usersUseCase: UsersUseCase
private val getLocalUserByIdUseCase: GetLocalUserByIdUseCase,
private val loadUserByIdUseCase: LoadUserByIdUseCase
) : ViewModel(), ProfileViewModel {
override val screenState = MutableStateFlow(ProfileScreenState.EMPTY)
@@ -32,7 +34,7 @@ class ProfileViewModelImpl(
}
private fun getLocalAccountInfo() {
usersUseCase.getLocalUser(UserConfig.userId)
getLocalUserByIdUseCase(UserConfig.userId)
.listenValue(viewModelScope) { state ->
state.processState(
error = { error ->
@@ -67,8 +69,8 @@ class ProfileViewModelImpl(
}
private fun loadAccountInfo() {
usersUseCase.get(
userIds = null,
loadUserByIdUseCase(
userId = null,
fields = VkConstants.USER_FIELDS,
nomCase = null
).listenValue(viewModelScope) { state ->
@@ -77,7 +79,7 @@ class ProfileViewModelImpl(
// TODO: 12/07/2024, Danil Nikolaev: if local info is null then show error view
},
success = { response ->
val user = response.single()
val user = requireNotNull(response)
screenState.setValue { old ->
old.copy(