From 9ad5b2e564c99f4f66b3b28f141bf9a5c80721cc Mon Sep 17 00:00:00 2001 From: Matt Ramotar Date: Sat, 16 Mar 2024 13:25:10 -0400 Subject: [PATCH] Implement RealPager (#626) Signed-off-by: mramotar --- .../paging/core/impl/RealPager.kt | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 paging/core/src/commonMain/kotlin/org/mobilenativefoundation/paging/core/impl/RealPager.kt diff --git a/paging/core/src/commonMain/kotlin/org/mobilenativefoundation/paging/core/impl/RealPager.kt b/paging/core/src/commonMain/kotlin/org/mobilenativefoundation/paging/core/impl/RealPager.kt new file mode 100644 index 000000000..b566bbc2f --- /dev/null +++ b/paging/core/src/commonMain/kotlin/org/mobilenativefoundation/paging/core/impl/RealPager.kt @@ -0,0 +1,30 @@ +package org.mobilenativefoundation.paging.core.impl + +import kotlinx.coroutines.flow.StateFlow +import org.mobilenativefoundation.paging.core.Pager +import org.mobilenativefoundation.paging.core.PagingAction +import org.mobilenativefoundation.paging.core.PagingConfig +import org.mobilenativefoundation.paging.core.PagingKey +import org.mobilenativefoundation.paging.core.PagingState + +class RealPager, K : Any, P : Any, D : Any, E : Any, A : Any>( + initialKey: PagingKey, + stateManager: StateManager, + pagingConfigInjector: Injector, + private val dispatcher: Dispatcher, +) : Pager { + + private val pagingConfig = lazy { pagingConfigInjector.inject() } + + init { + if (pagingConfig.value.prefetchDistance > 0) { + dispatcher.dispatch(PagingAction.Load(initialKey)) + } + } + + override val state: StateFlow> = stateManager.state + + override fun dispatch(action: PagingAction.User) { + dispatcher.dispatch(action) + } +}