ursus
09/23/2018, 12:28 AMclass LoginManager(private val apiClient: ApiClient, private val authTokenManager: AuthTokenManager) {
private val apiErrorTransformer = { t: Throwable ->
when {
t is ApiException && t.hasError("error authorizing") -> ApiErrorType.INVALID_LOGIN
t is ApiException -> ApiErrorType.API
t is IOException -> <http://ApiErrorType.IO|ApiErrorType.IO>
else -> ApiErrorType.OTHER
}
}
fun login(code: String): Observable<LoginApiEvent> {
return apiClient.login(code)
.doOnSuccess {
authTokenManager.writeAuthToken(it)
}
.toObservable()
.endWith("")
.emitEvents(
{ LoginApiEvent.Started },
{ LoginApiEvent.Success },
{ LoginApiEvent.Error(it) },
apiErrorTransformer
)
}
}