diff --git a/src/main/kotlin/com/looker/droidify/ui/fragments/ExploreFragment.kt b/src/main/kotlin/com/looker/droidify/ui/fragments/ExploreFragment.kt index fefb839c..043c9f63 100644 --- a/src/main/kotlin/com/looker/droidify/ui/fragments/ExploreFragment.kt +++ b/src/main/kotlin/com/looker/droidify/ui/fragments/ExploreFragment.kt @@ -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_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 } + } } } diff --git a/src/main/kotlin/com/looker/droidify/ui/fragments/InstalledFragment.kt b/src/main/kotlin/com/looker/droidify/ui/fragments/InstalledFragment.kt index 22a96d12..f48480b2 100644 --- a/src/main/kotlin/com/looker/droidify/ui/fragments/InstalledFragment.kt +++ b/src/main/kotlin/com/looker/droidify/ui/fragments/InstalledFragment.kt @@ -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_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 } + } } } diff --git a/src/main/kotlin/com/looker/droidify/ui/fragments/LatestFragment.kt b/src/main/kotlin/com/looker/droidify/ui/fragments/LatestFragment.kt index 59fe7850..2bb8fbcd 100644 --- a/src/main/kotlin/com/looker/droidify/ui/fragments/LatestFragment.kt +++ b/src/main/kotlin/com/looker/droidify/ui/fragments/LatestFragment.kt @@ -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_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 } + } } } diff --git a/src/main/kotlin/com/looker/droidify/ui/viewmodels/MainNavFragmentViewModelX.kt b/src/main/kotlin/com/looker/droidify/ui/viewmodels/MainNavFragmentViewModelX.kt index 92175249..15159ef6 100644 --- a/src/main/kotlin/com/looker/droidify/ui/viewmodels/MainNavFragmentViewModelX.kt +++ b/src/main/kotlin/com/looker/droidify/ui/viewmodels/MainNavFragmentViewModelX.kt @@ -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>() + + init { + repositories.addSource(db.repositoryDao.allLive, repositories::setValue) + } + fun fillList(source: Source) { viewModelScope.launch(Dispatchers.Default) { // productsList = query(request(source))