From e9acc031870b8a1ea5f88ea330e0989d6d4f003c Mon Sep 17 00:00:00 2001 From: ABDELMAJID ID ALI Date: Tue, 2 May 2023 11:51:17 +0100 Subject: [PATCH] - Add empty extension function to create empty PagingData --- .../com/kuuurt/paging/multiplatform/PagingData.kt | 7 ++++++- .../com/kuuurt/paging/multiplatform/PagingData.kt | 10 ++++++++-- .../kuuurt/paging/multiplatform/sample/MainActivity.kt | 3 +++ 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/paging/src/commonMain/kotlin/com/kuuurt/paging/multiplatform/PagingData.kt b/paging/src/commonMain/kotlin/com/kuuurt/paging/multiplatform/PagingData.kt index b5a37ff..e8f7ae8 100644 --- a/paging/src/commonMain/kotlin/com/kuuurt/paging/multiplatform/PagingData.kt +++ b/paging/src/commonMain/kotlin/com/kuuurt/paging/multiplatform/PagingData.kt @@ -8,7 +8,12 @@ package com.kuuurt.paging.multiplatform * @since 06/11/2020 */ -expect class PagingData +expect class PagingData { + + companion object { + fun empty(): PagingData + } +} expect suspend fun PagingData.filter(predicate: suspend (T) -> Boolean): PagingData diff --git a/paging/src/iosMain/kotlin/com/kuuurt/paging/multiplatform/PagingData.kt b/paging/src/iosMain/kotlin/com/kuuurt/paging/multiplatform/PagingData.kt index 1fffd4a..76fc478 100644 --- a/paging/src/iosMain/kotlin/com/kuuurt/paging/multiplatform/PagingData.kt +++ b/paging/src/iosMain/kotlin/com/kuuurt/paging/multiplatform/PagingData.kt @@ -7,9 +7,15 @@ package com.kuuurt.paging.multiplatform * @since 06/11/2020 */ -actual class PagingData internal constructor(items: List) : List by items +actual class PagingData internal constructor(items: List) : List by items { + actual companion object { + actual fun empty(): PagingData { + return PagingData(emptyList()) + } + } +} -internal fun List.toPagingData(): PagingData = +internal fun List.toPagingData(): PagingData = PagingData(this) actual suspend fun PagingData.filter(predicate: suspend (T) -> Boolean): PagingData { diff --git a/sample/android/src/main/java/com/kuuurt/paging/multiplatform/sample/MainActivity.kt b/sample/android/src/main/java/com/kuuurt/paging/multiplatform/sample/MainActivity.kt index 732d85b..7851989 100644 --- a/sample/android/src/main/java/com/kuuurt/paging/multiplatform/sample/MainActivity.kt +++ b/sample/android/src/main/java/com/kuuurt/paging/multiplatform/sample/MainActivity.kt @@ -4,11 +4,13 @@ import android.os.Bundle import android.util.Log import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.lifecycleScope +import androidx.paging.PagingData import androidx.recyclerview.widget.RecyclerView import com.kuuurt.paging.sample.multiplatform.library.MainViewModel import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.onEach +import kotlinx.coroutines.flow.onEmpty /** * Copyright 2020, Kurt Renzo Acosta, All rights reserved. @@ -41,6 +43,7 @@ class MainActivity : AppCompatActivity(R.layout.activity_main) { .launchIn(lifecycleScope) viewModel.pagingData + .onEmpty { testAdapter.submitData(PagingData.empty()) } .onEach { testAdapter.submitData(it) } .launchIn(lifecycleScope) }