mirror of
https://github.com/Aviortheking/Neo-Store.git
synced 2025-04-23 11:22:12 +00:00
Fix: Getting true search result
This commit is contained in:
parent
c5821fc3e8
commit
fbc4f04ff2
@ -1,6 +1,10 @@
|
||||
package com.looker.droidify.ui.viewmodels
|
||||
|
||||
import androidx.lifecycle.*
|
||||
import androidx.lifecycle.MediatorLiveData
|
||||
import androidx.lifecycle.MutableLiveData
|
||||
import androidx.lifecycle.ViewModel
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import androidx.lifecycle.viewModelScope
|
||||
import com.looker.droidify.content.Preferences
|
||||
import com.looker.droidify.database.DatabaseX
|
||||
import com.looker.droidify.database.entity.Installed
|
||||
@ -10,6 +14,7 @@ import com.looker.droidify.entity.Order
|
||||
import com.looker.droidify.entity.Section
|
||||
import com.looker.droidify.ui.fragments.Request
|
||||
import com.looker.droidify.ui.fragments.Source
|
||||
import com.looker.droidify.utility.extension.ManageableLiveData
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.launch
|
||||
import kotlinx.coroutines.withContext
|
||||
@ -19,6 +24,7 @@ class MainNavFragmentViewModelX(
|
||||
primarySource: Source,
|
||||
secondarySource: Source
|
||||
) : ViewModel() {
|
||||
// TODO add better sort/filter fields
|
||||
|
||||
var order = MutableLiveData(Order.LAST_UPDATE)
|
||||
private set
|
||||
@ -66,7 +72,7 @@ class MainNavFragmentViewModelX(
|
||||
}
|
||||
|
||||
private var primaryRequest = MediatorLiveData<Request>()
|
||||
val primaryProducts = MediatorLiveData<List<Product>>()
|
||||
val primaryProducts = ManageableLiveData<List<Product>>()
|
||||
private var secondaryRequest = request(secondarySource)
|
||||
val secondaryProducts = MediatorLiveData<List<Product>>()
|
||||
|
||||
@ -76,9 +82,10 @@ class MainNavFragmentViewModelX(
|
||||
|
||||
init {
|
||||
primaryProducts.addSource(
|
||||
db.productDao.queryLiveList(primaryRequest.value ?: request(primarySource)),
|
||||
primaryProducts::setValue
|
||||
)
|
||||
db.productDao.queryLiveList(primaryRequest.value ?: request(primarySource))
|
||||
) {
|
||||
primaryProducts.updateValue(it, System.currentTimeMillis())
|
||||
}
|
||||
secondaryProducts.addSource(
|
||||
db.productDao.queryLiveList(secondaryRequest),
|
||||
secondaryProducts::setValue
|
||||
@ -87,29 +94,33 @@ class MainNavFragmentViewModelX(
|
||||
categories.addSource(db.categoryDao.allNamesLive, categories::setValue)
|
||||
listOf(sections, order, searchQuery).forEach {
|
||||
primaryRequest.addSource(it) {
|
||||
primaryRequest.value = request(primarySource)
|
||||
val newRequest = request(primarySource)
|
||||
if (primaryRequest.value != newRequest)
|
||||
primaryRequest.value = newRequest
|
||||
}
|
||||
}
|
||||
primaryProducts.addSource(primaryRequest) { request ->
|
||||
val updateTime = System.currentTimeMillis()
|
||||
viewModelScope.launch {
|
||||
withContext(Dispatchers.IO) {
|
||||
primaryProducts.postValue(
|
||||
db.productDao.queryObject(
|
||||
request
|
||||
)
|
||||
primaryProducts.updateValue(
|
||||
db.productDao.queryObject(request),
|
||||
updateTime
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
installed.addSource(db.installedDao.allLive) {
|
||||
if (primarySource == Source.INSTALLED && secondarySource == Source.UPDATES) {
|
||||
val updateTime = System.currentTimeMillis()
|
||||
viewModelScope.launch {
|
||||
withContext(Dispatchers.IO) {
|
||||
secondaryProducts.postValue(db.productDao.queryObject(secondaryRequest))
|
||||
primaryProducts.postValue(
|
||||
primaryProducts.updateValue(
|
||||
db.productDao.queryObject(
|
||||
primaryRequest.value ?: request(primarySource)
|
||||
)
|
||||
),
|
||||
updateTime
|
||||
)
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user