Loading app/src/main/java/foundation/e/apps/data/fused/FusedAPIRepository.kt +0 −5 Original line number Diff line number Diff line Loading @@ -135,11 +135,6 @@ class FusedAPIRepository @Inject constructor(private val fusedAPIImpl: FusedApi) return fusedAPIImpl.getFusedAppInstallationStatus(fusedApp) } fun isHomeDataUpdated( newHomeData: List<FusedHome>, oldHomeData: List<FusedHome> ) = fusedAPIImpl.isHomeDataUpdated(newHomeData, oldHomeData) fun isAnyFusedAppUpdated( newFusedApps: List<FusedApp>, oldFusedApps: List<FusedApp> Loading app/src/main/java/foundation/e/apps/data/fused/FusedApi.kt +0 −8 Original line number Diff line number Diff line Loading @@ -141,14 +141,6 @@ interface FusedApi { */ fun getFusedAppInstallationStatus(fusedApp: FusedApp): Status /** * @return true, if any change is found, otherwise false */ fun isHomeDataUpdated( newHomeData: List<FusedHome>, oldHomeData: List<FusedHome> ): Boolean /** * @return returns true if there is changes in data, otherwise false */ Loading app/src/main/java/foundation/e/apps/data/fused/FusedApiImpl.kt +1 −41 Original line number Diff line number Diff line Loading @@ -34,7 +34,6 @@ import dagger.hilt.android.qualifiers.ApplicationContext import foundation.e.apps.R import foundation.e.apps.data.ResultSupreme import foundation.e.apps.data.cleanapk.CleanApkDownloadInfoFetcher import foundation.e.apps.data.cleanapk.CleanApkRetrofit import foundation.e.apps.data.cleanapk.data.app.Application import foundation.e.apps.data.cleanapk.data.categories.Categories import foundation.e.apps.data.cleanapk.data.home.Home Loading @@ -59,9 +58,9 @@ import foundation.e.apps.data.fused.data.Ratings import foundation.e.apps.data.fused.utils.CategoryType import foundation.e.apps.data.fused.utils.CategoryUtils import foundation.e.apps.data.fusedDownload.models.FusedDownload import foundation.e.apps.data.playstore.PlayStoreRepository import foundation.e.apps.data.handleNetworkResult import foundation.e.apps.data.login.AuthObject import foundation.e.apps.data.playstore.PlayStoreRepository import foundation.e.apps.data.preference.PreferenceManagerModule import foundation.e.apps.install.pkg.PWAManagerModule import foundation.e.apps.install.pkg.PkgManagerModule Loading Loading @@ -1285,45 +1284,6 @@ class FusedApiImpl @Inject constructor( return list } /** * @return true, if any change is found, otherwise false */ override fun isHomeDataUpdated( newHomeData: List<FusedHome>, oldHomeData: List<FusedHome> ): Boolean { if (newHomeData.size != oldHomeData.size) { return true } oldHomeData.forEach { val fusedHome = newHomeData[oldHomeData.indexOf(it)] if (!it.title.contentEquals(fusedHome.title) || areFusedAppsUpdated(it, fusedHome)) { return true } } return false } private fun areFusedAppsUpdated( oldFusedHome: FusedHome, newFusedHome: FusedHome, ): Boolean { val fusedAppDiffUtil = HomeChildFusedAppDiffUtil() if (oldFusedHome.list.size != newFusedHome.list.size) { return true } oldFusedHome.list.forEach { oldFusedApp -> val indexOfOldFusedApp = oldFusedHome.list.indexOf(oldFusedApp) val fusedApp = newFusedHome.list[indexOfOldFusedApp] if (!fusedAppDiffUtil.areContentsTheSame(oldFusedApp, fusedApp)) { return true } } return false } /** * @return returns true if there is changes in data, otherwise false */ Loading app/src/main/java/foundation/e/apps/ui/home/HomeFragment.kt +0 −10 Original line number Diff line number Diff line Loading @@ -94,10 +94,6 @@ class HomeFragment : TimeoutFragment(R.layout.fragment_home), FusedAPIInterface return@observe } if (!isHomeDataUpdated(it)) { return@observe } homeParentRVAdapter?.setData(it.data!!) } } Loading Loading @@ -140,12 +136,6 @@ class HomeFragment : TimeoutFragment(R.layout.fragment_home), FusedAPIInterface ).show(childFragmentManager, "HomeFragment") } private fun isHomeDataUpdated(homeScreenResult: ResultSupreme<List<FusedHome>>) = homeParentRVAdapter?.currentList?.isEmpty() == true || homeViewModel.isHomeDataUpdated( homeScreenResult.data!!, homeParentRVAdapter?.currentList as List<FusedHome> ) override fun onTimeout( exception: Exception, predefinedDialog: AlertDialog.Builder Loading app/src/main/java/foundation/e/apps/ui/home/HomeViewModel.kt +51 −6 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package foundation.e.apps.ui.home import androidx.annotation.VisibleForTesting import androidx.lifecycle.LifecycleOwner import androidx.lifecycle.MutableLiveData import androidx.lifecycle.viewModelScope Loading @@ -30,6 +31,7 @@ import foundation.e.apps.data.fused.data.FusedHome import foundation.e.apps.data.login.AuthObject import foundation.e.apps.data.login.exceptions.CleanApkException import foundation.e.apps.data.login.exceptions.GPlayException import foundation.e.apps.ui.home.model.HomeChildFusedAppDiffUtil import foundation.e.apps.ui.parentFragment.LoadingViewModel import kotlinx.coroutines.launch import javax.inject.Inject Loading @@ -47,6 +49,8 @@ class HomeViewModel @Inject constructor( */ var homeScreenData: MutableLiveData<ResultSupreme<List<FusedHome>>> = MutableLiveData() var currentHomes: List<FusedHome>? = null fun loadData( authObjectList: List<AuthObject>, lifecycleOwner: LifecycleOwner, Loading @@ -72,9 +76,17 @@ class HomeViewModel @Inject constructor( ) { viewModelScope.launch { fusedAPIRepository.getHomeScreenData(authData).observe(lifecycleOwner) { homeScreenData.postValue(it) if (it.isSuccess()) return@observe if (it.isSuccess() && !hasAnyChange(it.data!!)) { this@HomeViewModel.currentHomes = it.data homeScreenData.postValue(ResultSupreme.Error("No change is found!")) return@observe } homeScreenData.postValue(it) if (it.isSuccess()) { return@observe } val exception = if (authData.aasToken.isNotBlank() || authData.authToken.isNotBlank()) Loading @@ -93,10 +105,43 @@ class HomeViewModel @Inject constructor( } } fun isHomeDataUpdated( newHomeData: List<FusedHome>, oldHomeData: List<FusedHome> ) = fusedAPIRepository.isHomeDataUpdated(newHomeData, oldHomeData) @VisibleForTesting fun hasAnyChange( newHomes: List<FusedHome>, ) = currentHomes.isNullOrEmpty() || newHomes.size != currentHomes!!.size || compareWithNewData(newHomes) private fun compareWithNewData(newHomes: List<FusedHome>): Boolean { currentHomes!!.forEach { val fusedHome = newHomes[currentHomes!!.indexOf(it)] if (!it.title.contentEquals(fusedHome.title) || areFusedAppsUpdated(it, fusedHome)) { return true } } return false } private fun areFusedAppsUpdated( oldHome: FusedHome, newHome: FusedHome, ) = oldHome.list.size != newHome.list.size || hasAppListsAnyChange(oldHome, newHome) private fun hasAppListsAnyChange( oldHome: FusedHome, newHome: FusedHome, ): Boolean { val fusedAppDiffUtil = HomeChildFusedAppDiffUtil() oldHome.list.forEach { oldFusedApp -> val indexOfOldFusedApp = oldHome.list.indexOf(oldFusedApp) val fusedApp = newHome.list[indexOfOldFusedApp] if (!fusedAppDiffUtil.areContentsTheSame(oldFusedApp, fusedApp)) { return true } } return false } fun isAnyAppInstallStatusChanged(currentList: List<FusedHome>?): Boolean { if (currentList == null) { Loading Loading
app/src/main/java/foundation/e/apps/data/fused/FusedAPIRepository.kt +0 −5 Original line number Diff line number Diff line Loading @@ -135,11 +135,6 @@ class FusedAPIRepository @Inject constructor(private val fusedAPIImpl: FusedApi) return fusedAPIImpl.getFusedAppInstallationStatus(fusedApp) } fun isHomeDataUpdated( newHomeData: List<FusedHome>, oldHomeData: List<FusedHome> ) = fusedAPIImpl.isHomeDataUpdated(newHomeData, oldHomeData) fun isAnyFusedAppUpdated( newFusedApps: List<FusedApp>, oldFusedApps: List<FusedApp> Loading
app/src/main/java/foundation/e/apps/data/fused/FusedApi.kt +0 −8 Original line number Diff line number Diff line Loading @@ -141,14 +141,6 @@ interface FusedApi { */ fun getFusedAppInstallationStatus(fusedApp: FusedApp): Status /** * @return true, if any change is found, otherwise false */ fun isHomeDataUpdated( newHomeData: List<FusedHome>, oldHomeData: List<FusedHome> ): Boolean /** * @return returns true if there is changes in data, otherwise false */ Loading
app/src/main/java/foundation/e/apps/data/fused/FusedApiImpl.kt +1 −41 Original line number Diff line number Diff line Loading @@ -34,7 +34,6 @@ import dagger.hilt.android.qualifiers.ApplicationContext import foundation.e.apps.R import foundation.e.apps.data.ResultSupreme import foundation.e.apps.data.cleanapk.CleanApkDownloadInfoFetcher import foundation.e.apps.data.cleanapk.CleanApkRetrofit import foundation.e.apps.data.cleanapk.data.app.Application import foundation.e.apps.data.cleanapk.data.categories.Categories import foundation.e.apps.data.cleanapk.data.home.Home Loading @@ -59,9 +58,9 @@ import foundation.e.apps.data.fused.data.Ratings import foundation.e.apps.data.fused.utils.CategoryType import foundation.e.apps.data.fused.utils.CategoryUtils import foundation.e.apps.data.fusedDownload.models.FusedDownload import foundation.e.apps.data.playstore.PlayStoreRepository import foundation.e.apps.data.handleNetworkResult import foundation.e.apps.data.login.AuthObject import foundation.e.apps.data.playstore.PlayStoreRepository import foundation.e.apps.data.preference.PreferenceManagerModule import foundation.e.apps.install.pkg.PWAManagerModule import foundation.e.apps.install.pkg.PkgManagerModule Loading Loading @@ -1285,45 +1284,6 @@ class FusedApiImpl @Inject constructor( return list } /** * @return true, if any change is found, otherwise false */ override fun isHomeDataUpdated( newHomeData: List<FusedHome>, oldHomeData: List<FusedHome> ): Boolean { if (newHomeData.size != oldHomeData.size) { return true } oldHomeData.forEach { val fusedHome = newHomeData[oldHomeData.indexOf(it)] if (!it.title.contentEquals(fusedHome.title) || areFusedAppsUpdated(it, fusedHome)) { return true } } return false } private fun areFusedAppsUpdated( oldFusedHome: FusedHome, newFusedHome: FusedHome, ): Boolean { val fusedAppDiffUtil = HomeChildFusedAppDiffUtil() if (oldFusedHome.list.size != newFusedHome.list.size) { return true } oldFusedHome.list.forEach { oldFusedApp -> val indexOfOldFusedApp = oldFusedHome.list.indexOf(oldFusedApp) val fusedApp = newFusedHome.list[indexOfOldFusedApp] if (!fusedAppDiffUtil.areContentsTheSame(oldFusedApp, fusedApp)) { return true } } return false } /** * @return returns true if there is changes in data, otherwise false */ Loading
app/src/main/java/foundation/e/apps/ui/home/HomeFragment.kt +0 −10 Original line number Diff line number Diff line Loading @@ -94,10 +94,6 @@ class HomeFragment : TimeoutFragment(R.layout.fragment_home), FusedAPIInterface return@observe } if (!isHomeDataUpdated(it)) { return@observe } homeParentRVAdapter?.setData(it.data!!) } } Loading Loading @@ -140,12 +136,6 @@ class HomeFragment : TimeoutFragment(R.layout.fragment_home), FusedAPIInterface ).show(childFragmentManager, "HomeFragment") } private fun isHomeDataUpdated(homeScreenResult: ResultSupreme<List<FusedHome>>) = homeParentRVAdapter?.currentList?.isEmpty() == true || homeViewModel.isHomeDataUpdated( homeScreenResult.data!!, homeParentRVAdapter?.currentList as List<FusedHome> ) override fun onTimeout( exception: Exception, predefinedDialog: AlertDialog.Builder Loading
app/src/main/java/foundation/e/apps/ui/home/HomeViewModel.kt +51 −6 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package foundation.e.apps.ui.home import androidx.annotation.VisibleForTesting import androidx.lifecycle.LifecycleOwner import androidx.lifecycle.MutableLiveData import androidx.lifecycle.viewModelScope Loading @@ -30,6 +31,7 @@ import foundation.e.apps.data.fused.data.FusedHome import foundation.e.apps.data.login.AuthObject import foundation.e.apps.data.login.exceptions.CleanApkException import foundation.e.apps.data.login.exceptions.GPlayException import foundation.e.apps.ui.home.model.HomeChildFusedAppDiffUtil import foundation.e.apps.ui.parentFragment.LoadingViewModel import kotlinx.coroutines.launch import javax.inject.Inject Loading @@ -47,6 +49,8 @@ class HomeViewModel @Inject constructor( */ var homeScreenData: MutableLiveData<ResultSupreme<List<FusedHome>>> = MutableLiveData() var currentHomes: List<FusedHome>? = null fun loadData( authObjectList: List<AuthObject>, lifecycleOwner: LifecycleOwner, Loading @@ -72,9 +76,17 @@ class HomeViewModel @Inject constructor( ) { viewModelScope.launch { fusedAPIRepository.getHomeScreenData(authData).observe(lifecycleOwner) { homeScreenData.postValue(it) if (it.isSuccess()) return@observe if (it.isSuccess() && !hasAnyChange(it.data!!)) { this@HomeViewModel.currentHomes = it.data homeScreenData.postValue(ResultSupreme.Error("No change is found!")) return@observe } homeScreenData.postValue(it) if (it.isSuccess()) { return@observe } val exception = if (authData.aasToken.isNotBlank() || authData.authToken.isNotBlank()) Loading @@ -93,10 +105,43 @@ class HomeViewModel @Inject constructor( } } fun isHomeDataUpdated( newHomeData: List<FusedHome>, oldHomeData: List<FusedHome> ) = fusedAPIRepository.isHomeDataUpdated(newHomeData, oldHomeData) @VisibleForTesting fun hasAnyChange( newHomes: List<FusedHome>, ) = currentHomes.isNullOrEmpty() || newHomes.size != currentHomes!!.size || compareWithNewData(newHomes) private fun compareWithNewData(newHomes: List<FusedHome>): Boolean { currentHomes!!.forEach { val fusedHome = newHomes[currentHomes!!.indexOf(it)] if (!it.title.contentEquals(fusedHome.title) || areFusedAppsUpdated(it, fusedHome)) { return true } } return false } private fun areFusedAppsUpdated( oldHome: FusedHome, newHome: FusedHome, ) = oldHome.list.size != newHome.list.size || hasAppListsAnyChange(oldHome, newHome) private fun hasAppListsAnyChange( oldHome: FusedHome, newHome: FusedHome, ): Boolean { val fusedAppDiffUtil = HomeChildFusedAppDiffUtil() oldHome.list.forEach { oldFusedApp -> val indexOfOldFusedApp = oldHome.list.indexOf(oldFusedApp) val fusedApp = newHome.list[indexOfOldFusedApp] if (!fusedAppDiffUtil.areContentsTheSame(oldFusedApp, fusedApp)) { return true } } return false } fun isAnyAppInstallStatusChanged(currentList: List<FusedHome>?): Boolean { if (currentList == null) { Loading