Tiago Nunes
05/06/2021, 10:11 AMKamilH
05/06/2021, 10:14 AMJavier
05/06/2021, 10:17 AMval response = networkEither { client.get("...") }
Tiago Nunes
05/06/2021, 10:18 AMTiago Nunes
05/06/2021, 10:18 AMJavier
05/06/2021, 10:19 AMTiago Nunes
05/06/2021, 10:19 AMJavier
05/06/2021, 10:19 AMMustafa Ozhan
05/06/2021, 12:44 PMTiago Nunes
05/06/2021, 1:24 PMTiago Nunes
05/06/2021, 1:26 PMMustafa Ozhan
05/06/2021, 1:29 PMsealed class Result<T> {
data class Success<T>(val data: T) : Result<T>()
data class Error(val exception: Throwable) : Result<Nothing>()
fun execute(
success: ((T) -> Unit)? = null,
error: ((Throwable) -> Unit)? = null,
complete: (() -> Unit)? = null
) {
when (this) {
is Success -> success?.invoke(data)
is Error -> error?.invoke(exception)
}
complete?.invoke()
}
}
and I use like this
apiRepository
.getRatesViaBackend(settingsRepository.currentBase)
.execute(::getRatesSuccess, ::getRatesFailed)
So i get rid of try catches, with this wrapper.
Actual error mapping is inside the ApiRepository that I shared previouslyTiago Nunes
05/06/2021, 1:33 PMTiago Nunes
05/06/2021, 1:37 PMMustafa Ozhan
05/06/2021, 1:42 PMJavier
05/06/2021, 1:45 PMval response: NetworkEither<SomeError, SomeSuccess> = networkEither { client.get("...") }
Javier
05/06/2021, 1:46 PMrudolf.hladik
05/06/2021, 5:15 PMhttpClient.request<HttpResponse> {...}
Tiago Nunes
05/06/2021, 5:20 PMJavier
05/11/2021, 11:24 AMTiago Nunes
05/11/2021, 12:52 PM