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,
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<Product> {
@Transaction
fun queryObject(
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
): List<Product> = queryObject(
buildProductQuery(
@ -98,7 +103,10 @@ interface ProductDao : BaseDao<Product> {
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<Product> {
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
)

View File

@ -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<String>
internal abstract val filteredOutCategories: Set<String>
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<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(
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<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(
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<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(
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<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(
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<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,
searchQuery = "",
section = Section.All,
order = Order.NAME
order = Order.NAME,
ascending = true,
).map { it.toItem() }
)
}

View File

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