Loading app/src/main/java/foundation/e/apps/data/fused/ApplicationApi.kt +4 −4 Original line number Diff line number Diff line Loading @@ -13,7 +13,7 @@ import foundation.e.apps.data.enums.ResultStatus import foundation.e.apps.data.enums.Status import foundation.e.apps.data.fused.data.Application import foundation.e.apps.data.fused.data.Category import foundation.e.apps.data.fused.data.FusedHome import foundation.e.apps.data.fused.data.Home import foundation.e.apps.data.fused.utils.CategoryType import foundation.e.apps.data.fusedDownload.models.FusedDownload import retrofit2.Response Loading @@ -31,7 +31,7 @@ interface ApplicationApi { suspend fun getHomeScreenData( authData: AuthData, ): LiveData<ResultSupreme<List<FusedHome>>> ): LiveData<ResultSupreme<List<Home>>> /* * Return three elements from the function. Loading Loading @@ -145,8 +145,8 @@ interface ApplicationApi { * @return true, if any change is found, otherwise false */ fun isHomeDataUpdated( newHomeData: List<FusedHome>, oldHomeData: List<FusedHome> newHomeData: List<Home>, oldHomeData: List<Home> ): Boolean /** Loading app/src/main/java/foundation/e/apps/data/fused/ApplicationApiImpl.kt +30 −30 Original line number Diff line number Diff line Loading @@ -36,7 +36,7 @@ import foundation.e.apps.data.ResultSupreme import foundation.e.apps.data.cleanapk.CleanApkDownloadInfoFetcher import foundation.e.apps.data.cleanapk.data.app.Application as CleanApkApplication import foundation.e.apps.data.cleanapk.data.categories.Categories import foundation.e.apps.data.cleanapk.data.home.Home import foundation.e.apps.data.cleanapk.data.home.Home as CleanApkHome import foundation.e.apps.data.cleanapk.data.home.HomeScreen import foundation.e.apps.data.cleanapk.data.search.Search import foundation.e.apps.data.cleanapk.repositories.CleanApkRepository Loading @@ -53,7 +53,7 @@ import foundation.e.apps.data.fused.ApplicationApi.Companion.APP_TYPE_OPEN import foundation.e.apps.data.fused.ApplicationApi.Companion.APP_TYPE_PWA import foundation.e.apps.data.fused.data.Application import foundation.e.apps.data.fused.data.Category import foundation.e.apps.data.fused.data.FusedHome import foundation.e.apps.data.fused.data.Home import foundation.e.apps.data.fused.data.Ratings import foundation.e.apps.data.fused.utils.CategoryType import foundation.e.apps.data.fused.utils.CategoryUtils Loading @@ -78,7 +78,7 @@ import javax.inject.Inject import javax.inject.Named import javax.inject.Singleton typealias FusedHomeDeferred = Deferred<ResultSupreme<List<FusedHome>>> typealias FusedHomeDeferred = Deferred<ResultSupreme<List<Home>>> @Singleton class ApplicationApiImpl @Inject constructor( Loading Loading @@ -109,9 +109,9 @@ class ApplicationApiImpl @Inject constructor( override suspend fun getHomeScreenData( authData: AuthData, ): LiveData<ResultSupreme<List<FusedHome>>> { ): LiveData<ResultSupreme<List<Home>>> { val list = mutableListOf<FusedHome>() val list = mutableListOf<Home>() var resultGplay: FusedHomeDeferred? = null var resultOpenSource: FusedHomeDeferred? = null var resultPWA: FusedHomeDeferred? = null Loading Loading @@ -145,13 +145,13 @@ class ApplicationApiImpl @Inject constructor( } private suspend fun loadHomeData( priorList: MutableList<FusedHome>, priorList: MutableList<Home>, source: Source, authData: AuthData, ): ResultSupreme<List<FusedHome>> { ): ResultSupreme<List<Home>> { val result = when (source) { Source.GPLAY -> handleNetworkResult<List<FusedHome>> { Source.GPLAY -> handleNetworkResult<List<Home>> { priorList.addAll(fetchGPlayHome(authData)) priorList } Loading Loading @@ -1067,8 +1067,8 @@ class ApplicationApiImpl @Inject constructor( * Home screen-related internal functions */ private suspend fun generateCleanAPKHome(home: Home, appType: String): List<FusedHome> { val list = mutableListOf<FusedHome>() private suspend fun generateCleanAPKHome(home: CleanApkHome, appType: String): List<Home> { val list = mutableListOf<Home>() val headings = if (appType == APP_TYPE_OPEN) { mapOf( "top_updated_apps" to context.getString(R.string.top_updated_apps), Loading @@ -1093,7 +1093,7 @@ class ApplicationApiImpl @Inject constructor( it.updateType() it.updateFilterLevel(null) } list.add(FusedHome(value, home.top_updated_apps)) list.add(Home(value, home.top_updated_apps)) } } Loading @@ -1104,7 +1104,7 @@ class ApplicationApiImpl @Inject constructor( it.updateType() it.updateFilterLevel(null) } list.add(FusedHome(value, home.top_updated_games)) list.add(Home(value, home.top_updated_games)) } } Loading @@ -1115,7 +1115,7 @@ class ApplicationApiImpl @Inject constructor( it.updateType() it.updateFilterLevel(null) } list.add(FusedHome(value, home.popular_apps)) list.add(Home(value, home.popular_apps)) } } Loading @@ -1126,7 +1126,7 @@ class ApplicationApiImpl @Inject constructor( it.updateType() it.updateFilterLevel(null) } list.add(FusedHome(value, home.popular_games)) list.add(Home(value, home.popular_games)) } } Loading @@ -1137,7 +1137,7 @@ class ApplicationApiImpl @Inject constructor( it.updateType() it.updateFilterLevel(null) } list.add(FusedHome(value, home.popular_apps_in_last_24_hours)) list.add(Home(value, home.popular_apps_in_last_24_hours)) } } Loading @@ -1148,7 +1148,7 @@ class ApplicationApiImpl @Inject constructor( it.updateType() it.updateFilterLevel(null) } list.add(FusedHome(value, home.popular_games_in_last_24_hours)) list.add(Home(value, home.popular_games_in_last_24_hours)) } } Loading @@ -1159,7 +1159,7 @@ class ApplicationApiImpl @Inject constructor( it.updateType() it.updateFilterLevel(null) } list.add(FusedHome(value, home.discover)) list.add(Home(value, home.discover)) } } } Loading @@ -1170,8 +1170,8 @@ class ApplicationApiImpl @Inject constructor( } } private suspend fun fetchGPlayHome(authData: AuthData): List<FusedHome> { val list = mutableListOf<FusedHome>() private suspend fun fetchGPlayHome(authData: AuthData): List<Home> { val list = mutableListOf<Home>() val gplayHomeData = gplayRepository.getHomeScreenData() as Map<String, List<App>> gplayHomeData.map { val fusedApps = it.value.map { app -> Loading @@ -1179,7 +1179,7 @@ class ApplicationApiImpl @Inject constructor( updateFilterLevel(authData) } } list.add(FusedHome(it.key, fusedApps)) list.add(Home(it.key, fusedApps)) } handleLimitedResult(list) Loading @@ -1188,8 +1188,8 @@ class ApplicationApiImpl @Inject constructor( return list } private fun handleLimitedResult(fusedHomeList: List<FusedHome>) { val gplayHomes = fusedHomeList.filter { fusedHome -> fusedHome.source.isEmpty() } private fun handleLimitedResult(homeList: List<Home>) { val gplayHomes = homeList.filter { fusedHome -> fusedHome.source.isEmpty() } val hasGplayLimitedResult = gplayHomes.any { fusedHome -> fusedHome.list.size < THRESHOLD_LIMITED_RESULT_HOME_PAGE } if (hasGplayLimitedResult) { Timber.w("Limited result is found for homepage...") Loading Loading @@ -1288,8 +1288,8 @@ class ApplicationApiImpl @Inject constructor( * @return true, if any change is found, otherwise false */ override fun isHomeDataUpdated( newHomeData: List<FusedHome>, oldHomeData: List<FusedHome> newHomeData: List<Home>, oldHomeData: List<Home> ): Boolean { if (newHomeData.size != oldHomeData.size) { return true Loading @@ -1305,17 +1305,17 @@ class ApplicationApiImpl @Inject constructor( } private fun areFusedAppsUpdated( oldFusedHome: FusedHome, newFusedHome: FusedHome, oldHome: Home, newHome: Home, ): Boolean { val fusedAppDiffUtil = HomeChildFusedAppDiffUtil() if (oldFusedHome.list.size != newFusedHome.list.size) { if (oldHome.list.size != newHome.list.size) { return true } oldFusedHome.list.forEach { oldFusedApp -> val indexOfOldFusedApp = oldFusedHome.list.indexOf(oldFusedApp) val fusedApp = newFusedHome.list[indexOfOldFusedApp] oldHome.list.forEach { oldFusedApp -> val indexOfOldFusedApp = oldHome.list.indexOf(oldFusedApp) val fusedApp = newHome.list[indexOfOldFusedApp] if (!fusedAppDiffUtil.areContentsTheSame(oldFusedApp, fusedApp)) { return true } Loading app/src/main/java/foundation/e/apps/data/fused/FusedAPIRepository.kt +4 −4 Original line number Diff line number Diff line Loading @@ -30,7 +30,7 @@ import foundation.e.apps.data.enums.Source import foundation.e.apps.data.enums.Status import foundation.e.apps.data.fused.data.Application import foundation.e.apps.data.fused.data.Category import foundation.e.apps.data.fused.data.FusedHome import foundation.e.apps.data.fused.data.Home import foundation.e.apps.data.fused.utils.CategoryType import foundation.e.apps.data.fusedDownload.models.FusedDownload import javax.inject.Inject Loading @@ -39,7 +39,7 @@ import javax.inject.Singleton @Singleton class FusedAPIRepository @Inject constructor(private val applicationAPIImpl: ApplicationApi) { suspend fun getHomeScreenData(authData: AuthData): LiveData<ResultSupreme<List<FusedHome>>> { suspend fun getHomeScreenData(authData: AuthData): LiveData<ResultSupreme<List<Home>>> { return applicationAPIImpl.getHomeScreenData(authData) } Loading Loading @@ -136,8 +136,8 @@ class FusedAPIRepository @Inject constructor(private val applicationAPIImpl: App } fun isHomeDataUpdated( newHomeData: List<FusedHome>, oldHomeData: List<FusedHome> newHomeData: List<Home>, oldHomeData: List<Home> ) = applicationAPIImpl.isHomeDataUpdated(newHomeData, oldHomeData) fun isAnyFusedAppUpdated( Loading app/src/main/java/foundation/e/apps/data/fused/data/FusedHome.kt→app/src/main/java/foundation/e/apps/data/fused/data/Home.kt +1 −1 Original line number Diff line number Diff line Loading @@ -18,7 +18,7 @@ package foundation.e.apps.data.fused.data data class FusedHome( data class Home( val title: String = String(), val list: List<Application> = emptyList(), var source: String = String() Loading app/src/main/java/foundation/e/apps/ui/home/HomeFragment.kt +3 −3 Original line number Diff line number Diff line Loading @@ -33,7 +33,7 @@ import foundation.e.apps.data.ResultSupreme import foundation.e.apps.data.enums.Status import foundation.e.apps.data.fused.ApplicationInstaller import foundation.e.apps.data.fused.data.Application import foundation.e.apps.data.fused.data.FusedHome import foundation.e.apps.data.fused.data.Home import foundation.e.apps.data.login.AuthObject import foundation.e.apps.data.login.exceptions.GPlayException import foundation.e.apps.data.login.exceptions.GPlayLoginException Loading Loading @@ -139,10 +139,10 @@ class HomeFragment : TimeoutFragment(R.layout.fragment_home), ApplicationInstall ).show(childFragmentManager, "HomeFragment") } private fun isHomeDataUpdated(homeScreenResult: ResultSupreme<List<FusedHome>>) = private fun isHomeDataUpdated(homeScreenResult: ResultSupreme<List<Home>>) = homeParentRVAdapter?.currentList?.isEmpty() == true || homeViewModel.isHomeDataUpdated( homeScreenResult.data!!, homeParentRVAdapter?.currentList as List<FusedHome> homeParentRVAdapter?.currentList as List<Home> ) override fun onTimeout( Loading Loading
app/src/main/java/foundation/e/apps/data/fused/ApplicationApi.kt +4 −4 Original line number Diff line number Diff line Loading @@ -13,7 +13,7 @@ import foundation.e.apps.data.enums.ResultStatus import foundation.e.apps.data.enums.Status import foundation.e.apps.data.fused.data.Application import foundation.e.apps.data.fused.data.Category import foundation.e.apps.data.fused.data.FusedHome import foundation.e.apps.data.fused.data.Home import foundation.e.apps.data.fused.utils.CategoryType import foundation.e.apps.data.fusedDownload.models.FusedDownload import retrofit2.Response Loading @@ -31,7 +31,7 @@ interface ApplicationApi { suspend fun getHomeScreenData( authData: AuthData, ): LiveData<ResultSupreme<List<FusedHome>>> ): LiveData<ResultSupreme<List<Home>>> /* * Return three elements from the function. Loading Loading @@ -145,8 +145,8 @@ interface ApplicationApi { * @return true, if any change is found, otherwise false */ fun isHomeDataUpdated( newHomeData: List<FusedHome>, oldHomeData: List<FusedHome> newHomeData: List<Home>, oldHomeData: List<Home> ): Boolean /** Loading
app/src/main/java/foundation/e/apps/data/fused/ApplicationApiImpl.kt +30 −30 Original line number Diff line number Diff line Loading @@ -36,7 +36,7 @@ import foundation.e.apps.data.ResultSupreme import foundation.e.apps.data.cleanapk.CleanApkDownloadInfoFetcher import foundation.e.apps.data.cleanapk.data.app.Application as CleanApkApplication import foundation.e.apps.data.cleanapk.data.categories.Categories import foundation.e.apps.data.cleanapk.data.home.Home import foundation.e.apps.data.cleanapk.data.home.Home as CleanApkHome import foundation.e.apps.data.cleanapk.data.home.HomeScreen import foundation.e.apps.data.cleanapk.data.search.Search import foundation.e.apps.data.cleanapk.repositories.CleanApkRepository Loading @@ -53,7 +53,7 @@ import foundation.e.apps.data.fused.ApplicationApi.Companion.APP_TYPE_OPEN import foundation.e.apps.data.fused.ApplicationApi.Companion.APP_TYPE_PWA import foundation.e.apps.data.fused.data.Application import foundation.e.apps.data.fused.data.Category import foundation.e.apps.data.fused.data.FusedHome import foundation.e.apps.data.fused.data.Home import foundation.e.apps.data.fused.data.Ratings import foundation.e.apps.data.fused.utils.CategoryType import foundation.e.apps.data.fused.utils.CategoryUtils Loading @@ -78,7 +78,7 @@ import javax.inject.Inject import javax.inject.Named import javax.inject.Singleton typealias FusedHomeDeferred = Deferred<ResultSupreme<List<FusedHome>>> typealias FusedHomeDeferred = Deferred<ResultSupreme<List<Home>>> @Singleton class ApplicationApiImpl @Inject constructor( Loading Loading @@ -109,9 +109,9 @@ class ApplicationApiImpl @Inject constructor( override suspend fun getHomeScreenData( authData: AuthData, ): LiveData<ResultSupreme<List<FusedHome>>> { ): LiveData<ResultSupreme<List<Home>>> { val list = mutableListOf<FusedHome>() val list = mutableListOf<Home>() var resultGplay: FusedHomeDeferred? = null var resultOpenSource: FusedHomeDeferred? = null var resultPWA: FusedHomeDeferred? = null Loading Loading @@ -145,13 +145,13 @@ class ApplicationApiImpl @Inject constructor( } private suspend fun loadHomeData( priorList: MutableList<FusedHome>, priorList: MutableList<Home>, source: Source, authData: AuthData, ): ResultSupreme<List<FusedHome>> { ): ResultSupreme<List<Home>> { val result = when (source) { Source.GPLAY -> handleNetworkResult<List<FusedHome>> { Source.GPLAY -> handleNetworkResult<List<Home>> { priorList.addAll(fetchGPlayHome(authData)) priorList } Loading Loading @@ -1067,8 +1067,8 @@ class ApplicationApiImpl @Inject constructor( * Home screen-related internal functions */ private suspend fun generateCleanAPKHome(home: Home, appType: String): List<FusedHome> { val list = mutableListOf<FusedHome>() private suspend fun generateCleanAPKHome(home: CleanApkHome, appType: String): List<Home> { val list = mutableListOf<Home>() val headings = if (appType == APP_TYPE_OPEN) { mapOf( "top_updated_apps" to context.getString(R.string.top_updated_apps), Loading @@ -1093,7 +1093,7 @@ class ApplicationApiImpl @Inject constructor( it.updateType() it.updateFilterLevel(null) } list.add(FusedHome(value, home.top_updated_apps)) list.add(Home(value, home.top_updated_apps)) } } Loading @@ -1104,7 +1104,7 @@ class ApplicationApiImpl @Inject constructor( it.updateType() it.updateFilterLevel(null) } list.add(FusedHome(value, home.top_updated_games)) list.add(Home(value, home.top_updated_games)) } } Loading @@ -1115,7 +1115,7 @@ class ApplicationApiImpl @Inject constructor( it.updateType() it.updateFilterLevel(null) } list.add(FusedHome(value, home.popular_apps)) list.add(Home(value, home.popular_apps)) } } Loading @@ -1126,7 +1126,7 @@ class ApplicationApiImpl @Inject constructor( it.updateType() it.updateFilterLevel(null) } list.add(FusedHome(value, home.popular_games)) list.add(Home(value, home.popular_games)) } } Loading @@ -1137,7 +1137,7 @@ class ApplicationApiImpl @Inject constructor( it.updateType() it.updateFilterLevel(null) } list.add(FusedHome(value, home.popular_apps_in_last_24_hours)) list.add(Home(value, home.popular_apps_in_last_24_hours)) } } Loading @@ -1148,7 +1148,7 @@ class ApplicationApiImpl @Inject constructor( it.updateType() it.updateFilterLevel(null) } list.add(FusedHome(value, home.popular_games_in_last_24_hours)) list.add(Home(value, home.popular_games_in_last_24_hours)) } } Loading @@ -1159,7 +1159,7 @@ class ApplicationApiImpl @Inject constructor( it.updateType() it.updateFilterLevel(null) } list.add(FusedHome(value, home.discover)) list.add(Home(value, home.discover)) } } } Loading @@ -1170,8 +1170,8 @@ class ApplicationApiImpl @Inject constructor( } } private suspend fun fetchGPlayHome(authData: AuthData): List<FusedHome> { val list = mutableListOf<FusedHome>() private suspend fun fetchGPlayHome(authData: AuthData): List<Home> { val list = mutableListOf<Home>() val gplayHomeData = gplayRepository.getHomeScreenData() as Map<String, List<App>> gplayHomeData.map { val fusedApps = it.value.map { app -> Loading @@ -1179,7 +1179,7 @@ class ApplicationApiImpl @Inject constructor( updateFilterLevel(authData) } } list.add(FusedHome(it.key, fusedApps)) list.add(Home(it.key, fusedApps)) } handleLimitedResult(list) Loading @@ -1188,8 +1188,8 @@ class ApplicationApiImpl @Inject constructor( return list } private fun handleLimitedResult(fusedHomeList: List<FusedHome>) { val gplayHomes = fusedHomeList.filter { fusedHome -> fusedHome.source.isEmpty() } private fun handleLimitedResult(homeList: List<Home>) { val gplayHomes = homeList.filter { fusedHome -> fusedHome.source.isEmpty() } val hasGplayLimitedResult = gplayHomes.any { fusedHome -> fusedHome.list.size < THRESHOLD_LIMITED_RESULT_HOME_PAGE } if (hasGplayLimitedResult) { Timber.w("Limited result is found for homepage...") Loading Loading @@ -1288,8 +1288,8 @@ class ApplicationApiImpl @Inject constructor( * @return true, if any change is found, otherwise false */ override fun isHomeDataUpdated( newHomeData: List<FusedHome>, oldHomeData: List<FusedHome> newHomeData: List<Home>, oldHomeData: List<Home> ): Boolean { if (newHomeData.size != oldHomeData.size) { return true Loading @@ -1305,17 +1305,17 @@ class ApplicationApiImpl @Inject constructor( } private fun areFusedAppsUpdated( oldFusedHome: FusedHome, newFusedHome: FusedHome, oldHome: Home, newHome: Home, ): Boolean { val fusedAppDiffUtil = HomeChildFusedAppDiffUtil() if (oldFusedHome.list.size != newFusedHome.list.size) { if (oldHome.list.size != newHome.list.size) { return true } oldFusedHome.list.forEach { oldFusedApp -> val indexOfOldFusedApp = oldFusedHome.list.indexOf(oldFusedApp) val fusedApp = newFusedHome.list[indexOfOldFusedApp] oldHome.list.forEach { oldFusedApp -> val indexOfOldFusedApp = oldHome.list.indexOf(oldFusedApp) val fusedApp = newHome.list[indexOfOldFusedApp] if (!fusedAppDiffUtil.areContentsTheSame(oldFusedApp, fusedApp)) { return true } Loading
app/src/main/java/foundation/e/apps/data/fused/FusedAPIRepository.kt +4 −4 Original line number Diff line number Diff line Loading @@ -30,7 +30,7 @@ import foundation.e.apps.data.enums.Source import foundation.e.apps.data.enums.Status import foundation.e.apps.data.fused.data.Application import foundation.e.apps.data.fused.data.Category import foundation.e.apps.data.fused.data.FusedHome import foundation.e.apps.data.fused.data.Home import foundation.e.apps.data.fused.utils.CategoryType import foundation.e.apps.data.fusedDownload.models.FusedDownload import javax.inject.Inject Loading @@ -39,7 +39,7 @@ import javax.inject.Singleton @Singleton class FusedAPIRepository @Inject constructor(private val applicationAPIImpl: ApplicationApi) { suspend fun getHomeScreenData(authData: AuthData): LiveData<ResultSupreme<List<FusedHome>>> { suspend fun getHomeScreenData(authData: AuthData): LiveData<ResultSupreme<List<Home>>> { return applicationAPIImpl.getHomeScreenData(authData) } Loading Loading @@ -136,8 +136,8 @@ class FusedAPIRepository @Inject constructor(private val applicationAPIImpl: App } fun isHomeDataUpdated( newHomeData: List<FusedHome>, oldHomeData: List<FusedHome> newHomeData: List<Home>, oldHomeData: List<Home> ) = applicationAPIImpl.isHomeDataUpdated(newHomeData, oldHomeData) fun isAnyFusedAppUpdated( Loading
app/src/main/java/foundation/e/apps/data/fused/data/FusedHome.kt→app/src/main/java/foundation/e/apps/data/fused/data/Home.kt +1 −1 Original line number Diff line number Diff line Loading @@ -18,7 +18,7 @@ package foundation.e.apps.data.fused.data data class FusedHome( data class Home( val title: String = String(), val list: List<Application> = emptyList(), var source: String = String() Loading
app/src/main/java/foundation/e/apps/ui/home/HomeFragment.kt +3 −3 Original line number Diff line number Diff line Loading @@ -33,7 +33,7 @@ import foundation.e.apps.data.ResultSupreme import foundation.e.apps.data.enums.Status import foundation.e.apps.data.fused.ApplicationInstaller import foundation.e.apps.data.fused.data.Application import foundation.e.apps.data.fused.data.FusedHome import foundation.e.apps.data.fused.data.Home import foundation.e.apps.data.login.AuthObject import foundation.e.apps.data.login.exceptions.GPlayException import foundation.e.apps.data.login.exceptions.GPlayLoginException Loading Loading @@ -139,10 +139,10 @@ class HomeFragment : TimeoutFragment(R.layout.fragment_home), ApplicationInstall ).show(childFragmentManager, "HomeFragment") } private fun isHomeDataUpdated(homeScreenResult: ResultSupreme<List<FusedHome>>) = private fun isHomeDataUpdated(homeScreenResult: ResultSupreme<List<Home>>) = homeParentRVAdapter?.currentList?.isEmpty() == true || homeViewModel.isHomeDataUpdated( homeScreenResult.data!!, homeParentRVAdapter?.currentList as List<FusedHome> homeParentRVAdapter?.currentList as List<Home> ) override fun onTimeout( Loading