Add: Repositories, categories filters & ascending sort arguments to Request & ProductDAO interfaces

This commit is contained in:
machiav3lli 2022-09-26 00:31:24 +02:00
parent ccd72d3944
commit eca0dd3ea4
4 changed files with 72 additions and 12 deletions

View File

@ -81,7 +81,10 @@ interface ProductDao : BaseDao<Product> {
updates = request.updates, updates = request.updates,
searchQuery = request.searchQuery, searchQuery = request.searchQuery,
section = request.section, section = request.section,
filteredOutRepos = request.filteredOutRepos,
filteredOutCategories = request.filteredOutCategories,
order = request.order, order = request.order,
ascending = request.ascending,
numberOfItems = request.numberOfItems, numberOfItems = request.numberOfItems,
updateCategory = request.updateCategory updateCategory = request.updateCategory
) )
@ -90,7 +93,9 @@ interface ProductDao : BaseDao<Product> {
@Transaction @Transaction
fun queryObject( fun queryObject(
installed: Boolean, updates: Boolean, searchQuery: String, installed: Boolean, updates: Boolean, searchQuery: String,
section: Section, order: Order, numberOfItems: Int = 0, section: Section, filteredOutRepos: Set<String> = emptySet(),
filteredOutCategories: Set<String> = emptySet(), order: Order,
ascending: Boolean, numberOfItems: Int = 0,
updateCategory: UpdateCategory = UpdateCategory.ALL updateCategory: UpdateCategory = UpdateCategory.ALL
): List<Product> = queryObject( ): List<Product> = queryObject(
buildProductQuery( buildProductQuery(
@ -98,7 +103,10 @@ interface ProductDao : BaseDao<Product> {
updates = updates, updates = updates,
searchQuery = searchQuery, searchQuery = searchQuery,
section = section, section = section,
filteredOutRepos = filteredOutRepos,
filteredOutCategories = filteredOutCategories,
order = order, order = order,
ascending = ascending,
numberOfItems = numberOfItems, numberOfItems = numberOfItems,
updateCategory = updateCategory updateCategory = updateCategory
) )
@ -113,7 +121,10 @@ interface ProductDao : BaseDao<Product> {
updates = request.updates, updates = request.updates,
searchQuery = request.searchQuery, searchQuery = request.searchQuery,
section = request.section, section = request.section,
filteredOutRepos = request.filteredOutRepos,
filteredOutCategories = request.filteredOutCategories,
order = request.order, order = request.order,
ascending = request.ascending,
numberOfItems = request.numberOfItems, numberOfItems = request.numberOfItems,
updateCategory = request.updateCategory updateCategory = request.updateCategory
) )

View File

@ -19,6 +19,7 @@ import androidx.compose.material.icons.rounded.Share
import androidx.compose.material.icons.rounded.Tune import androidx.compose.material.icons.rounded.Tune
import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.graphics.vector.ImageVector
import com.machiav3lli.fdroid.R import com.machiav3lli.fdroid.R
import com.machiav3lli.fdroid.content.Preferences
import kotlinx.serialization.Serializable import kotlinx.serialization.Serializable
import kotlinx.serialization.decodeFromString import kotlinx.serialization.decodeFromString
import kotlinx.serialization.encodeToString import kotlinx.serialization.encodeToString
@ -168,14 +169,17 @@ sealed class Request {
internal abstract val installed: Boolean internal abstract val installed: Boolean
internal abstract val updates: Boolean internal abstract val updates: Boolean
internal abstract val searchQuery: String internal abstract val searchQuery: String
internal abstract val filteredOutRepos: Set<String>
internal abstract val filteredOutCategories: Set<String>
internal abstract val section: Section internal abstract val section: Section
internal abstract val order: Order internal abstract val order: Order
internal abstract val ascending: Boolean
internal abstract val updateCategory: UpdateCategory internal abstract val updateCategory: UpdateCategory
internal open val numberOfItems: Int = 0 internal open val numberOfItems: Int = 0
data class ProductsAll( data class ProductsAll(
override val searchQuery: String, override val section: Section, override val searchQuery: String,
override val order: Order, override val section: Section,
) : Request() { ) : Request() {
override val id: Int override val id: Int
get() = 1 get() = 1
@ -185,11 +189,19 @@ sealed class Request {
get() = false get() = false
override val updateCategory: UpdateCategory override val updateCategory: UpdateCategory
get() = UpdateCategory.ALL get() = UpdateCategory.ALL
override val order: Order
get() = Preferences[Preferences.Key.SortOrderExplore].order
override val filteredOutRepos: Set<String>
get() = Preferences[Preferences.Key.ReposFilterExplore]
override val filteredOutCategories: Set<String>
get() = Preferences[Preferences.Key.CategoriesFilterExplore]
override val ascending: Boolean
get() = Preferences[Preferences.Key.SortOrderAscendingExplore]
} }
data class ProductsInstalled( data class ProductsInstalled(
override val searchQuery: String, override val section: Section, override val searchQuery: String,
override val order: Order, override val section: Section,
) : Request() { ) : Request() {
override val id: Int override val id: Int
get() = 2 get() = 2
@ -199,11 +211,19 @@ sealed class Request {
get() = false get() = false
override val updateCategory: UpdateCategory override val updateCategory: UpdateCategory
get() = UpdateCategory.ALL get() = UpdateCategory.ALL
override val order: Order
get() = Preferences[Preferences.Key.SortOrderInstalled].order
override val filteredOutRepos: Set<String>
get() = Preferences[Preferences.Key.ReposFilterInstalled]
override val filteredOutCategories: Set<String>
get() = Preferences[Preferences.Key.CategoriesFilterInstalled]
override val ascending: Boolean
get() = Preferences[Preferences.Key.SortOrderAscendingInstalled]
} }
data class ProductsUpdates( data class ProductsUpdates(
override val searchQuery: String, override val section: Section, override val searchQuery: String,
override val order: Order, override val section: Section,
) : Request() { ) : Request() {
override val id: Int override val id: Int
get() = 3 get() = 3
@ -213,11 +233,18 @@ sealed class Request {
get() = true get() = true
override val updateCategory: UpdateCategory override val updateCategory: UpdateCategory
get() = UpdateCategory.ALL get() = UpdateCategory.ALL
override val filteredOutRepos: Set<String>
get() = emptySet()
override val filteredOutCategories: Set<String>
get() = emptySet()
override val order: Order
get() = Order.NAME
override val ascending: Boolean
get() = true
} }
data class ProductsUpdated( data class ProductsUpdated(
override val searchQuery: String, override val section: Section, override val searchQuery: String, override val section: Section,
override val order: Order, override val numberOfItems: Int,
) : Request() { ) : Request() {
override val id: Int override val id: Int
get() = 4 get() = 4
@ -227,11 +254,21 @@ sealed class Request {
get() = false get() = false
override val updateCategory: UpdateCategory override val updateCategory: UpdateCategory
get() = UpdateCategory.UPDATED get() = UpdateCategory.UPDATED
override val filteredOutRepos: Set<String>
get() = Preferences[Preferences.Key.ReposFilterLatest]
override val filteredOutCategories: Set<String>
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( data class ProductsNew(
override val searchQuery: String, override val section: Section, override val searchQuery: String,
override val order: Order, override val numberOfItems: Int, override val section: Section,
) : Request() { ) : Request() {
override val id: Int override val id: Int
get() = 5 get() = 5
@ -241,6 +278,16 @@ sealed class Request {
get() = false get() = false
override val updateCategory: UpdateCategory override val updateCategory: UpdateCategory
get() = UpdateCategory.NEW get() = UpdateCategory.NEW
override val filteredOutRepos: Set<String>
get() = emptySet()
override val filteredOutCategories: Set<String>
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]
} }
} }

View File

@ -48,7 +48,8 @@ class PackageChangedReceiver : BroadcastReceiver() {
updates = true, updates = true,
searchQuery = "", searchQuery = "",
section = Section.All, section = Section.All,
order = Order.NAME order = Order.NAME,
ascending = true,
).map { it.toItem() } ).map { it.toItem() }
) )
} }

View File

@ -384,7 +384,8 @@ class SyncService : ConnectionService<SyncService.Binder>() {
updates = true, updates = true,
searchQuery = "", searchQuery = "",
section = Section.All, section = Section.All,
order = Order.NAME order = Order.NAME,
ascending = true,
).map { it.toItem() } ).map { it.toItem() }
} }
.subscribeOn(Schedulers.io()) .subscribeOn(Schedulers.io())