diff --git a/shared/src/androidMain/kotlin/dev/dimension/flare/data/datasource/microblog/Paging.android.kt b/shared/src/androidMain/kotlin/dev/dimension/flare/data/datasource/microblog/Paging.android.kt new file mode 100644 index 000000000..a7f5d7a42 --- /dev/null +++ b/shared/src/androidMain/kotlin/dev/dimension/flare/data/datasource/microblog/Paging.android.kt @@ -0,0 +1,8 @@ +package dev.dimension.flare.data.datasource.microblog + +import androidx.paging.PagingConfig + +internal actual val pagingConfig: PagingConfig = + PagingConfig( + pageSize = 20, + ) diff --git a/shared/src/appleMain/kotlin/dev/dimension/flare/data/datasource/microblog/Paging.apple.kt b/shared/src/appleMain/kotlin/dev/dimension/flare/data/datasource/microblog/Paging.apple.kt new file mode 100644 index 000000000..984b6beef --- /dev/null +++ b/shared/src/appleMain/kotlin/dev/dimension/flare/data/datasource/microblog/Paging.apple.kt @@ -0,0 +1,10 @@ +package dev.dimension.flare.data.datasource.microblog + +import androidx.paging.PagingConfig + +internal actual val pagingConfig: PagingConfig = + PagingConfig( + pageSize = 20, + initialLoadSize = 20, + enablePlaceholders = false, + ) diff --git a/shared/src/commonMain/kotlin/dev/dimension/flare/data/datasource/microblog/Paging.kt b/shared/src/commonMain/kotlin/dev/dimension/flare/data/datasource/microblog/Paging.kt index 83cf0e512..e43a77cdf 100644 --- a/shared/src/commonMain/kotlin/dev/dimension/flare/data/datasource/microblog/Paging.kt +++ b/shared/src/commonMain/kotlin/dev/dimension/flare/data/datasource/microblog/Paging.kt @@ -30,6 +30,8 @@ import kotlinx.coroutines.launch import kotlinx.coroutines.withContext import kotlin.coroutines.CoroutineContext +internal expect val pagingConfig: PagingConfig + @OptIn(ExperimentalPagingApi::class) internal fun timelinePager( pageSize: Int, @@ -41,7 +43,7 @@ internal fun timelinePager( ): Flow> { val pagerFlow = Pager( - config = PagingConfig(pageSize = pageSize), + config = pagingConfig, remoteMediator = mediator, pagingSourceFactory = { database.pagingTimelineDao().getPagingSource( @@ -189,7 +191,7 @@ internal fun memoryPager( mediator: BaseRemoteMediator, ): Flow> = Pager( - config = PagingConfig(pageSize = pageSize), + config = pagingConfig, remoteMediator = mediator, pagingSourceFactory = { MemoryPagingSource( diff --git a/shared/src/commonMain/kotlin/dev/dimension/flare/data/datasource/xqt/XQTDataSource.kt b/shared/src/commonMain/kotlin/dev/dimension/flare/data/datasource/xqt/XQTDataSource.kt index 12a1450fe..99f0d6506 100644 --- a/shared/src/commonMain/kotlin/dev/dimension/flare/data/datasource/xqt/XQTDataSource.kt +++ b/shared/src/commonMain/kotlin/dev/dimension/flare/data/datasource/xqt/XQTDataSource.kt @@ -3,7 +3,6 @@ package dev.dimension.flare.data.datasource.xqt import androidx.paging.ExperimentalPagingApi import androidx.paging.LoadType import androidx.paging.Pager -import androidx.paging.PagingConfig import androidx.paging.PagingData import androidx.paging.PagingState import androidx.paging.cachedIn @@ -40,6 +39,7 @@ import dev.dimension.flare.data.datasource.microblog.ProfileTab import dev.dimension.flare.data.datasource.microblog.StatusEvent import dev.dimension.flare.data.datasource.microblog.createSendingDirectMessage import dev.dimension.flare.data.datasource.microblog.memoryPager +import dev.dimension.flare.data.datasource.microblog.pagingConfig import dev.dimension.flare.data.datasource.microblog.relationKeyWithUserKey import dev.dimension.flare.data.datasource.microblog.timelinePager import dev.dimension.flare.data.network.xqt.XQTService @@ -192,7 +192,7 @@ internal class XQTDataSource( ): Flow> { if (type == NotificationFilter.All) { return Pager( - config = PagingConfig(pageSize = pageSize), + config = pagingConfig, ) { NotificationPagingSource( locale = "en", @@ -574,7 +574,7 @@ internal class XQTDataSource( pageSize: Int, ): Flow> = Pager( - config = PagingConfig(pageSize = pageSize), + config = pagingConfig, ) { SearchUserPagingSource( service = service, @@ -585,7 +585,7 @@ internal class XQTDataSource( override fun discoverUsers(pageSize: Int): Flow> = Pager( - config = PagingConfig(pageSize = pageSize), + config = pagingConfig, ) { TrendsUserPagingSource( service, @@ -600,7 +600,7 @@ internal class XQTDataSource( override fun discoverHashtags(pageSize: Int): Flow> = Pager( - config = PagingConfig(pageSize = pageSize), + config = pagingConfig, ) { TrendHashtagPagingSource( service, @@ -1067,7 +1067,7 @@ internal class XQTDataSource( pageSize: Int, ): Flow> = Pager( - config = PagingConfig(pageSize = pageSize), + config = pagingConfig, ) { FollowingPagingSource( service = service, @@ -1082,7 +1082,7 @@ internal class XQTDataSource( pageSize: Int, ): Flow> = Pager( - config = PagingConfig(pageSize = pageSize), + config = pagingConfig, ) { FansPagingSource( service = service, @@ -1486,7 +1486,7 @@ internal class XQTDataSource( override fun directMessageList(scope: CoroutineScope): Flow> = Pager( - config = PagingConfig(pageSize = 20), + config = pagingConfig, remoteMediator = DMListRemoteMediator( service = service, @@ -1510,7 +1510,7 @@ internal class XQTDataSource( scope: CoroutineScope, ): Flow> = Pager( - config = PagingConfig(pageSize = 20), + config = pagingConfig, remoteMediator = DMConversationRemoteMediator( service = service, diff --git a/shared/src/commonMain/kotlin/dev/dimension/flare/ui/presenter/home/TimelinePresenter.kt b/shared/src/commonMain/kotlin/dev/dimension/flare/ui/presenter/home/TimelinePresenter.kt index 0635801f2..fa215c5bd 100644 --- a/shared/src/commonMain/kotlin/dev/dimension/flare/ui/presenter/home/TimelinePresenter.kt +++ b/shared/src/commonMain/kotlin/dev/dimension/flare/ui/presenter/home/TimelinePresenter.kt @@ -8,7 +8,6 @@ import androidx.paging.ExperimentalPagingApi import androidx.paging.LoadState import androidx.paging.LoadStates import androidx.paging.Pager -import androidx.paging.PagingConfig import androidx.paging.PagingData import androidx.paging.cachedIn import androidx.paging.compose.collectAsLazyPagingItems @@ -24,6 +23,7 @@ import dev.dimension.flare.common.onSuccess import dev.dimension.flare.common.toPagingState import dev.dimension.flare.data.database.cache.CacheDatabase import dev.dimension.flare.data.datasource.microblog.contains +import dev.dimension.flare.data.datasource.microblog.pagingConfig import dev.dimension.flare.data.repository.AccountRepository import dev.dimension.flare.data.repository.LocalFilterRepository import dev.dimension.flare.model.AccountType @@ -107,7 +107,7 @@ public abstract class TimelinePresenter : ): Flow> { val pagerFlow = Pager( - config = PagingConfig(pageSize = pageSize), + config = pagingConfig, remoteMediator = mediator, pagingSourceFactory = { database.pagingTimelineDao().getPagingSource( @@ -143,7 +143,7 @@ public abstract class TimelinePresenter : pageSize: Int = 20, ): Flow> = Pager( - config = PagingConfig(pageSize = pageSize), + config = pagingConfig, pagingSourceFactory = { pagingSource }, diff --git a/shared/src/commonMain/kotlin/dev/dimension/flare/ui/presenter/login/NodeInfoPresenter.kt b/shared/src/commonMain/kotlin/dev/dimension/flare/ui/presenter/login/NodeInfoPresenter.kt index a7a6dd47c..e4dcb64b3 100644 --- a/shared/src/commonMain/kotlin/dev/dimension/flare/ui/presenter/login/NodeInfoPresenter.kt +++ b/shared/src/commonMain/kotlin/dev/dimension/flare/ui/presenter/login/NodeInfoPresenter.kt @@ -10,13 +10,13 @@ import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.runtime.setValue import androidx.compose.runtime.snapshotFlow import androidx.paging.Pager -import androidx.paging.PagingConfig import androidx.paging.cachedIn import androidx.paging.compose.collectAsLazyPagingItems import androidx.paging.filter import dev.dimension.flare.common.PagingState import dev.dimension.flare.common.toPagingState import dev.dimension.flare.data.datasource.microblog.RecommendInstancePagingSource +import dev.dimension.flare.data.datasource.microblog.pagingConfig import dev.dimension.flare.data.network.nodeinfo.NodeInfoService import dev.dimension.flare.model.PlatformType import dev.dimension.flare.ui.model.UiInstance @@ -44,7 +44,7 @@ public class NodeInfoPresenter : PresenterBase() { remember { combine( Pager( - config = PagingConfig(pageSize = 20), + config = pagingConfig, ) { RecommendInstancePagingSource() }.flow.cachedIn(scope), diff --git a/shared/src/commonMain/kotlin/dev/dimension/flare/ui/presenter/settings/LocalCacheSearchPresenter.kt b/shared/src/commonMain/kotlin/dev/dimension/flare/ui/presenter/settings/LocalCacheSearchPresenter.kt index 3af73e8f7..dd4f95325 100644 --- a/shared/src/commonMain/kotlin/dev/dimension/flare/ui/presenter/settings/LocalCacheSearchPresenter.kt +++ b/shared/src/commonMain/kotlin/dev/dimension/flare/ui/presenter/settings/LocalCacheSearchPresenter.kt @@ -6,7 +6,6 @@ import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.paging.Pager -import androidx.paging.PagingConfig import androidx.paging.compose.collectAsLazyPagingItems import androidx.paging.filter import androidx.paging.map @@ -14,6 +13,7 @@ import dev.dimension.flare.common.PagingState import dev.dimension.flare.common.toPagingState import dev.dimension.flare.data.database.cache.CacheDatabase import dev.dimension.flare.data.datasource.microblog.StatusEvent +import dev.dimension.flare.data.datasource.microblog.pagingConfig import dev.dimension.flare.data.repository.AccountRepository import dev.dimension.flare.model.AccountType import dev.dimension.flare.ui.model.UiState @@ -54,7 +54,7 @@ public class LocalCacheSearchPresenter : UiState.Error(Throwable("Query is empty")) } else { Pager( - config = PagingConfig(pageSize = 20), + config = pagingConfig, ) { database.pagingTimelineDao().searchHistoryPagingSource(query = "%$query%") }.flow.let { @@ -66,7 +66,7 @@ public class LocalCacheSearchPresenter : remember(allAccounts) { allAccounts.map { accounts -> Pager( - config = PagingConfig(pageSize = 20), + config = pagingConfig, ) { database .pagingTimelineDao() @@ -114,7 +114,7 @@ public class LocalCacheSearchPresenter : val userHistory = remember { Pager( - config = PagingConfig(pageSize = 20), + config = pagingConfig, ) { database.userDao().getUserHistory() }.flow.map { @@ -135,7 +135,7 @@ public class LocalCacheSearchPresenter : } else { allAccounts.map { accounts -> Pager( - config = PagingConfig(pageSize = 20), + config = pagingConfig, ) { database.userDao().searchUser(query) }.flow.map { diff --git a/shared/src/jvmMain/kotlin/dev/dimension/flare/data/datasource/microblog/Paging.jvm.kt b/shared/src/jvmMain/kotlin/dev/dimension/flare/data/datasource/microblog/Paging.jvm.kt new file mode 100644 index 000000000..a7f5d7a42 --- /dev/null +++ b/shared/src/jvmMain/kotlin/dev/dimension/flare/data/datasource/microblog/Paging.jvm.kt @@ -0,0 +1,8 @@ +package dev.dimension.flare.data.datasource.microblog + +import androidx.paging.PagingConfig + +internal actual val pagingConfig: PagingConfig = + PagingConfig( + pageSize = 20, + )