mirror of
https://github.com/Aviortheking/Neo-Store.git
synced 2025-06-08 08:49:55 +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.databinding.FragmentExploreXBinding
|
||||||
import com.looker.droidify.ui.items.VAppItem
|
import com.looker.droidify.ui.items.VAppItem
|
||||||
import com.looker.droidify.utility.PRODUCT_ASYNC_DIFFER_CONFIG
|
import com.looker.droidify.utility.PRODUCT_ASYNC_DIFFER_CONFIG
|
||||||
import com.looker.droidify.utility.RxUtils
|
|
||||||
import com.mikepenz.fastadapter.FastAdapter
|
import com.mikepenz.fastadapter.FastAdapter
|
||||||
import com.mikepenz.fastadapter.IAdapter
|
import com.mikepenz.fastadapter.IAdapter
|
||||||
import com.mikepenz.fastadapter.paged.PagedModelAdapter
|
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
|
// TODO add chips bar to navigate categories
|
||||||
class ExploreFragment : MainNavFragmentX() {
|
class ExploreFragment : MainNavFragmentX() {
|
||||||
@ -40,16 +37,6 @@ class ExploreFragment : MainNavFragmentX() {
|
|||||||
return binding.root
|
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() {
|
override fun setupAdapters() {
|
||||||
appsItemAdapter = PagedModelAdapter<Product, VAppItem>(PRODUCT_ASYNC_DIFFER_CONFIG) {
|
appsItemAdapter = PagedModelAdapter<Product, VAppItem>(PRODUCT_ASYNC_DIFFER_CONFIG) {
|
||||||
it.item?.let { item -> VAppItem(item, repositories[it.repository_id]) }
|
it.item?.let { item -> VAppItem(item, repositories[it.repository_id]) }
|
||||||
@ -76,5 +63,8 @@ class ExploreFragment : MainNavFragmentX() {
|
|||||||
appsItemAdapter.submitList(it)
|
appsItemAdapter.submitList(it)
|
||||||
appsFastAdapter?.notifyDataSetChanged()
|
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.HAppItem
|
||||||
import com.looker.droidify.ui.items.VAppItem
|
import com.looker.droidify.ui.items.VAppItem
|
||||||
import com.looker.droidify.utility.PRODUCT_ASYNC_DIFFER_CONFIG
|
import com.looker.droidify.utility.PRODUCT_ASYNC_DIFFER_CONFIG
|
||||||
import com.looker.droidify.utility.RxUtils
|
|
||||||
import com.mikepenz.fastadapter.FastAdapter
|
import com.mikepenz.fastadapter.FastAdapter
|
||||||
import com.mikepenz.fastadapter.paged.PagedModelAdapter
|
import com.mikepenz.fastadapter.paged.PagedModelAdapter
|
||||||
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
|
|
||||||
import io.reactivex.rxjava3.schedulers.Schedulers
|
|
||||||
|
|
||||||
class InstalledFragment : MainNavFragmentX() {
|
class InstalledFragment : MainNavFragmentX() {
|
||||||
|
|
||||||
@ -43,16 +40,6 @@ class InstalledFragment : MainNavFragmentX() {
|
|||||||
return binding.root
|
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() {
|
override fun setupAdapters() {
|
||||||
installedItemAdapter = PagedModelAdapter<Product, VAppItem>(PRODUCT_ASYNC_DIFFER_CONFIG) {
|
installedItemAdapter = PagedModelAdapter<Product, VAppItem>(PRODUCT_ASYNC_DIFFER_CONFIG) {
|
||||||
it.item?.let { item -> VAppItem(item, repositories[it.repository_id]) }
|
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
|
binding.updatedBar.visibility = if (it.isNotEmpty()) View.VISIBLE else View.GONE
|
||||||
updatedItemAdapter.submitList(it)
|
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.HAppItem
|
||||||
import com.looker.droidify.ui.items.VAppItem
|
import com.looker.droidify.ui.items.VAppItem
|
||||||
import com.looker.droidify.utility.PRODUCT_ASYNC_DIFFER_CONFIG
|
import com.looker.droidify.utility.PRODUCT_ASYNC_DIFFER_CONFIG
|
||||||
import com.looker.droidify.utility.RxUtils
|
|
||||||
import com.mikepenz.fastadapter.FastAdapter
|
import com.mikepenz.fastadapter.FastAdapter
|
||||||
import com.mikepenz.fastadapter.paged.PagedModelAdapter
|
import com.mikepenz.fastadapter.paged.PagedModelAdapter
|
||||||
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
|
|
||||||
import io.reactivex.rxjava3.schedulers.Schedulers
|
|
||||||
|
|
||||||
class LatestFragment : MainNavFragmentX() {
|
class LatestFragment : MainNavFragmentX() {
|
||||||
|
|
||||||
@ -44,16 +41,6 @@ class LatestFragment : MainNavFragmentX() {
|
|||||||
return binding.root
|
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() {
|
override fun setupAdapters() {
|
||||||
updatedItemAdapter = PagedModelAdapter<Product, VAppItem>(PRODUCT_ASYNC_DIFFER_CONFIG) {
|
updatedItemAdapter = PagedModelAdapter<Product, VAppItem>(PRODUCT_ASYNC_DIFFER_CONFIG) {
|
||||||
it.item?.let { item -> VAppItem(item, repositories[it.repository_id]) }
|
it.item?.let { item -> VAppItem(item, repositories[it.repository_id]) }
|
||||||
@ -83,5 +70,8 @@ class LatestFragment : MainNavFragmentX() {
|
|||||||
viewModel.secondaryProducts.observe(viewLifecycleOwner) {
|
viewModel.secondaryProducts.observe(viewLifecycleOwner) {
|
||||||
newItemAdapter.submitList(it)
|
newItemAdapter.submitList(it)
|
||||||
}
|
}
|
||||||
|
viewModel.repositories.observe(viewLifecycleOwner) {
|
||||||
|
repositories = it.associateBy { repo -> repo.id }
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,15 +1,13 @@
|
|||||||
package com.looker.droidify.ui.viewmodels
|
package com.looker.droidify.ui.viewmodels
|
||||||
|
|
||||||
import androidx.lifecycle.LiveData
|
import androidx.lifecycle.*
|
||||||
import androidx.lifecycle.ViewModel
|
|
||||||
import androidx.lifecycle.ViewModelProvider
|
|
||||||
import androidx.lifecycle.viewModelScope
|
|
||||||
import androidx.paging.DataSource
|
import androidx.paging.DataSource
|
||||||
import androidx.paging.LivePagedListBuilder
|
import androidx.paging.LivePagedListBuilder
|
||||||
import androidx.paging.PagedList
|
import androidx.paging.PagedList
|
||||||
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.Product
|
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.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
|
||||||
@ -121,6 +119,12 @@ class MainNavFragmentViewModelX(val db: DatabaseX, primarySource: Source, second
|
|||||||
).build()
|
).build()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
val repositories = MediatorLiveData<List<Repository>>()
|
||||||
|
|
||||||
|
init {
|
||||||
|
repositories.addSource(db.repositoryDao.allLive, repositories::setValue)
|
||||||
|
}
|
||||||
|
|
||||||
fun fillList(source: Source) {
|
fun fillList(source: Source) {
|
||||||
viewModelScope.launch(Dispatchers.Default) {
|
viewModelScope.launch(Dispatchers.Default) {
|
||||||
// productsList = query(request(source))
|
// productsList = query(request(source))
|
||||||
|
Loading…
x
Reference in New Issue
Block a user