app: add LobstersPagingSource

Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
This commit is contained in:
Harsh Shandilya 2020-12-02 22:22:25 +05:30
parent c29edfd402
commit ada6a6f3ff
No known key found for this signature in database
GPG key ID: 366D7BBAD1031E80
3 changed files with 28 additions and 0 deletions

View file

@ -0,0 +1,26 @@
package dev.msfjarvis.lobsters.data.remote
import androidx.paging.PagingSource
import dev.msfjarvis.lobsters.data.api.LobstersApi
import dev.msfjarvis.lobsters.model.LobstersPost
import javax.inject.Inject
class LobstersPagingSource @Inject constructor(
private val lobstersApi: LobstersApi,
) : PagingSource<Int, LobstersPost>() {
override suspend fun load(params: LoadParams<Int>): LoadResult<Int, LobstersPost> {
return try {
val page = params.key ?: 1
val posts = lobstersApi.getHottestPosts(page)
LoadResult.Page(
data = posts,
prevKey = if (page == 1) null else page - 1,
nextKey = page.plus(1)
)
} catch (e: Exception) {
LoadResult.Error(e)
}
}
}