Skip to content

Instantly share code, notes, and snippets.

@JorgeCastilloPrz
Last active July 31, 2018 11:31
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save JorgeCastilloPrz/b14beb64823d946da54f23349b45a725 to your computer and use it in GitHub Desktop.
Save JorgeCastilloPrz/b14beb64823d946da54f23349b45a725 to your computer and use it in GitHub Desktop.
PolymorphicRemoteDataSource.kt
class RemoteDataSource<F>(A: Async<F>) : DataSource<F>, Async<F> by A {
private val internetStorage: Map<User, List<Task>> =
mapOf(User(UserId("user2")) to listOf(Task("Remote Task assigned to user2")))
override fun allTasksByUser(user: User): Kind<F, List<Task>> =
async { callback: (Either<Throwable, List<Task>>) -> Unit ->
Option.fromNullable(internetStorage[user]).fold(
{ callback(UserNotInRemoteStorage(user).left()) },
{ callback(it.right()) }
)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment