Skip to content

Instantly share code, notes, and snippets.

@JorgeCastilloPrz
Last active July 30, 2018 16:20
Show Gist options
  • Save JorgeCastilloPrz/9291fddcb2843593bdc18abb609b6990 to your computer and use it in GitHub Desktop.
Save JorgeCastilloPrz/9291fddcb2843593bdc18abb609b6990 to your computer and use it in GitHub Desktop.
RxDataSources
class LocalDataSource : DataSource {
private val localCache: Map<User, List<Task>> =
mapOf(User(UserId("user1")) to listOf(Task("LocalTask assigned to user1")))
override fun allTasksByUser(user: User): Observable<List<Task>> =
Observable.create { emitter ->
val cachedUser = localCache[user]
if (cachedUser != null) {
emitter.onNext(cachedUser)
} else {
emitter.onError(UserNotInLocalStorage(user))
}
}
}
class RemoteDataSource : DataSource {
private val internetStorage: Map<User, List<Task>> =
mapOf(User(UserId("user2")) to listOf(Task("Remote Task assigned to user2")))
override fun allTasksByUser(user: User): Observable<List<Task>> =
Observable.create { emitter ->
val networkUser = internetStorage[user]
if (networkUser != null) {
emitter.onNext(networkUser)
} else {
emitter.onError(UserNotInRemoteStorage(user))
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment