mirror of
https://github.com/Aviortheking/Neo-Store.git
synced 2025-04-23 19:32:16 +00:00
Update: Replace RxJava usage for repositories with LiveData
This commit is contained in:
parent
e93b972941
commit
f6bdb57ab1
@ -10,12 +10,9 @@ import com.looker.droidify.database.entity.Repository
|
||||
import com.looker.droidify.databinding.FragmentExploreXBinding
|
||||
import com.looker.droidify.ui.items.VAppItem
|
||||
import com.looker.droidify.utility.PRODUCT_ASYNC_DIFFER_CONFIG
|
||||
import com.looker.droidify.utility.RxUtils
|
||||
import com.mikepenz.fastadapter.FastAdapter
|
||||
import com.mikepenz.fastadapter.IAdapter
|
||||
import com.mikepenz.fastadapter.paged.PagedModelAdapter
|
||||
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
|
||||
import io.reactivex.rxjava3.schedulers.Schedulers
|
||||
|
||||
// TODO add chips bar to navigate categories
|
||||
class ExploreFragment : MainNavFragmentX() {
|
||||
@ -40,16 +37,6 @@ class ExploreFragment : MainNavFragmentX() {
|
||||
return binding.root
|
||||
}
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
viewModel.db.repositoryDao.allFlowable
|
||||
.observeOn(Schedulers.io())
|
||||
.flatMapSingle { list -> RxUtils.querySingle { list } }
|
||||
.map { list -> list.asSequence().map { Pair(it.id, it) }.toMap() }
|
||||
.subscribeOn(AndroidSchedulers.mainThread())
|
||||
.subscribe { repositories = it }
|
||||
}
|
||||
|
||||
override fun setupAdapters() {
|
||||
appsItemAdapter = PagedModelAdapter<Product, VAppItem>(PRODUCT_ASYNC_DIFFER_CONFIG) {
|
||||
it.item?.let { item -> VAppItem(item, repositories[it.repository_id]) }
|
||||
@ -76,5 +63,8 @@ class ExploreFragment : MainNavFragmentX() {
|
||||
appsItemAdapter.submitList(it)
|
||||
appsFastAdapter?.notifyDataSetChanged()
|
||||
}
|
||||
viewModel.repositories.observe(viewLifecycleOwner) {
|
||||
repositories = it.associateBy { repo -> repo.id }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -12,11 +12,8 @@ import com.looker.droidify.databinding.FragmentInstalledXBinding
|
||||
import com.looker.droidify.ui.items.HAppItem
|
||||
import com.looker.droidify.ui.items.VAppItem
|
||||
import com.looker.droidify.utility.PRODUCT_ASYNC_DIFFER_CONFIG
|
||||
import com.looker.droidify.utility.RxUtils
|
||||
import com.mikepenz.fastadapter.FastAdapter
|
||||
import com.mikepenz.fastadapter.paged.PagedModelAdapter
|
||||
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
|
||||
import io.reactivex.rxjava3.schedulers.Schedulers
|
||||
|
||||
class InstalledFragment : MainNavFragmentX() {
|
||||
|
||||
@ -43,16 +40,6 @@ class InstalledFragment : MainNavFragmentX() {
|
||||
return binding.root
|
||||
}
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
viewModel.db.repositoryDao.allFlowable
|
||||
.observeOn(Schedulers.io())
|
||||
.flatMapSingle { list -> RxUtils.querySingle { list } }
|
||||
.map { list -> list.asSequence().map { Pair(it.id, it) }.toMap() }
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribe { repositories = it }
|
||||
}
|
||||
|
||||
override fun setupAdapters() {
|
||||
installedItemAdapter = PagedModelAdapter<Product, VAppItem>(PRODUCT_ASYNC_DIFFER_CONFIG) {
|
||||
it.item?.let { item -> VAppItem(item, repositories[it.repository_id]) }
|
||||
@ -89,5 +76,8 @@ class InstalledFragment : MainNavFragmentX() {
|
||||
binding.updatedBar.visibility = if (it.isNotEmpty()) View.VISIBLE else View.GONE
|
||||
updatedItemAdapter.submitList(it)
|
||||
}
|
||||
viewModel.repositories.observe(viewLifecycleOwner) {
|
||||
repositories = it.associateBy { repo -> repo.id }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -12,11 +12,8 @@ import com.looker.droidify.databinding.FragmentLatestXBinding
|
||||
import com.looker.droidify.ui.items.HAppItem
|
||||
import com.looker.droidify.ui.items.VAppItem
|
||||
import com.looker.droidify.utility.PRODUCT_ASYNC_DIFFER_CONFIG
|
||||
import com.looker.droidify.utility.RxUtils
|
||||
import com.mikepenz.fastadapter.FastAdapter
|
||||
import com.mikepenz.fastadapter.paged.PagedModelAdapter
|
||||
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
|
||||
import io.reactivex.rxjava3.schedulers.Schedulers
|
||||
|
||||
class LatestFragment : MainNavFragmentX() {
|
||||
|
||||
@ -44,16 +41,6 @@ class LatestFragment : MainNavFragmentX() {
|
||||
return binding.root
|
||||
}
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
viewModel.db.repositoryDao.allFlowable
|
||||
.observeOn(Schedulers.io())
|
||||
.flatMapSingle { list -> RxUtils.querySingle { list } }
|
||||
.map { list -> list.asSequence().map { Pair(it.id, it) }.toMap() }
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribe { repositories = it }
|
||||
}
|
||||
|
||||
override fun setupAdapters() {
|
||||
updatedItemAdapter = PagedModelAdapter<Product, VAppItem>(PRODUCT_ASYNC_DIFFER_CONFIG) {
|
||||
it.item?.let { item -> VAppItem(item, repositories[it.repository_id]) }
|
||||
@ -83,5 +70,8 @@ class LatestFragment : MainNavFragmentX() {
|
||||
viewModel.secondaryProducts.observe(viewLifecycleOwner) {
|
||||
newItemAdapter.submitList(it)
|
||||
}
|
||||
viewModel.repositories.observe(viewLifecycleOwner) {
|
||||
repositories = it.associateBy { repo -> repo.id }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,15 +1,13 @@
|
||||
package com.looker.droidify.ui.viewmodels
|
||||
|
||||
import androidx.lifecycle.LiveData
|
||||
import androidx.lifecycle.ViewModel
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import androidx.lifecycle.viewModelScope
|
||||
import androidx.lifecycle.*
|
||||
import androidx.paging.DataSource
|
||||
import androidx.paging.LivePagedListBuilder
|
||||
import androidx.paging.PagedList
|
||||
import com.looker.droidify.content.Preferences
|
||||
import com.looker.droidify.database.DatabaseX
|
||||
import com.looker.droidify.database.entity.Product
|
||||
import com.looker.droidify.database.entity.Repository
|
||||
import com.looker.droidify.entity.Order
|
||||
import com.looker.droidify.entity.Section
|
||||
import com.looker.droidify.ui.fragments.Request
|
||||
@ -121,6 +119,12 @@ class MainNavFragmentViewModelX(val db: DatabaseX, primarySource: Source, second
|
||||
).build()
|
||||
}
|
||||
|
||||
val repositories = MediatorLiveData<List<Repository>>()
|
||||
|
||||
init {
|
||||
repositories.addSource(db.repositoryDao.allLive, repositories::setValue)
|
||||
}
|
||||
|
||||
fun fillList(source: Source) {
|
||||
viewModelScope.launch(Dispatchers.Default) {
|
||||
// productsList = query(request(source))
|
||||
|
Loading…
x
Reference in New Issue
Block a user