From d3283cc6e4ca9376ac5a008e98200f87c1916515 Mon Sep 17 00:00:00 2001 From: machiav3lli Date: Tue, 25 Jan 2022 00:29:39 +0100 Subject: [PATCH] REVERT(3677ee646a2b6e4da8ee2a62dc323dd36766b939): Improve: Convert setup*() functions to suspend function - migrate back to LiveData from Flow --- .../looker/droidify/ui/fragments/BaseNavFragment.kt | 11 ++++------- .../looker/droidify/ui/fragments/ExploreFragment.kt | 7 +++---- .../looker/droidify/ui/fragments/InstalledFragment.kt | 7 +++---- .../looker/droidify/ui/fragments/LatestFragment.kt | 7 +++---- .../ui/fragments/PrefsRepositoriesFragment.kt | 4 ++-- .../ui/viewmodels/MainNavFragmentViewModelX.kt | 8 ++++---- 6 files changed, 19 insertions(+), 25 deletions(-) diff --git a/src/main/kotlin/com/looker/droidify/ui/fragments/BaseNavFragment.kt b/src/main/kotlin/com/looker/droidify/ui/fragments/BaseNavFragment.kt index f79aa6f3..f0edab8e 100644 --- a/src/main/kotlin/com/looker/droidify/ui/fragments/BaseNavFragment.kt +++ b/src/main/kotlin/com/looker/droidify/ui/fragments/BaseNavFragment.kt @@ -3,17 +3,14 @@ package com.looker.droidify.ui.fragments import android.os.Bundle import android.view.View import androidx.fragment.app.Fragment -import androidx.lifecycle.lifecycleScope abstract class BaseNavFragment : Fragment() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - lifecycleScope.launchWhenCreated { - setupAdapters() - setupLayout() - } + setupAdapters() + setupLayout() } - abstract suspend fun setupAdapters() - abstract suspend fun setupLayout() + abstract fun setupAdapters() + abstract fun setupLayout() } \ No newline at end of file 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 5b64fc3b..f80fd9ab 100644 --- a/src/main/kotlin/com/looker/droidify/ui/fragments/ExploreFragment.kt +++ b/src/main/kotlin/com/looker/droidify/ui/fragments/ExploreFragment.kt @@ -15,7 +15,6 @@ import com.mikepenz.fastadapter.FastAdapter import com.mikepenz.fastadapter.paged.PagedModelAdapter import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers import io.reactivex.rxjava3.schedulers.Schedulers -import kotlinx.coroutines.flow.collectLatest // TODO create categories layouts that hold the apps in horizontal layout class ExploreFragment : MainNavFragmentX() { @@ -49,7 +48,7 @@ class ExploreFragment : MainNavFragmentX() { .subscribe { repositories = it } } - override suspend fun setupAdapters() { + override fun setupAdapters() { appsItemAdapter = PagedModelAdapter(PRODUCT_ASYNC_DIFFER_CONFIG) { it.data_item?.let { item -> VAppItem(item, repositories[it.repository_id]) } } @@ -62,8 +61,8 @@ class ExploreFragment : MainNavFragmentX() { } } - override suspend fun setupLayout() { - viewModel.productsList.collectLatest { + override fun setupLayout() { + viewModel.productsList.observe(viewLifecycleOwner) { appsItemAdapter.submitList(it) appsFastAdapter?.notifyDataSetChanged() } 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 c0a9ef93..f4e93c25 100644 --- a/src/main/kotlin/com/looker/droidify/ui/fragments/InstalledFragment.kt +++ b/src/main/kotlin/com/looker/droidify/ui/fragments/InstalledFragment.kt @@ -17,7 +17,6 @@ import com.mikepenz.fastadapter.FastAdapter import com.mikepenz.fastadapter.paged.PagedModelAdapter import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers import io.reactivex.rxjava3.schedulers.Schedulers -import kotlinx.coroutines.flow.collectLatest class InstalledFragment : MainNavFragmentX() { @@ -53,7 +52,7 @@ class InstalledFragment : MainNavFragmentX() { .subscribe { repositories = it } } - override suspend fun setupAdapters() { + override fun setupAdapters() { installedItemAdapter = PagedModelAdapter(PRODUCT_ASYNC_DIFFER_CONFIG) { it.data_item?.let { item -> VAppItem(item, repositories[it.repository_id]) } } @@ -75,14 +74,14 @@ class InstalledFragment : MainNavFragmentX() { } } - override suspend fun setupLayout() { + override fun setupLayout() { binding.buttonUpdated.setOnClickListener { binding.updatedRecycler.apply { visibility = if (visibility == View.VISIBLE) View.GONE else View.VISIBLE } } - viewModel.productsList.collectLatest { + viewModel.productsList.observe(viewLifecycleOwner) { binding.updatedBar.visibility = if (it.any { item -> item.data_item?.canUpdate == true }) View.VISIBLE else View.GONE updatedItemAdapter.submitList(it) 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 f1516a93..12b8a653 100644 --- a/src/main/kotlin/com/looker/droidify/ui/fragments/LatestFragment.kt +++ b/src/main/kotlin/com/looker/droidify/ui/fragments/LatestFragment.kt @@ -17,7 +17,6 @@ import com.mikepenz.fastadapter.FastAdapter import com.mikepenz.fastadapter.paged.PagedModelAdapter import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers import io.reactivex.rxjava3.schedulers.Schedulers -import kotlinx.coroutines.flow.collectLatest class LatestFragment : MainNavFragmentX() { @@ -54,7 +53,7 @@ class LatestFragment : MainNavFragmentX() { .subscribe { repositories = it } } - override suspend fun setupAdapters() { + override fun setupAdapters() { updatedItemAdapter = PagedModelAdapter(PRODUCT_ASYNC_DIFFER_CONFIG) { it.data_item?.let { item -> VAppItem(item, repositories[it.repository_id]) } } @@ -76,8 +75,8 @@ class LatestFragment : MainNavFragmentX() { } } - override suspend fun setupLayout() { - viewModel.productsList.collectLatest { + override fun setupLayout() { + viewModel.productsList.observe(requireActivity()) { newItemAdapter.submitList(it) updatedItemAdapter.submitList(it) } diff --git a/src/main/kotlin/com/looker/droidify/ui/fragments/PrefsRepositoriesFragment.kt b/src/main/kotlin/com/looker/droidify/ui/fragments/PrefsRepositoriesFragment.kt index 77dc0f4a..6a3b6d7d 100644 --- a/src/main/kotlin/com/looker/droidify/ui/fragments/PrefsRepositoriesFragment.kt +++ b/src/main/kotlin/com/looker/droidify/ui/fragments/PrefsRepositoriesFragment.kt @@ -40,7 +40,7 @@ class PrefsRepositoriesFragment : BaseNavFragment() { return binding.root } - override suspend fun setupAdapters() { + override fun setupAdapters() { syncConnection.bind(requireContext()) reposFastAdapter = FastAdapter.with(reposItemAdapter) @@ -52,7 +52,7 @@ class PrefsRepositoriesFragment : BaseNavFragment() { } } - override suspend fun setupLayout() { + override fun setupLayout() { viewModel.productsList.observe(requireActivity()) { reposItemAdapter.set( it.mapNotNull { dbRepo -> 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 6c397c62..cf7e1de5 100644 --- a/src/main/kotlin/com/looker/droidify/ui/viewmodels/MainNavFragmentViewModelX.kt +++ b/src/main/kotlin/com/looker/droidify/ui/viewmodels/MainNavFragmentViewModelX.kt @@ -1,8 +1,8 @@ package com.looker.droidify.ui.viewmodels +import androidx.lifecycle.LiveData import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModelProvider -import androidx.lifecycle.asFlow import androidx.lifecycle.viewModelScope import androidx.paging.DataSource import androidx.paging.LivePagedListBuilder @@ -88,8 +88,8 @@ class MainNavFragmentViewModelX(val db: DatabaseX, source: Source) : ViewModel() .setEnablePlaceholders(false) .build() } - val request = request(source) - val productsList: Flow> by lazy { + private val request = request(source) + val productsList: LiveData> by lazy { LivePagedListBuilder( db.productDao.queryList( installed = request.installed, @@ -99,7 +99,7 @@ class MainNavFragmentViewModelX(val db: DatabaseX, source: Source) : ViewModel() order = request.order, numberOfItems = request.numberOfItems ), pagedListConfig - ).build().asFlow() + ).build() } fun fillList(source: Source) {