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