Arun Joseph
01/14/2023, 6:46 PMaccount
and savedroutes
. The savedroutes
module depends on account
module.
account
module has some failures
interface Failure {
val errorMessage: String
}
/**
* Describes the domain failures related to user account
*/
sealed interface UserAccountInfoFailure : Failure {
/** No user info, no token */
data class UnAuthenticated(
override val errorMessage: String
) : UserAccountInfoFailure
...
}
savedroutes
modules has some failures
/**
* Describes the domain failures related to saving a route.
*/
sealed interface SaveRouteFailure : Failure {
data class RouteTooLongFailure(
override val errorMessage: String
) : SaveRouteFailure
...
}
I have a method in savedroutes
which returns
fun getSavedRoutes(): Flow<Either<List<SavedRoute>, [SaveRouteFailure or UserAccountInfoFailure]>> {
TODO()
I am trying to represent the fact that [SaveRouteFailure or UserAccountInfoFailure]
as a single class, one idea I am trying is to create
sealed interface SaveRouteRepositoryFailure: Failure
and trying to make
sealed interface SaveRouteFailure : SaveRouteRepositoryFailure {
works
sealed interface UserAccountInfoFailure : SaveRouteRepositoryFailure {
which can't be done because account
repository doesn't depend on savedroutes
.
Have you had any experience in dealing with situations like above?mitch
01/16/2023, 2:14 AMsealed class GetSavedRouteFailure(override val errorMessage: String) : Failure {
data class UserAccountFailure(val value: UserAccountInfoFailure) : GetSavedRouteFailure(value.errorMessage)
data class SaveRouteFailure(val value: SavedRouteFailure) : GetSavedRouteFailure(value.errorMessage)
}
Arun Joseph
01/16/2023, 8:15 AMTower Guidev2
01/16/2023, 9:16 AMEither<List<SavedRoute>, [SaveRouteFailure or UserAccountInfoFailure]>
, you have defined the oppositemitch
01/16/2023, 9:17 AM