From e36375dcb1fffa1ed271323b972c02f8ab924caa Mon Sep 17 00:00:00 2001 From: machiav3lli Date: Tue, 1 Feb 2022 02:41:26 +0100 Subject: [PATCH] Update: Replace ProductItem field with function (a first step in refactoring Product) --- .../kotlin/com/looker/droidify/database/Converters.kt | 9 --------- src/main/kotlin/com/looker/droidify/database/DAOs.kt | 7 ++----- .../com/looker/droidify/database/entity/Product.kt | 3 +-- .../kotlin/com/looker/droidify/service/SyncService.kt | 4 ++-- .../com/looker/droidify/ui/adapters/AppListAdapter.kt | 4 ++-- .../com/looker/droidify/ui/compose/ItemRecyclers.kt | 4 ++-- .../com/looker/droidify/ui/fragments/ExploreFragment.kt | 2 +- .../looker/droidify/ui/fragments/InstalledFragment.kt | 4 ++-- .../com/looker/droidify/ui/fragments/LatestFragment.kt | 4 ++-- src/main/kotlin/com/looker/droidify/utility/Utils.kt | 2 +- 10 files changed, 15 insertions(+), 28 deletions(-) diff --git a/src/main/kotlin/com/looker/droidify/database/Converters.kt b/src/main/kotlin/com/looker/droidify/database/Converters.kt index 7b15534b..7430727a 100644 --- a/src/main/kotlin/com/looker/droidify/database/Converters.kt +++ b/src/main/kotlin/com/looker/droidify/database/Converters.kt @@ -1,7 +1,6 @@ package com.looker.droidify.database import androidx.room.TypeConverter -import com.looker.droidify.entity.ProductItem import com.looker.droidify.utility.jsonGenerate import com.looker.droidify.utility.jsonParse @@ -26,12 +25,4 @@ object Converters { @TypeConverter @JvmStatic fun toByteArray(product: com.looker.droidify.entity.Product) = jsonGenerate(product::serialize) - - @TypeConverter - @JvmStatic - fun toProductItem(byteArray: ByteArray) = byteArray.jsonParse { ProductItem.deserialize(it) } - - @TypeConverter - @JvmStatic - fun toByteArray(productItem: ProductItem) = jsonGenerate(productItem::serialize) } \ No newline at end of file diff --git a/src/main/kotlin/com/looker/droidify/database/DAOs.kt b/src/main/kotlin/com/looker/droidify/database/DAOs.kt index a63b24ef..9ef639b0 100644 --- a/src/main/kotlin/com/looker/droidify/database/DAOs.kt +++ b/src/main/kotlin/com/looker/droidify/database/DAOs.kt @@ -106,8 +106,7 @@ interface ProductDao : BaseDao { (COALESCE(lock.${ROW_VERSION_CODE}, -1) NOT IN (0, product.${ROW_VERSION_CODE}) AND product.${ROW_COMPATIBLE} != 0 AND product.${ROW_VERSION_CODE} > COALESCE(installed.${ROW_VERSION_CODE}, 0xffffffff) AND $signatureMatches) - AS ${ROW_CAN_UPDATE}, product.${ROW_COMPATIBLE}, - product.${ROW_DATA_ITEM},""" + AS ${ROW_CAN_UPDATE}, product.${ROW_COMPATIBLE},""" if (searchQuery.isNotEmpty()) { builder += """(((product.${ROW_NAME} LIKE ? OR @@ -195,8 +194,7 @@ interface ProductDao : BaseDao { (COALESCE(lock.${ROW_VERSION_CODE}, -1) NOT IN (0, product.${ROW_VERSION_CODE}) AND product.${ROW_COMPATIBLE} != 0 AND product.${ROW_VERSION_CODE} > COALESCE(installed.${ROW_VERSION_CODE}, 0xffffffff) AND $signatureMatches) - AS ${ROW_CAN_UPDATE}, product.${ROW_COMPATIBLE}, - product.${ROW_DATA_ITEM},""" + AS ${ROW_CAN_UPDATE}, product.${ROW_COMPATIBLE},""" if (searchQuery.isNotEmpty()) { builder += """(((product.${ROW_NAME} LIKE ? OR @@ -332,7 +330,6 @@ interface ProductTempDao : BaseDao { this.signatures = signatures compatible = if (it.compatible) 1 else 0 data = it - data_item = it.item() } }) it.categories.forEach { category -> diff --git a/src/main/kotlin/com/looker/droidify/database/entity/Product.kt b/src/main/kotlin/com/looker/droidify/database/entity/Product.kt index 8f86732a..04628f74 100644 --- a/src/main/kotlin/com/looker/droidify/database/entity/Product.kt +++ b/src/main/kotlin/com/looker/droidify/database/entity/Product.kt @@ -21,8 +21,7 @@ open class Product { @ColumnInfo(typeAffinity = ColumnInfo.BLOB) var data: com.looker.droidify.entity.Product? = null - @ColumnInfo(typeAffinity = ColumnInfo.BLOB) - var data_item: ProductItem? = null + fun item(): ProductItem? = data?.item() } @Entity(tableName = "temporary_product") diff --git a/src/main/kotlin/com/looker/droidify/service/SyncService.kt b/src/main/kotlin/com/looker/droidify/service/SyncService.kt index 6aac0ab0..6b6c5fe6 100644 --- a/src/main/kotlin/com/looker/droidify/service/SyncService.kt +++ b/src/main/kotlin/com/looker/droidify/service/SyncService.kt @@ -27,7 +27,7 @@ import com.looker.droidify.utility.extension.android.asSequence import com.looker.droidify.utility.extension.android.notificationManager import com.looker.droidify.utility.extension.resources.getColorFromAttr import com.looker.droidify.utility.extension.text.formatSize -import com.looker.droidify.utility.getProductItem +import com.looker.droidify.utility.getProduct import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers import io.reactivex.rxjava3.disposables.Disposable import io.reactivex.rxjava3.schedulers.Schedulers @@ -398,7 +398,7 @@ class SyncService : ConnectionService() { signal = it ) .use { - it.asSequence().map { it.getProductItem() } + it.asSequence().map { it.getProduct().item() } .toList() } } diff --git a/src/main/kotlin/com/looker/droidify/ui/adapters/AppListAdapter.kt b/src/main/kotlin/com/looker/droidify/ui/adapters/AppListAdapter.kt index 52780d3b..846624a5 100644 --- a/src/main/kotlin/com/looker/droidify/ui/adapters/AppListAdapter.kt +++ b/src/main/kotlin/com/looker/droidify/ui/adapters/AppListAdapter.kt @@ -22,7 +22,7 @@ import com.looker.droidify.network.CoilDownloader import com.looker.droidify.utility.Utils import com.looker.droidify.utility.extension.resources.* import com.looker.droidify.utility.extension.text.nullIfEmpty -import com.looker.droidify.utility.getProductItem +import com.looker.droidify.utility.getProduct import com.looker.droidify.widget.CursorRecyclerAdapter class AppListAdapter(private val onClick: (ProductItem) -> Unit) : @@ -113,7 +113,7 @@ class AppListAdapter(private val onClick: (ProductItem) -> Unit) : } private fun getProductItem(position: Int): ProductItem { - return moveTo(position).getProductItem() + return moveTo(position).getProduct().item() } override fun onCreateViewHolder( diff --git a/src/main/kotlin/com/looker/droidify/ui/compose/ItemRecyclers.kt b/src/main/kotlin/com/looker/droidify/ui/compose/ItemRecyclers.kt index 10a769e2..e4f24765 100644 --- a/src/main/kotlin/com/looker/droidify/ui/compose/ItemRecyclers.kt +++ b/src/main/kotlin/com/looker/droidify/ui/compose/ItemRecyclers.kt @@ -15,7 +15,7 @@ fun ProductsVerticalRecycler(productsList: List) { verticalArrangement = spacedBy(2.dp) ) { items(productsList) { product: Product -> - product.data_item?.let { item -> + product.item()?.let { item -> ProductRow(item.name, item.version, item.summary, onUserClick = { Log.d(this.toString(), "You clicked $it") }) @@ -30,7 +30,7 @@ fun ProductsHorizontalRecycler(productsList: List) { horizontalArrangement = spacedBy(2.dp) ) { items(productsList) { product: Product -> - product.data_item?.let { item -> + product.item()?.let { item -> ProductColumn(item.name, item.version, onUserClick = { Log.d(this.toString(), "You clicked $it") }) diff --git a/src/main/kotlin/com/looker/droidify/ui/fragments/ExploreFragment.kt b/src/main/kotlin/com/looker/droidify/ui/fragments/ExploreFragment.kt index 0d7a45e5..b5f318e6 100644 --- a/src/main/kotlin/com/looker/droidify/ui/fragments/ExploreFragment.kt +++ b/src/main/kotlin/com/looker/droidify/ui/fragments/ExploreFragment.kt @@ -52,7 +52,7 @@ class ExploreFragment : MainNavFragmentX() { override fun setupAdapters() { appsItemAdapter = PagedModelAdapter(PRODUCT_ASYNC_DIFFER_CONFIG) { - it.data_item?.let { item -> VAppItem(item, repositories[it.repository_id]) } + it.item()?.let { item -> VAppItem(item, repositories[it.repository_id]) } } appsFastAdapter = FastAdapter.with(appsItemAdapter) appsFastAdapter?.setHasStableIds(true) diff --git a/src/main/kotlin/com/looker/droidify/ui/fragments/InstalledFragment.kt b/src/main/kotlin/com/looker/droidify/ui/fragments/InstalledFragment.kt index b050f74c..37487e2f 100644 --- a/src/main/kotlin/com/looker/droidify/ui/fragments/InstalledFragment.kt +++ b/src/main/kotlin/com/looker/droidify/ui/fragments/InstalledFragment.kt @@ -55,11 +55,11 @@ class InstalledFragment : MainNavFragmentX() { override fun setupAdapters() { installedItemAdapter = PagedModelAdapter(PRODUCT_ASYNC_DIFFER_CONFIG) { - it.data_item?.let { item -> VAppItem(item, repositories[it.repository_id]) } + it.item()?.let { item -> VAppItem(item, repositories[it.repository_id]) } } updatedItemAdapter = PagedModelAdapter(PRODUCT_ASYNC_DIFFER_CONFIG) { // TODO filter for only updated apps and add placeholder - it.data_item?.let { item -> HAppItem(item, repositories[it.repository_id]) } + it.item()?.let { item -> HAppItem(item, repositories[it.repository_id]) } } installedFastAdapter = FastAdapter.with(installedItemAdapter) installedFastAdapter?.setHasStableIds(true) diff --git a/src/main/kotlin/com/looker/droidify/ui/fragments/LatestFragment.kt b/src/main/kotlin/com/looker/droidify/ui/fragments/LatestFragment.kt index 2bd328c0..841343f7 100644 --- a/src/main/kotlin/com/looker/droidify/ui/fragments/LatestFragment.kt +++ b/src/main/kotlin/com/looker/droidify/ui/fragments/LatestFragment.kt @@ -56,11 +56,11 @@ class LatestFragment : MainNavFragmentX() { override fun setupAdapters() { updatedItemAdapter = PagedModelAdapter(PRODUCT_ASYNC_DIFFER_CONFIG) { - it.data_item?.let { item -> VAppItem(item, repositories[it.repository_id]) } + it.item()?.let { item -> VAppItem(item, repositories[it.repository_id]) } } newItemAdapter = PagedModelAdapter(PRODUCT_ASYNC_DIFFER_CONFIG) { // TODO filter for only new apps and add placeholder - it.data_item?.let { item -> HAppItem(item, repositories[it.repository_id]) } + it.item()?.let { item -> HAppItem(item, repositories[it.repository_id]) } } updatedFastAdapter = FastAdapter.with(updatedItemAdapter) updatedFastAdapter?.setHasStableIds(true) diff --git a/src/main/kotlin/com/looker/droidify/utility/Utils.kt b/src/main/kotlin/com/looker/droidify/utility/Utils.kt index 330754e9..f0710c5d 100644 --- a/src/main/kotlin/com/looker/droidify/utility/Utils.kt +++ b/src/main/kotlin/com/looker/droidify/utility/Utils.kt @@ -240,6 +240,6 @@ val PRODUCT_ASYNC_DIFFER_CONFIG oldItem: com.looker.droidify.database.entity.Product, newItem: com.looker.droidify.database.entity.Product ): Boolean { - return oldItem.data_item == newItem.data_item + return oldItem.item() == newItem.item() } }).build() \ No newline at end of file