Skip to content

Instantly share code, notes, and snippets.

@skydoves
Last active March 16, 2018 01:59
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 skydoves/dfabc2b05ee9bc8ee8595e122fc2c806 to your computer and use it in GitHub Desktop.
Save skydoves/dfabc2b05ee9bc8ee8595e122fc2c806 to your computer and use it in GitHub Desktop.
GithubUserRepository
@Singleton
class GithubUserRepository @Inject
constructor(val githubUserDao: GithubUserDao, val service: GithubService) {
@InjectPreference lateinit var profile: Preference_UserProfile
init {
Timber.d("Injection GithubUserRepository")
PreferenceComponent_PrefAppComponent.getInstance().inject(this)
}
fun refreshUser(user: String) {
profile.putName(user)
doAsync { githubUserDao.truncateGithubUser() }
}
fun loadUser(user: String): LiveData<Resource<GithubUser>> {
return object: NetworkBoundRepository<GithubUser, GithubUser>() {
override fun saveFetchData(item: GithubUser) {
doAsync { githubUserDao.insertGithubUser(item) }
}
override fun shouldFetch(data: GithubUser?): Boolean {
return data == null
}
override fun loadFromDb(): LiveData<GithubUser> {
return githubUserDao.getGithubUser(user)
}
override fun fetchService(): LiveData<ApiResponse<GithubUser>> {
return service.fetchGithubUser(user)
}
override fun onFetchFailed(envelope: Envelope?) {
Timber.d("onFetchFailed : $envelope")
}
}.asLiveData()
}
fun getUserKeyName() = profile.nameKeyName()
fun getPreferenceMenuPosition() = profile.menuPosition
fun putPreferenceMenuPosition(position: Int) { profile.putMenuPosition(position) }
fun getUserName() = profile.name
companion object {
const val per_page = 10
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment