mirror of
https://github.com/msfjarvis/compose-lobsters
synced 2025-08-18 03:17:03 +05:30
app: add LobstersPagingSource
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
This commit is contained in:
parent
c29edfd402
commit
ada6a6f3ff
3 changed files with 28 additions and 0 deletions
|
@ -72,6 +72,7 @@ dependencies {
|
|||
implementation(Dependencies.AndroidX.Compose.foundationLayout)
|
||||
implementation(Dependencies.AndroidX.Compose.material)
|
||||
implementation(Dependencies.AndroidX.Compose.navigation)
|
||||
implementation(Dependencies.AndroidX.Compose.paging)
|
||||
implementation(Dependencies.AndroidX.Compose.runtime)
|
||||
implementation(Dependencies.AndroidX.Compose.ui)
|
||||
implementation(Dependencies.AndroidX.Compose.uiTooling)
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
}
|
||||
}
|
|
@ -50,6 +50,7 @@ object Dependencies {
|
|||
const val foundationLayout = "androidx.compose.foundation:foundation-layout:$COMPOSE_VERSION"
|
||||
const val material = "androidx.compose.material:material:$COMPOSE_VERSION"
|
||||
const val navigation = "androidx.navigation:navigation-compose:1.0.0-alpha04"
|
||||
const val paging = "androidx.paging:paging-compose:1.0.0-alpha03"
|
||||
const val runtime = "androidx.compose.runtime:runtime:$COMPOSE_VERSION"
|
||||
const val ui = "androidx.compose.ui:ui:$COMPOSE_VERSION"
|
||||
const val uiUnit = "androidx.compose.ui:ui-unit:$COMPOSE_VERSION"
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue