From ab5c26bec4dec314d479294df13e6feced0169c9 Mon Sep 17 00:00:00 2001 From: LooKeR Date: Sun, 16 Jan 2022 18:04:53 +0530 Subject: [PATCH] Add: Paging Ktx Library Add: Resource.kt sealed class for future async loading --- build.gradle | 5 ++++- src/main/kotlin/com/looker/droidify/Resource.kt | 7 +++++++ .../droidify/ui/viewmodels/MainNavFragmentViewModelX.kt | 3 +-- 3 files changed, 12 insertions(+), 3 deletions(-) create mode 100644 src/main/kotlin/com/looker/droidify/Resource.kt diff --git a/build.gradle b/build.gradle index 4ae7e5b1..a9b6ea68 100644 --- a/build.gradle +++ b/build.gradle @@ -53,7 +53,7 @@ android { } composeOptions { - kotlinCompilerExtensionVersion "1.1.0-rc02" + kotlinCompilerExtensionVersion "1.2.0-alpha01" } buildTypes { @@ -177,6 +177,9 @@ dependencies { implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.0' implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.0' + // Paging + implementation 'androidx.paging:paging-runtime-ktx:3.1.0' + // Room implementation 'androidx.room:room-runtime:2.4.1' implementation 'androidx.room:room-ktx:2.4.1' diff --git a/src/main/kotlin/com/looker/droidify/Resource.kt b/src/main/kotlin/com/looker/droidify/Resource.kt new file mode 100644 index 00000000..85d1a133 --- /dev/null +++ b/src/main/kotlin/com/looker/droidify/Resource.kt @@ -0,0 +1,7 @@ +package com.looker.droidify + +sealed class Resource(val data: T? = null, val message: String? = null) { + class Loading(data: T? = null) : Resource(data) + class Success(data: T?) : Resource(data) + class Error(message: String, data: T? = null) : Resource(data, message) +} \ No newline at end of file diff --git a/src/main/kotlin/com/looker/droidify/ui/viewmodels/MainNavFragmentViewModelX.kt b/src/main/kotlin/com/looker/droidify/ui/viewmodels/MainNavFragmentViewModelX.kt index 34f7bafb..98c38575 100644 --- a/src/main/kotlin/com/looker/droidify/ui/viewmodels/MainNavFragmentViewModelX.kt +++ b/src/main/kotlin/com/looker/droidify/ui/viewmodels/MainNavFragmentViewModelX.kt @@ -13,7 +13,6 @@ import com.looker.droidify.database.Product import com.looker.droidify.entity.ProductItem import com.looker.droidify.ui.fragments.Request import com.looker.droidify.ui.fragments.Source -import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.SharingStarted @@ -109,7 +108,7 @@ class MainNavFragmentViewModelX(val db: DatabaseX, source: Source) : ViewModel() } fun fillList(source: Source) { - CoroutineScope(Dispatchers.Default).launch { + viewModelScope.launch(Dispatchers.Default) { // productsList = query(request(source)) } }