Skip to content

Instantly share code, notes, and snippets.

@labibmuhajir
Last active April 30, 2021 01:52
Show Gist options
  • Save labibmuhajir/be4fbb4e59fc6d0e86a5c2b3cb0cacff to your computer and use it in GitHub Desktop.
Save labibmuhajir/be4fbb4e59fc6d0e86a5c2b3cb0cacff to your computer and use it in GitHub Desktop.
Network Bounce Resource
class UserRepository @Inject constructor(
private val webservice: Webservice,
private val userDao: UserDao
) {
fun getUser(userId: String) =
object : NetworkBoundResource<User, User>() {
override suspend fun saveCallResult(item: User) {
userDao.save(item)
}
override fun shouldFetch(data: User?): Boolean {
return rateLimiter.canFetch(userId) && (data == null || !isFresh(data))
}
override suspend fun loadFromDb(): Flow<User> {
return userDao.load(userId)
}
override fun createCall(): Flow<ApiResponse<User>> {
return webservice.getUser(userId)
}
}
}
@labibmuhajir
Copy link
Author

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment