From 7a416b75f3ba331a7e50e3cc1eb2f4e62376c566 Mon Sep 17 00:00:00 2001 From: hasibprince Date: Sat, 12 Nov 2022 10:31:52 +0600 Subject: [PATCH 1/4] fixed: removed adding redundant livedata observers --- .../e/apps/search/SearchFragment.kt | 21 ++++++++++--------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/foundation/e/apps/search/SearchFragment.kt b/app/src/main/java/foundation/e/apps/search/SearchFragment.kt index 58aa1075a..697a5bef3 100644 --- a/app/src/main/java/foundation/e/apps/search/SearchFragment.kt +++ b/app/src/main/java/foundation/e/apps/search/SearchFragment.kt @@ -34,6 +34,7 @@ import androidx.cursoradapter.widget.CursorAdapter import androidx.cursoradapter.widget.SimpleCursorAdapter import androidx.fragment.app.activityViewModels import androidx.fragment.app.viewModels +import androidx.lifecycle.distinctUntilChanged import androidx.lifecycle.lifecycleScope import androidx.navigation.fragment.findNavController import androidx.recyclerview.widget.LinearLayoutManager @@ -60,6 +61,7 @@ import foundation.e.apps.utils.exceptions.GPlayLoginException import foundation.e.apps.utils.modules.PWAManagerModule import foundation.e.apps.utils.parentFragment.TimeoutFragment import kotlinx.coroutines.launch +import timber.log.Timber import javax.inject.Inject @AndroidEntryPoint @@ -134,13 +136,10 @@ class SearchFragment : if (it.data?.first.isNullOrEmpty() && it.data?.second == false) { noAppsFoundLayout?.visibility = View.VISIBLE } else { - if (!updateSearchResult(listAdapter, it)) return@observe - } - - listAdapter?.let { adapter -> - observeDownloadList(adapter) + listAdapter?.let { adapter -> + observeDownloadList(adapter) + } } - observeScrollOfSearchResult(listAdapter) } } @@ -172,19 +171,20 @@ class SearchFragment : listAdapter: ApplicationListRVAdapter?, it: ResultSupreme, Boolean>> ): Boolean { - val currentList = listAdapter?.currentList - if (it.data?.first != null && !currentList.isNullOrEmpty() && !searchViewModel.isAnyAppUpdated( + val currentList = listAdapter?.currentList ?: listOf() + if (it.data?.first != null && !searchViewModel.isAnyAppUpdated( it.data?.first!!, currentList ) ) { return false } - listAdapter?.setData(it.data!!.first) + binding.loadingProgressBar.isVisible = it.data!!.second stopLoadingUI() noAppsFoundLayout?.visibility = View.GONE searchHintLayout?.visibility = View.GONE + listAdapter?.setData(it.data?.first!!) return true } @@ -249,12 +249,13 @@ class SearchFragment : } private fun observeDownloadList(applicationListRVAdapter: ApplicationListRVAdapter) { + mainActivityViewModel.downloadList.removeObservers(viewLifecycleOwner) mainActivityViewModel.downloadList.observe(viewLifecycleOwner) { list -> val searchList = searchViewModel.searchResult.value?.data?.first?.toMutableList() ?: emptyList() searchList.let { mainActivityViewModel.updateStatusOfFusedApps(searchList, list) - applicationListRVAdapter.setData(it) + updateSearchResult(applicationListRVAdapter, ResultSupreme.Success(Pair(it, true))) } } } -- GitLab From fdad40bb2a8b812e358d037dc729c7ab35b550b3 Mon Sep 17 00:00:00 2001 From: hasibprince Date: Sat, 12 Nov 2022 17:39:24 +0600 Subject: [PATCH 2/4] fixed: redundant livedata observers for applist page --- .../java/foundation/e/apps/MainActivity.kt | 2 +- .../ApplicationListFragment.kt | 53 +++++++++---------- .../manager/database/DatabaseRepository.kt | 2 + .../e/apps/search/SearchFragment.kt | 14 +++-- 4 files changed, 39 insertions(+), 32 deletions(-) diff --git a/app/src/main/java/foundation/e/apps/MainActivity.kt b/app/src/main/java/foundation/e/apps/MainActivity.kt index 06c5a2b04..1f2f8392d 100644 --- a/app/src/main/java/foundation/e/apps/MainActivity.kt +++ b/app/src/main/java/foundation/e/apps/MainActivity.kt @@ -73,7 +73,7 @@ class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - + Timber.d("### oncreate 125") binding = ActivityMainBinding.inflate(layoutInflater) setContentView(binding.root) diff --git a/app/src/main/java/foundation/e/apps/applicationlist/ApplicationListFragment.kt b/app/src/main/java/foundation/e/apps/applicationlist/ApplicationListFragment.kt index 34108be7a..d53746cd2 100644 --- a/app/src/main/java/foundation/e/apps/applicationlist/ApplicationListFragment.kt +++ b/app/src/main/java/foundation/e/apps/applicationlist/ApplicationListFragment.kt @@ -49,6 +49,7 @@ import foundation.e.apps.utils.exceptions.GPlayLoginException import foundation.e.apps.utils.modules.PWAManagerModule import foundation.e.apps.utils.parentFragment.TimeoutFragment import kotlinx.coroutines.launch +import timber.log.Timber import javax.inject.Inject @AndroidEntryPoint @@ -116,12 +117,20 @@ class ApplicationListFragment : } } - private fun observeDownloadList(adapter: ApplicationListRVAdapter) { + private fun observeDownloadList( + adapter: ApplicationListRVAdapter, + fusedAppResult: ResultSupreme> + ) { + mainActivityViewModel.downloadList.removeObservers(viewLifecycleOwner) mainActivityViewModel.downloadList.observe(viewLifecycleOwner) { list -> + Timber.d("### downloadlist observer responded: ${list.firstOrNull()?.name + ": " + list.firstOrNull()?.status}") val appList = viewModel.appListLiveData.value?.data?.toMutableList() ?: emptyList() + appList.let { mainActivityViewModel.updateStatusOfFusedApps(it, list) - adapter.setData(it) + if (isFusedAppsUpdated(fusedAppResult, listAdapter.currentList)) { + adapter.setData(it, args.translation) + } } } } @@ -134,26 +143,31 @@ class ApplicationListFragment : override fun onResume() { super.onResume() - - if (listAdapter.currentList.isNotEmpty() && viewModel.hasAnyAppInstallStatusChanged(listAdapter.currentList)) { + addDownloadProgressObserver() + if (listAdapter.currentList.isNotEmpty() && viewModel.hasAnyAppInstallStatusChanged( + listAdapter.currentList + ) + ) { /*mainActivityViewModel.authData.value?.let { refreshData(it) }*/ repostAuthObjects() } + + } + + private fun addDownloadProgressObserver() { + appProgressViewModel.downloadProgress.removeObservers(viewLifecycleOwner) + appProgressViewModel.downloadProgress.observe(viewLifecycleOwner) { + updateProgressOfDownloadingItems(binding.recyclerView, it) + } } private fun observeAppListLiveData() { viewModel.appListLiveData.observe(viewLifecycleOwner) { stopLoadingUI() if (it.isSuccess()) { - if (!isFusedAppsUpdated(it)) { - return@observe - } - updateAppListRecyclerView(listAdapter, it) - appProgressViewModel.downloadProgress.observe(viewLifecycleOwner) { - updateProgressOfDownloadingItems(binding.recyclerView, it) - } + observeDownloadList(listAdapter, it) } } } @@ -203,21 +217,6 @@ class ApplicationListFragment : return recyclerView } - private fun updateAppListRecyclerView( - listAdapter: ApplicationListRVAdapter?, - fusedAppResult: ResultSupreme> - ) { - val currentList = listAdapter?.currentList - if (!isFusedAppsUpdated(fusedAppResult, currentList) - ) { - return - } - listAdapter?.setData(fusedAppResult.data!!, args.translation) - listAdapter?.let { adapter -> - observeDownloadList(adapter) - } - } - private fun isFusedAppsUpdated( fusedAppResult: ResultSupreme>, currentList: MutableList? @@ -340,7 +339,7 @@ class ApplicationListFragment : override fun onPause() { binding.shimmerLayout.stopShimmer() - mainActivityViewModel.downloadList.removeObservers(viewLifecycleOwner) +// mainActivityViewModel.downloadList.removeObservers(viewLifecycleOwner) super.onPause() } diff --git a/app/src/main/java/foundation/e/apps/manager/database/DatabaseRepository.kt b/app/src/main/java/foundation/e/apps/manager/database/DatabaseRepository.kt index 6344a6c75..6c79d2450 100644 --- a/app/src/main/java/foundation/e/apps/manager/database/DatabaseRepository.kt +++ b/app/src/main/java/foundation/e/apps/manager/database/DatabaseRepository.kt @@ -6,6 +6,7 @@ import foundation.e.apps.OpenForTesting import foundation.e.apps.manager.database.fusedDownload.FusedDownload import foundation.e.apps.manager.database.fusedDownload.FusedDownloadDAO import kotlinx.coroutines.flow.Flow +import timber.log.Timber import javax.inject.Inject import javax.inject.Singleton @@ -28,6 +29,7 @@ class DatabaseRepository @Inject constructor( } suspend fun updateDownload(fusedDownload: FusedDownload) { + Timber.d("### fusedownload updated: ${fusedDownload.name + ": " + fusedDownload.status}") fusedDownloadDAO.updateDownload(fusedDownload) } diff --git a/app/src/main/java/foundation/e/apps/search/SearchFragment.kt b/app/src/main/java/foundation/e/apps/search/SearchFragment.kt index 697a5bef3..831076436 100644 --- a/app/src/main/java/foundation/e/apps/search/SearchFragment.kt +++ b/app/src/main/java/foundation/e/apps/search/SearchFragment.kt @@ -122,7 +122,8 @@ class SearchFragment : setupListening() authObjects.observe(viewLifecycleOwner) { - if (it == null) return@observe + val currentQuery = searchView?.query?.toString() ?: "" + if (it == null || (currentQuery.isNotEmpty() && lastSearch == currentQuery)) return@observe loadData(it) } @@ -326,9 +327,7 @@ class SearchFragment : override fun onResume() { super.onResume() binding.shimmerLayout.startShimmer() - appProgressViewModel.downloadProgress.observe(viewLifecycleOwner) { - updateProgressOfInstallingApps(it) - } + addDownloadProgressObservers() if (shouldRefreshData()) { repostAuthObjects() @@ -340,6 +339,13 @@ class SearchFragment : } } + private fun addDownloadProgressObservers() { + appProgressViewModel.downloadProgress.removeObservers(viewLifecycleOwner) + appProgressViewModel.downloadProgress.observe(viewLifecycleOwner) { + updateProgressOfInstallingApps(it) + } + } + private fun shouldRefreshData() = searchText.isNotEmpty() && recyclerView?.adapter != null && searchViewModel.hasAnyAppInstallStatusChanged( (recyclerView?.adapter as ApplicationListRVAdapter).currentList -- GitLab From fd5b61a24010987e5af7628425211f4578b4598a Mon Sep 17 00:00:00 2001 From: hasibprince Date: Mon, 14 Nov 2022 15:46:11 +0600 Subject: [PATCH 3/4] fixed: ui updating of detail page --- .../e/apps/application/ApplicationFragment.kt | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/foundation/e/apps/application/ApplicationFragment.kt b/app/src/main/java/foundation/e/apps/application/ApplicationFragment.kt index 5fac54cdf..967dfe97d 100644 --- a/app/src/main/java/foundation/e/apps/application/ApplicationFragment.kt +++ b/app/src/main/java/foundation/e/apps/application/ApplicationFragment.kt @@ -213,6 +213,8 @@ class ApplicationFragment : TimeoutFragment(R.layout.fragment_application) { mainActivityViewModel.downloadList.observe(viewLifecycleOwner) { list -> applicationViewModel.updateApplicationStatus(list) } + + observeDownloadStatus(binding.root) stopLoadingUI() } @@ -483,11 +485,6 @@ class ApplicationFragment : TimeoutFragment(R.layout.fragment_application) { } } - override fun onResume() { - super.onResume() - observeDownloadStatus(binding.root) - } - private fun handleInstallingIssue( installButton: MaterialButton, fusedApp: FusedApp, @@ -790,11 +787,6 @@ class ApplicationFragment : TimeoutFragment(R.layout.fragment_application) { applicationIcon = null } - override fun onPause() { - super.onPause() - mainActivityViewModel.downloadList.removeObservers(viewLifecycleOwner) - } - private fun shareApp(name: String, shareUrl: String): Intent { val shareIntent = Intent().apply { action = Intent.ACTION_SEND -- GitLab From 6826e7b1083f1eccdaa64e63c4a74202ad60c018 Mon Sep 17 00:00:00 2001 From: hasibprince Date: Thu, 17 Nov 2022 15:02:27 +0600 Subject: [PATCH 4/4] improvement for ui updating --- .../java/foundation/e/apps/MainActivity.kt | 2 +- .../e/apps/application/ApplicationFragment.kt | 17 +++-- .../ApplicationListFragment.kt | 8 +-- .../manager/database/DatabaseRepository.kt | 2 - .../e/apps/search/SearchFragment.kt | 33 ++++++---- .../foundation/e/apps/FusedApiImplTest.kt | 62 ++++++++++++------- 6 files changed, 76 insertions(+), 48 deletions(-) diff --git a/app/src/main/java/foundation/e/apps/MainActivity.kt b/app/src/main/java/foundation/e/apps/MainActivity.kt index 1f2f8392d..06c5a2b04 100644 --- a/app/src/main/java/foundation/e/apps/MainActivity.kt +++ b/app/src/main/java/foundation/e/apps/MainActivity.kt @@ -73,7 +73,7 @@ class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - Timber.d("### oncreate 125") + binding = ActivityMainBinding.inflate(layoutInflater) setContentView(binding.root) diff --git a/app/src/main/java/foundation/e/apps/application/ApplicationFragment.kt b/app/src/main/java/foundation/e/apps/application/ApplicationFragment.kt index 967dfe97d..bd4414dd6 100644 --- a/app/src/main/java/foundation/e/apps/application/ApplicationFragment.kt +++ b/app/src/main/java/foundation/e/apps/application/ApplicationFragment.kt @@ -208,14 +208,18 @@ class ApplicationFragment : TimeoutFragment(R.layout.fragment_application) { if (appInfoFetchViewModel.isAppInBlockedList(it)) { binding.snackbarLayout.visibility = View.VISIBLE } + fetchAppTracker(it) + observeDownloadList() + observeDownloadStatus(binding.root) + stopLoadingUI() + } + private fun observeDownloadList() { + mainActivityViewModel.downloadList.removeObservers(viewLifecycleOwner) mainActivityViewModel.downloadList.observe(viewLifecycleOwner) { list -> applicationViewModel.updateApplicationStatus(list) } - - observeDownloadStatus(binding.root) - stopLoadingUI() } private fun updateAppDescriptionText(it: FusedApp) { @@ -706,7 +710,7 @@ class ApplicationFragment : TimeoutFragment(R.layout.fragment_application) { downloadProgress: DownloadProgress, ) { val progressResult = applicationViewModel.calculateProgress(downloadProgress) - if (progressResult.first < 1) { + if (view == null || progressResult.first < 1) { return } val downloadedSize = "${ @@ -780,6 +784,11 @@ class ApplicationFragment : TimeoutFragment(R.layout.fragment_application) { binding.ratingsInclude.appPrivacyScore.visibility = visibility } + override fun onResume() { + super.onResume() + observeDownloadList() + } + override fun onDestroyView() { super.onDestroyView() _binding?.recyclerView?.adapter = null diff --git a/app/src/main/java/foundation/e/apps/applicationlist/ApplicationListFragment.kt b/app/src/main/java/foundation/e/apps/applicationlist/ApplicationListFragment.kt index d53746cd2..aa1bb75d1 100644 --- a/app/src/main/java/foundation/e/apps/applicationlist/ApplicationListFragment.kt +++ b/app/src/main/java/foundation/e/apps/applicationlist/ApplicationListFragment.kt @@ -49,7 +49,6 @@ import foundation.e.apps.utils.exceptions.GPlayLoginException import foundation.e.apps.utils.modules.PWAManagerModule import foundation.e.apps.utils.parentFragment.TimeoutFragment import kotlinx.coroutines.launch -import timber.log.Timber import javax.inject.Inject @AndroidEntryPoint @@ -123,7 +122,6 @@ class ApplicationListFragment : ) { mainActivityViewModel.downloadList.removeObservers(viewLifecycleOwner) mainActivityViewModel.downloadList.observe(viewLifecycleOwner) { list -> - Timber.d("### downloadlist observer responded: ${list.firstOrNull()?.name + ": " + list.firstOrNull()?.status}") val appList = viewModel.appListLiveData.value?.data?.toMutableList() ?: emptyList() appList.let { @@ -144,16 +142,13 @@ class ApplicationListFragment : override fun onResume() { super.onResume() addDownloadProgressObserver() + if (listAdapter.currentList.isNotEmpty() && viewModel.hasAnyAppInstallStatusChanged( listAdapter.currentList ) ) { - /*mainActivityViewModel.authData.value?.let { - refreshData(it) - }*/ repostAuthObjects() } - } private fun addDownloadProgressObserver() { @@ -339,7 +334,6 @@ class ApplicationListFragment : override fun onPause() { binding.shimmerLayout.stopShimmer() -// mainActivityViewModel.downloadList.removeObservers(viewLifecycleOwner) super.onPause() } diff --git a/app/src/main/java/foundation/e/apps/manager/database/DatabaseRepository.kt b/app/src/main/java/foundation/e/apps/manager/database/DatabaseRepository.kt index 6c79d2450..6344a6c75 100644 --- a/app/src/main/java/foundation/e/apps/manager/database/DatabaseRepository.kt +++ b/app/src/main/java/foundation/e/apps/manager/database/DatabaseRepository.kt @@ -6,7 +6,6 @@ import foundation.e.apps.OpenForTesting import foundation.e.apps.manager.database.fusedDownload.FusedDownload import foundation.e.apps.manager.database.fusedDownload.FusedDownloadDAO import kotlinx.coroutines.flow.Flow -import timber.log.Timber import javax.inject.Inject import javax.inject.Singleton @@ -29,7 +28,6 @@ class DatabaseRepository @Inject constructor( } suspend fun updateDownload(fusedDownload: FusedDownload) { - Timber.d("### fusedownload updated: ${fusedDownload.name + ": " + fusedDownload.status}") fusedDownloadDAO.updateDownload(fusedDownload) } diff --git a/app/src/main/java/foundation/e/apps/search/SearchFragment.kt b/app/src/main/java/foundation/e/apps/search/SearchFragment.kt index 831076436..176c6ea36 100644 --- a/app/src/main/java/foundation/e/apps/search/SearchFragment.kt +++ b/app/src/main/java/foundation/e/apps/search/SearchFragment.kt @@ -34,7 +34,6 @@ import androidx.cursoradapter.widget.CursorAdapter import androidx.cursoradapter.widget.SimpleCursorAdapter import androidx.fragment.app.activityViewModels import androidx.fragment.app.viewModels -import androidx.lifecycle.distinctUntilChanged import androidx.lifecycle.lifecycleScope import androidx.navigation.fragment.findNavController import androidx.recyclerview.widget.LinearLayoutManager @@ -54,6 +53,7 @@ import foundation.e.apps.application.subFrags.ApplicationDialogFragment import foundation.e.apps.applicationlist.ApplicationListRVAdapter import foundation.e.apps.databinding.FragmentSearchBinding import foundation.e.apps.login.AuthObject +import foundation.e.apps.manager.database.fusedDownload.FusedDownload import foundation.e.apps.manager.download.data.DownloadProgress import foundation.e.apps.manager.pkg.PkgManagerModule import foundation.e.apps.utils.enums.Status @@ -61,7 +61,6 @@ import foundation.e.apps.utils.exceptions.GPlayLoginException import foundation.e.apps.utils.modules.PWAManagerModule import foundation.e.apps.utils.parentFragment.TimeoutFragment import kotlinx.coroutines.launch -import timber.log.Timber import javax.inject.Inject @AndroidEntryPoint @@ -251,16 +250,23 @@ class SearchFragment : private fun observeDownloadList(applicationListRVAdapter: ApplicationListRVAdapter) { mainActivityViewModel.downloadList.removeObservers(viewLifecycleOwner) - mainActivityViewModel.downloadList.observe(viewLifecycleOwner) { list -> - val searchList = - searchViewModel.searchResult.value?.data?.first?.toMutableList() ?: emptyList() - searchList.let { - mainActivityViewModel.updateStatusOfFusedApps(searchList, list) - updateSearchResult(applicationListRVAdapter, ResultSupreme.Success(Pair(it, true))) - } + mainActivityViewModel.downloadList.observe(viewLifecycleOwner) { fusedDownloadList -> + refreshUI(fusedDownloadList, applicationListRVAdapter) } } + private fun refreshUI( + fusedDownloadList: List, + applicationListRVAdapter: ApplicationListRVAdapter + ) { + val searchList = + searchViewModel.searchResult.value?.data?.first?.toMutableList() ?: emptyList() + + val hasMoreDataToLoad = searchViewModel.searchResult.value?.data?.second == true + mainActivityViewModel.updateStatusOfFusedApps(searchList, fusedDownloadList) + updateSearchResult(applicationListRVAdapter, ResultSupreme.Success(Pair(searchList, hasMoreDataToLoad))) + } + override fun onTimeout( exception: Exception, predefinedDialog: AlertDialog.Builder @@ -330,7 +336,10 @@ class SearchFragment : addDownloadProgressObservers() if (shouldRefreshData()) { - repostAuthObjects() + if (binding.recyclerView.adapter is ApplicationListRVAdapter) { + val searchAdapter = binding.recyclerView.adapter as ApplicationListRVAdapter + observeDownloadList(searchAdapter) + } } if (searchText.isEmpty() && (recyclerView?.adapter as ApplicationListRVAdapter).currentList.isEmpty()) { @@ -347,9 +356,7 @@ class SearchFragment : } private fun shouldRefreshData() = - searchText.isNotEmpty() && recyclerView?.adapter != null && searchViewModel.hasAnyAppInstallStatusChanged( - (recyclerView?.adapter as ApplicationListRVAdapter).currentList - ) + searchText.isNotEmpty() && recyclerView?.adapter != null override fun onPause() { binding.shimmerLayout.stopShimmer() diff --git a/app/src/test/java/foundation/e/apps/FusedApiImplTest.kt b/app/src/test/java/foundation/e/apps/FusedApiImplTest.kt index 2ced7456a..ac6c7281d 100644 --- a/app/src/test/java/foundation/e/apps/FusedApiImplTest.kt +++ b/app/src/test/java/foundation/e/apps/FusedApiImplTest.kt @@ -124,12 +124,14 @@ class FusedApiImplTest { status = Status.UNAVAILABLE, name = "Demo One", package_name = "foundation.e.demoone" - ), FusedApp( + ), + FusedApp( _id = "112", status = Status.INSTALLED, name = "Demo Two", package_name = "foundation.e.demotwo" - ), FusedApp( + ), + FusedApp( _id = "113", status = Status.UNAVAILABLE, name = "Demo Three", @@ -156,12 +158,14 @@ class FusedApiImplTest { status = Status.UNAVAILABLE, name = "Demo One", package_name = "foundation.e.demoone" - ), FusedApp( + ), + FusedApp( _id = "112", status = Status.INSTALLED, name = "Demo Two", package_name = "foundation.e.demotwo" - ), FusedApp( + ), + FusedApp( _id = "113", status = Status.UNAVAILABLE, name = "Demo Three", @@ -175,12 +179,14 @@ class FusedApiImplTest { status = Status.UNAVAILABLE, name = "Demo One", package_name = "foundation.e.demoone" - ), FusedApp( + ), + FusedApp( _id = "112", status = Status.UNAVAILABLE, name = "Demo Two", package_name = "foundation.e.demotwo" - ), FusedApp( + ), + FusedApp( _id = "113", status = Status.UNAVAILABLE, name = "Demo Three", @@ -201,13 +207,15 @@ class FusedApiImplTest { name = "Demo One", package_name = "foundation.e.demoone", latest_version_code = 123 - ), FusedApp( + ), + FusedApp( _id = "112", status = Status.INSTALLED, name = "Demo Two", package_name = "foundation.e.demotwo", latest_version_code = 123 - ), FusedApp( + ), + FusedApp( _id = "113", status = Status.UNAVAILABLE, name = "Demo Three", @@ -242,13 +250,15 @@ class FusedApiImplTest { name = "Demo One", package_name = "foundation.e.demoone", latest_version_code = 123 - ), FusedApp( + ), + FusedApp( _id = "112", status = Status.INSTALLED, name = "Demo Two", package_name = "foundation.e.demotwo", latest_version_code = 123 - ), FusedApp( + ), + FusedApp( _id = "113", status = Status.UNAVAILABLE, name = "Demo Three", @@ -283,13 +293,15 @@ class FusedApiImplTest { name = "Demo One", package_name = "foundation.e.demoone", latest_version_code = 123 - ), FusedApp( + ), + FusedApp( _id = "112", status = Status.INSTALLED, name = "Demo Two", package_name = "foundation.e.demotwo", latest_version_code = 123 - ), FusedApp( + ), + FusedApp( _id = "113", status = Status.UNAVAILABLE, name = "Demo Three", @@ -324,13 +336,15 @@ class FusedApiImplTest { name = "Demo One", package_name = "foundation.e.demoone", latest_version_code = 123 - ), FusedApp( + ), + FusedApp( _id = "112", status = Status.INSTALLED, name = "Demo Two", package_name = "foundation.e.demotwo", latest_version_code = 123 - ), FusedApp( + ), + FusedApp( _id = "113", status = Status.UNAVAILABLE, name = "Demo Three", @@ -346,13 +360,15 @@ class FusedApiImplTest { name = "Demo One", package_name = "foundation.e.demoone", latest_version_code = 123 - ), FusedApp( + ), + FusedApp( _id = "112", status = Status.UNAVAILABLE, name = "Demo Two", package_name = "foundation.e.demotwo", latest_version_code = 123 - ), FusedApp( + ), + FusedApp( _id = "113", status = Status.UNAVAILABLE, name = "Demo Three", @@ -608,7 +624,7 @@ class FusedApiImplTest { val categoryListResponse = fusedAPIImpl.getCategoriesList(Category.Type.APPLICATION, AUTH_DATA) - + assertEquals("getCategory", 3, categoryListResponse.first.size) } @@ -719,13 +735,15 @@ class FusedApiImplTest { name = "Demo One", package_name = "foundation.e.demoone", latest_version_code = 123 - ), FusedApp( + ), + FusedApp( _id = "112", status = Status.UNAVAILABLE, name = "Demo Two", package_name = "foundation.e.demotwo", latest_version_code = 123 - ), FusedApp( + ), + FusedApp( _id = "113", status = Status.UNAVAILABLE, name = "Demo Three", @@ -806,13 +824,15 @@ class FusedApiImplTest { name = "Demo One", package_name = "foundation.e.demoone", latest_version_code = 123 - ), FusedApp( + ), + FusedApp( _id = "112", status = Status.UNAVAILABLE, name = "Demo Two", package_name = "foundation.e.demotwo", latest_version_code = 123 - ), FusedApp( + ), + FusedApp( _id = "113", status = Status.UNAVAILABLE, name = "Demo Three", -- GitLab