Last active
June 21, 2022 12:08
-
-
Save monday8am/8ee3ed6b46091c56ff0925ee77c46a99 to your computer and use it in GitHub Desktop.
RepoResult
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* Different solutions for future RepoResult (?) object! */ | |
/* | |
* James! | |
*/ | |
sealed interface ResultReason | |
sealed class Result<S, E: ResultReason> | |
data class ResultSuccess<S, E: ResultReason>(val data: S) : Result<S, E>() | |
data class ResultError<S, E: ResultReason>(val reason: E) : Result<S, E>() | |
sealed class NetworkSourceReason : ResultReason | |
object NoConnection: NetworkSourceReason() | |
data class HttpErrorCode(val code: Int): NetworkSourceReason() | |
data class JsonParsing(val exception: JsonParseException): NetworkSourceReason() | |
sealed class LocalSourceReason : ResultReason | |
object SDCardRemoved: LocalSourceReason() | |
sealed class DbReason: LocalSourceReason() | |
data class Realm(val exception: io.realm.exceptions.RealmError): DbReason() | |
data class SQL(val exception: SQLException): DbReason() | |
/* | |
* Anton! | |
*/ | |
sealed class RepoResult<out T> { | |
data class Success<out T>(val data: T) : RepoResult<T>() | |
data class NetworkError(val reason: NetworkErrorReason, val originalException: Exception?): RepoResult() | |
data class AuthError(val reason: AuthReason, val originalException: Exception?): RepoResult() | |
data class LocalSourceError(val reason: LocalSourceReason, val originalException: Exception?): RepoResult() | |
// Different errors according to repositories | |
} | |
enum class NetworkErrorReason { | |
NoConnection, | |
ServerError, | |
Unknown | |
} | |
enum class LocalSourceReason { | |
SDCardRemoved, | |
PrivateTour, | |
TourAlreadyDeleted, | |
Unknown | |
} | |
enum class AuthReason { | |
FacebookSDK, | |
WrongPassword, | |
WrongHeaders, | |
Unknown | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment