mirror of
https://github.com/msfjarvis/compose-lobsters
synced 2025-08-15 14:37:04 +05:30
android: add paging setup
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
This commit is contained in:
parent
46ef1d5567
commit
9c451ae57b
2 changed files with 32 additions and 7 deletions
|
@ -4,16 +4,12 @@ plugins {
|
||||||
kotlin("android")
|
kotlin("android")
|
||||||
}
|
}
|
||||||
|
|
||||||
group = "dev.msfjarvis.claw"
|
|
||||||
|
|
||||||
version = "1.0"
|
|
||||||
|
|
||||||
repositories { google() }
|
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
|
implementation(projects.api)
|
||||||
implementation(projects.common)
|
implementation(projects.common)
|
||||||
implementation("androidx.appcompat:appcompat:1.4.0-alpha02")
|
|
||||||
implementation("androidx.activity:activity-compose:1.3.0-beta01")
|
implementation("androidx.activity:activity-compose:1.3.0-beta01")
|
||||||
|
implementation("androidx.appcompat:appcompat:1.4.0-alpha02")
|
||||||
|
implementation("androidx.paging:paging-compose:1.0.0-alpha10")
|
||||||
}
|
}
|
||||||
|
|
||||||
android {
|
android {
|
||||||
|
|
|
@ -0,0 +1,29 @@
|
||||||
|
package dev.msfjarvis.claw.android.paging
|
||||||
|
|
||||||
|
import androidx.paging.PagingSource
|
||||||
|
import androidx.paging.PagingState
|
||||||
|
import dev.msfjarvis.claw.api.model.LobstersPost
|
||||||
|
|
||||||
|
class LobstersPagingSource(
|
||||||
|
private val getMorePosts: suspend (Int) -> List<LobstersPost>,
|
||||||
|
) : PagingSource<Int, LobstersPost>() {
|
||||||
|
|
||||||
|
override suspend fun load(params: LoadParams<Int>): LoadResult<Int, LobstersPost> {
|
||||||
|
return try {
|
||||||
|
val page = params.key ?: 1
|
||||||
|
val posts = getMorePosts(page)
|
||||||
|
|
||||||
|
LoadResult.Page(
|
||||||
|
data = posts,
|
||||||
|
prevKey = if (page == 1) null else page - 1,
|
||||||
|
nextKey = page.plus(1)
|
||||||
|
)
|
||||||
|
} catch (e: Exception) {
|
||||||
|
LoadResult.Error(e)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun getRefreshKey(state: PagingState<Int, LobstersPost>): Int {
|
||||||
|
return state.pages.size + 1
|
||||||
|
}
|
||||||
|
}
|
Loading…
Add table
Add a link
Reference in a new issue