From eca0dd3ea479c5ca6f20e4d0ea0c22f9d48c3102 Mon Sep 17 00:00:00 2001 From: machiav3lli Date: Mon, 26 Sep 2022 00:31:24 +0200 Subject: [PATCH] Add: Repositories, categories filters & ascending sort arguments to Request & ProductDAO interfaces --- .../fdroid/database/dao/ProductDao.kt | 13 +++- .../machiav3lli/fdroid/entity/SubEntities.kt | 65 ++++++++++++++++--- .../fdroid/service/PackageChangedReceiver.kt | 3 +- .../machiav3lli/fdroid/service/SyncService.kt | 3 +- 4 files changed, 72 insertions(+), 12 deletions(-) diff --git a/src/main/kotlin/com/machiav3lli/fdroid/database/dao/ProductDao.kt b/src/main/kotlin/com/machiav3lli/fdroid/database/dao/ProductDao.kt index 5638b606..60a218f3 100644 --- a/src/main/kotlin/com/machiav3lli/fdroid/database/dao/ProductDao.kt +++ b/src/main/kotlin/com/machiav3lli/fdroid/database/dao/ProductDao.kt @@ -81,7 +81,10 @@ interface ProductDao : BaseDao { updates = request.updates, searchQuery = request.searchQuery, section = request.section, + filteredOutRepos = request.filteredOutRepos, + filteredOutCategories = request.filteredOutCategories, order = request.order, + ascending = request.ascending, numberOfItems = request.numberOfItems, updateCategory = request.updateCategory ) @@ -90,7 +93,9 @@ interface ProductDao : BaseDao { @Transaction fun queryObject( installed: Boolean, updates: Boolean, searchQuery: String, - section: Section, order: Order, numberOfItems: Int = 0, + section: Section, filteredOutRepos: Set = emptySet(), + filteredOutCategories: Set = emptySet(), order: Order, + ascending: Boolean, numberOfItems: Int = 0, updateCategory: UpdateCategory = UpdateCategory.ALL ): List = queryObject( buildProductQuery( @@ -98,7 +103,10 @@ interface ProductDao : BaseDao { updates = updates, searchQuery = searchQuery, section = section, + filteredOutRepos = filteredOutRepos, + filteredOutCategories = filteredOutCategories, order = order, + ascending = ascending, numberOfItems = numberOfItems, updateCategory = updateCategory ) @@ -113,7 +121,10 @@ interface ProductDao : BaseDao { updates = request.updates, searchQuery = request.searchQuery, section = request.section, + filteredOutRepos = request.filteredOutRepos, + filteredOutCategories = request.filteredOutCategories, order = request.order, + ascending = request.ascending, numberOfItems = request.numberOfItems, updateCategory = request.updateCategory ) diff --git a/src/main/kotlin/com/machiav3lli/fdroid/entity/SubEntities.kt b/src/main/kotlin/com/machiav3lli/fdroid/entity/SubEntities.kt index 61205c19..cd4850dc 100644 --- a/src/main/kotlin/com/machiav3lli/fdroid/entity/SubEntities.kt +++ b/src/main/kotlin/com/machiav3lli/fdroid/entity/SubEntities.kt @@ -19,6 +19,7 @@ import androidx.compose.material.icons.rounded.Share import androidx.compose.material.icons.rounded.Tune import androidx.compose.ui.graphics.vector.ImageVector import com.machiav3lli.fdroid.R +import com.machiav3lli.fdroid.content.Preferences import kotlinx.serialization.Serializable import kotlinx.serialization.decodeFromString import kotlinx.serialization.encodeToString @@ -168,14 +169,17 @@ sealed class Request { internal abstract val installed: Boolean internal abstract val updates: Boolean internal abstract val searchQuery: String + internal abstract val filteredOutRepos: Set + internal abstract val filteredOutCategories: Set internal abstract val section: Section internal abstract val order: Order + internal abstract val ascending: Boolean internal abstract val updateCategory: UpdateCategory internal open val numberOfItems: Int = 0 data class ProductsAll( - override val searchQuery: String, override val section: Section, - override val order: Order, + override val searchQuery: String, + override val section: Section, ) : Request() { override val id: Int get() = 1 @@ -185,11 +189,19 @@ sealed class Request { get() = false override val updateCategory: UpdateCategory get() = UpdateCategory.ALL + override val order: Order + get() = Preferences[Preferences.Key.SortOrderExplore].order + override val filteredOutRepos: Set + get() = Preferences[Preferences.Key.ReposFilterExplore] + override val filteredOutCategories: Set + get() = Preferences[Preferences.Key.CategoriesFilterExplore] + override val ascending: Boolean + get() = Preferences[Preferences.Key.SortOrderAscendingExplore] } data class ProductsInstalled( - override val searchQuery: String, override val section: Section, - override val order: Order, + override val searchQuery: String, + override val section: Section, ) : Request() { override val id: Int get() = 2 @@ -199,11 +211,19 @@ sealed class Request { get() = false override val updateCategory: UpdateCategory get() = UpdateCategory.ALL + override val order: Order + get() = Preferences[Preferences.Key.SortOrderInstalled].order + override val filteredOutRepos: Set + get() = Preferences[Preferences.Key.ReposFilterInstalled] + override val filteredOutCategories: Set + get() = Preferences[Preferences.Key.CategoriesFilterInstalled] + override val ascending: Boolean + get() = Preferences[Preferences.Key.SortOrderAscendingInstalled] } data class ProductsUpdates( - override val searchQuery: String, override val section: Section, - override val order: Order, + override val searchQuery: String, + override val section: Section, ) : Request() { override val id: Int get() = 3 @@ -213,11 +233,18 @@ sealed class Request { get() = true override val updateCategory: UpdateCategory get() = UpdateCategory.ALL + override val filteredOutRepos: Set + get() = emptySet() + override val filteredOutCategories: Set + get() = emptySet() + override val order: Order + get() = Order.NAME + override val ascending: Boolean + get() = true } data class ProductsUpdated( override val searchQuery: String, override val section: Section, - override val order: Order, override val numberOfItems: Int, ) : Request() { override val id: Int get() = 4 @@ -227,11 +254,21 @@ sealed class Request { get() = false override val updateCategory: UpdateCategory get() = UpdateCategory.UPDATED + override val filteredOutRepos: Set + get() = Preferences[Preferences.Key.ReposFilterLatest] + override val filteredOutCategories: Set + get() = Preferences[Preferences.Key.CategoriesFilterLatest] + override val order: Order + get() = Preferences[Preferences.Key.SortOrderLatest].order + override val ascending: Boolean + get() = Preferences[Preferences.Key.SortOrderAscendingLatest] + override val numberOfItems: Int + get() = Preferences[Preferences.Key.UpdatedApps] } data class ProductsNew( - override val searchQuery: String, override val section: Section, - override val order: Order, override val numberOfItems: Int, + override val searchQuery: String, + override val section: Section, ) : Request() { override val id: Int get() = 5 @@ -241,6 +278,16 @@ sealed class Request { get() = false override val updateCategory: UpdateCategory get() = UpdateCategory.NEW + override val filteredOutRepos: Set + get() = emptySet() + override val filteredOutCategories: Set + get() = emptySet() + override val order: Order + get() = Order.DATE_ADDED + override val ascending: Boolean + get() = false + override val numberOfItems: Int + get() = Preferences[Preferences.Key.NewApps] } } diff --git a/src/main/kotlin/com/machiav3lli/fdroid/service/PackageChangedReceiver.kt b/src/main/kotlin/com/machiav3lli/fdroid/service/PackageChangedReceiver.kt index 1e5fa98a..be151f6a 100644 --- a/src/main/kotlin/com/machiav3lli/fdroid/service/PackageChangedReceiver.kt +++ b/src/main/kotlin/com/machiav3lli/fdroid/service/PackageChangedReceiver.kt @@ -48,7 +48,8 @@ class PackageChangedReceiver : BroadcastReceiver() { updates = true, searchQuery = "", section = Section.All, - order = Order.NAME + order = Order.NAME, + ascending = true, ).map { it.toItem() } ) } diff --git a/src/main/kotlin/com/machiav3lli/fdroid/service/SyncService.kt b/src/main/kotlin/com/machiav3lli/fdroid/service/SyncService.kt index e308e173..2c8e14a7 100644 --- a/src/main/kotlin/com/machiav3lli/fdroid/service/SyncService.kt +++ b/src/main/kotlin/com/machiav3lli/fdroid/service/SyncService.kt @@ -384,7 +384,8 @@ class SyncService : ConnectionService() { updates = true, searchQuery = "", section = Section.All, - order = Order.NAME + order = Order.NAME, + ascending = true, ).map { it.toItem() } } .subscribeOn(Schedulers.io())