mirror of
https://github.com/Aviortheking/Neo-Store.git
synced 2025-04-23 19:32:16 +00:00
Add: Filter updated indicator to VM
This commit is contained in:
parent
499ebd1f4d
commit
7c752a2015
@ -5,13 +5,11 @@ import androidx.lifecycle.MutableLiveData
|
|||||||
import androidx.lifecycle.ViewModel
|
import androidx.lifecycle.ViewModel
|
||||||
import androidx.lifecycle.ViewModelProvider
|
import androidx.lifecycle.ViewModelProvider
|
||||||
import androidx.lifecycle.viewModelScope
|
import androidx.lifecycle.viewModelScope
|
||||||
import com.machiav3lli.fdroid.content.Preferences
|
|
||||||
import com.machiav3lli.fdroid.database.DatabaseX
|
import com.machiav3lli.fdroid.database.DatabaseX
|
||||||
import com.machiav3lli.fdroid.database.entity.Extras
|
import com.machiav3lli.fdroid.database.entity.Extras
|
||||||
import com.machiav3lli.fdroid.database.entity.Installed
|
import com.machiav3lli.fdroid.database.entity.Installed
|
||||||
import com.machiav3lli.fdroid.database.entity.Product
|
import com.machiav3lli.fdroid.database.entity.Product
|
||||||
import com.machiav3lli.fdroid.database.entity.Repository
|
import com.machiav3lli.fdroid.database.entity.Repository
|
||||||
import com.machiav3lli.fdroid.entity.Order
|
|
||||||
import com.machiav3lli.fdroid.entity.Request
|
import com.machiav3lli.fdroid.entity.Request
|
||||||
import com.machiav3lli.fdroid.entity.Section
|
import com.machiav3lli.fdroid.entity.Section
|
||||||
import com.machiav3lli.fdroid.entity.Source
|
import com.machiav3lli.fdroid.entity.Source
|
||||||
@ -27,7 +25,7 @@ class MainNavFragmentViewModelX(
|
|||||||
) : ViewModel() {
|
) : ViewModel() {
|
||||||
// TODO add better sort/filter fields
|
// TODO add better sort/filter fields
|
||||||
|
|
||||||
var order: MutableLiveData<Order> = MutableLiveData(Order.LAST_UPDATE)
|
var updatedFilter: MutableLiveData<Boolean> = MutableLiveData(false)
|
||||||
private set
|
private set
|
||||||
var sections: MutableLiveData<Section> = MutableLiveData(Section.All)
|
var sections: MutableLiveData<Section> = MutableLiveData(Section.All)
|
||||||
private set
|
private set
|
||||||
@ -37,37 +35,28 @@ class MainNavFragmentViewModelX(
|
|||||||
fun request(source: Source): Request {
|
fun request(source: Source): Request {
|
||||||
var mSearchQuery = ""
|
var mSearchQuery = ""
|
||||||
var mSections: Section = Section.All
|
var mSections: Section = Section.All
|
||||||
var mOrder: Order = Order.NAME
|
|
||||||
sections.value?.let { if (source.sections) mSections = it }
|
sections.value?.let { if (source.sections) mSections = it }
|
||||||
order.value?.let { if (source.order) mOrder = it }
|
|
||||||
searchQuery.value?.let { mSearchQuery = it }
|
searchQuery.value?.let { mSearchQuery = it }
|
||||||
return when (source) {
|
return when (source) {
|
||||||
Source.AVAILABLE -> Request.ProductsAll(
|
Source.AVAILABLE -> Request.ProductsAll(
|
||||||
mSearchQuery,
|
mSearchQuery,
|
||||||
mSections,
|
mSections
|
||||||
mOrder
|
|
||||||
)
|
)
|
||||||
Source.INSTALLED -> Request.ProductsInstalled(
|
Source.INSTALLED -> Request.ProductsInstalled(
|
||||||
mSearchQuery,
|
mSearchQuery,
|
||||||
mSections,
|
mSections
|
||||||
mOrder
|
|
||||||
)
|
)
|
||||||
Source.UPDATES -> Request.ProductsUpdates(
|
Source.UPDATES -> Request.ProductsUpdates(
|
||||||
mSearchQuery,
|
mSearchQuery,
|
||||||
mSections,
|
mSections,
|
||||||
mOrder
|
|
||||||
)
|
)
|
||||||
Source.UPDATED -> Request.ProductsUpdated(
|
Source.UPDATED -> Request.ProductsUpdated(
|
||||||
mSearchQuery,
|
mSearchQuery,
|
||||||
mSections,
|
mSections,
|
||||||
Order.LAST_UPDATE,
|
|
||||||
Preferences[Preferences.Key.UpdatedApps]
|
|
||||||
)
|
)
|
||||||
Source.NEW -> Request.ProductsNew(
|
Source.NEW -> Request.ProductsNew(
|
||||||
mSearchQuery,
|
mSearchQuery,
|
||||||
mSections,
|
mSections,
|
||||||
Order.DATE_ADDED,
|
|
||||||
Preferences[Preferences.Key.NewApps]
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -93,13 +82,20 @@ class MainNavFragmentViewModelX(
|
|||||||
)
|
)
|
||||||
repositories.addSource(db.repositoryDao.allLive, repositories::setValue)
|
repositories.addSource(db.repositoryDao.allLive, repositories::setValue)
|
||||||
categories.addSource(db.categoryDao.allNamesLive, categories::setValue)
|
categories.addSource(db.categoryDao.allNamesLive, categories::setValue)
|
||||||
listOf(sections, order, searchQuery).forEach {
|
listOf(sections, searchQuery).forEach {
|
||||||
primaryRequest.addSource(it) {
|
primaryRequest.addSource(it) {
|
||||||
val newRequest = request(primarySource)
|
val newRequest = request(primarySource)
|
||||||
if (primaryRequest.value != newRequest)
|
if (primaryRequest.value != newRequest)
|
||||||
primaryRequest.value = newRequest
|
primaryRequest.value = newRequest
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
primaryRequest.addSource(updatedFilter) {
|
||||||
|
if (it) {
|
||||||
|
val newRequest = request(primarySource)
|
||||||
|
primaryRequest.value = newRequest
|
||||||
|
updatedFilter.postValue(false)
|
||||||
|
}
|
||||||
|
}
|
||||||
primaryProducts.addSource(primaryRequest) { request ->
|
primaryProducts.addSource(primaryRequest) { request ->
|
||||||
val updateTime = System.currentTimeMillis()
|
val updateTime = System.currentTimeMillis()
|
||||||
viewModelScope.launch {
|
viewModelScope.launch {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user