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
@@ -1,9 +1,9 @@
package dev.meloda.fast.data
import com.slack.eithernet.ApiResult
import dev.meloda.fast.network.OAuthErrorDomain
import dev.meloda.fast.network.RestApiErrorDomain
import dev.meloda.fast.network.VkErrorCode
import com.slack.eithernet.ApiResult
sealed class State<out T> {
@@ -72,3 +72,12 @@ fun <T : Any> ApiResult<T, RestApiErrorDomain>.mapToState() = when (this) {
is ApiResult.Failure.HttpFailure -> this.error.toStateApiError()
is ApiResult.Failure.ApiFailure -> this.error.toStateApiError()
}
fun <T : Any, N> ApiResult<T, RestApiErrorDomain>.mapToState(successMapper: (T) -> N) = when (this) {
is ApiResult.Success -> State.Success(successMapper(this.value))
is ApiResult.Failure.NetworkFailure -> State.Error.ConnectionError
is ApiResult.Failure.UnknownFailure -> State.UNKNOWN_ERROR
is ApiResult.Failure.HttpFailure -> this.error.toStateApiError()
is ApiResult.Failure.ApiFailure -> this.error.toStateApiError()
}