Loading app/src/main/java/foundation/e/apps/data/AppSourcesContainer.kt 0 → 100644 +33 −0 Original line number Original line Diff line number Diff line /* * Copyright MURENA SAS 2024 * Apps Quickly and easily install Android apps onto your device! * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <https://www.gnu.org/licenses/>. * */ package foundation.e.apps.data import foundation.e.apps.data.cleanapk.repositories.CleanApkRepository import foundation.e.apps.data.playstore.PlayStoreRepository import javax.inject.Inject import javax.inject.Named import javax.inject.Singleton @Singleton class AppSourcesContainer @Inject constructor( @Named("gplayRepository") val gplayRepo: PlayStoreRepository, @Named("cleanApkAppsRepository") val cleanApkAppsRepo: CleanApkRepository, @Named("cleanApkPWARepository") val cleanApkPWARepo: CleanApkRepository ) app/src/main/java/foundation/e/apps/data/application/apps/AppsApiImpl.kt +11 −13 Original line number Original line Diff line number Diff line Loading @@ -22,30 +22,27 @@ import android.content.Context import com.aurora.gplayapi.data.models.App import com.aurora.gplayapi.data.models.App import com.aurora.gplayapi.data.models.AuthData import com.aurora.gplayapi.data.models.AuthData import dagger.hilt.android.qualifiers.ApplicationContext import dagger.hilt.android.qualifiers.ApplicationContext import foundation.e.apps.data.AppSourcesContainer import foundation.e.apps.data.application.ApplicationDataManager import foundation.e.apps.data.application.ApplicationDataManager import foundation.e.apps.data.application.data.Application import foundation.e.apps.data.application.data.Application import foundation.e.apps.data.cleanapk.data.app.Application as CleanApkApplication import foundation.e.apps.data.application.utils.toApplication import foundation.e.apps.data.application.utils.toApplication import foundation.e.apps.data.cleanapk.data.search.Search import foundation.e.apps.data.cleanapk.data.search.Search import foundation.e.apps.data.cleanapk.repositories.CleanApkRepository import foundation.e.apps.data.enums.FilterLevel import foundation.e.apps.data.enums.FilterLevel import foundation.e.apps.data.enums.Origin import foundation.e.apps.data.enums.Origin import foundation.e.apps.data.enums.ResultStatus import foundation.e.apps.data.enums.ResultStatus import foundation.e.apps.data.enums.Status import foundation.e.apps.data.enums.Status import foundation.e.apps.data.enums.isUnFiltered import foundation.e.apps.data.enums.isUnFiltered import foundation.e.apps.data.handleNetworkResult import foundation.e.apps.data.handleNetworkResult import foundation.e.apps.data.playstore.PlayStoreRepository import foundation.e.apps.data.preference.AppLoungePreference import foundation.e.apps.data.preference.AppLoungePreference import foundation.e.apps.ui.applicationlist.ApplicationDiffUtil import foundation.e.apps.ui.applicationlist.ApplicationDiffUtil import retrofit2.Response import retrofit2.Response import javax.inject.Inject import javax.inject.Inject import javax.inject.Named import foundation.e.apps.data.cleanapk.data.app.Application as CleanApkApplication class AppsApiImpl @Inject constructor( class AppsApiImpl @Inject constructor( @ApplicationContext private val context: Context, @ApplicationContext private val context: Context, private val appLoungePreference: AppLoungePreference, private val appLoungePreference: AppLoungePreference, @Named("gplayRepository") private val gplayRepository: PlayStoreRepository, private val appSources: AppSourcesContainer, @Named("cleanApkAppsRepository") private val cleanApkAppsRepository: CleanApkRepository, private val applicationDataManager: ApplicationDataManager private val applicationDataManager: ApplicationDataManager ) : AppsApi { ) : AppsApi { Loading @@ -56,15 +53,15 @@ class AppsApiImpl @Inject constructor( override suspend fun getCleanapkAppDetails(packageName: String): Pair<Application, ResultStatus> { override suspend fun getCleanapkAppDetails(packageName: String): Pair<Application, ResultStatus> { var application = Application() var application = Application() val result = handleNetworkResult { val result = handleNetworkResult { val result = cleanApkAppsRepository.getSearchResult( val result = appSources.cleanApkAppsRepo.getSearchResult( packageName, packageName, KEY_SEARCH_PACKAGE_NAME KEY_SEARCH_PACKAGE_NAME ).body() ).body() if (result?.hasSingleResult() == true) { if (result?.hasSingleResult() == true) { application = application = (cleanApkAppsRepository.getAppDetails(result.apps[0]._id) as Response<CleanApkApplication>) (appSources.cleanApkAppsRepo.getAppDetails(result.apps[0]._id) .body()?.app ?: Application() as Response<CleanApkApplication>).body()?.app ?: Application() } } application.updateFilterLevel(null) application.updateFilterLevel(null) Loading Loading @@ -135,7 +132,7 @@ class AppsApiImpl @Inject constructor( val applicationList = mutableListOf<Application>() val applicationList = mutableListOf<Application>() val result = handleNetworkResult { val result = handleNetworkResult { gplayRepository.getAppsDetails(packageNameList).forEach { app -> appSources.gplayRepo.getAppsDetails(packageNameList).forEach { app -> handleFilteredApps(app, authData, applicationList) handleFilteredApps(app, authData, applicationList) } } } } Loading Loading @@ -168,7 +165,7 @@ class AppsApiImpl @Inject constructor( packageName: String, packageName: String, applicationList: MutableList<Application> applicationList: MutableList<Application> ) = handleNetworkResult { ) = handleNetworkResult { cleanApkAppsRepository.getSearchResult( appSources.cleanApkAppsRepo.getSearchResult( packageName, packageName, KEY_SEARCH_PACKAGE_NAME KEY_SEARCH_PACKAGE_NAME ).body()?.run { ).body()?.run { Loading Loading @@ -201,9 +198,10 @@ class AppsApiImpl @Inject constructor( val result = handleNetworkResult { val result = handleNetworkResult { application = if (origin == Origin.CLEANAPK) { application = if (origin == Origin.CLEANAPK) { (cleanApkAppsRepository.getAppDetails(id) as Response<CleanApkApplication>).body()?.app (appSources.cleanApkAppsRepo.getAppDetails(id) as Response<CleanApkApplication>).body()?.app } else { } else { val app = gplayRepository.getAppDetails(packageName) as App? val app = appSources.gplayRepo.getAppDetails(packageName) as App? app?.toApplication(context) app?.toApplication(context) } } Loading app/src/main/java/foundation/e/apps/data/application/category/CategoryApiImpl.kt +8 −12 Original line number Original line Diff line number Diff line Loading @@ -24,6 +24,7 @@ import com.aurora.gplayapi.data.models.AuthData import com.aurora.gplayapi.data.models.StreamCluster import com.aurora.gplayapi.data.models.StreamCluster import dagger.hilt.android.qualifiers.ApplicationContext import dagger.hilt.android.qualifiers.ApplicationContext import foundation.e.apps.R import foundation.e.apps.R import foundation.e.apps.data.AppSourcesContainer import foundation.e.apps.data.ResultSupreme import foundation.e.apps.data.ResultSupreme import foundation.e.apps.data.application.ApplicationDataManager import foundation.e.apps.data.application.ApplicationDataManager import foundation.e.apps.data.application.data.Application import foundation.e.apps.data.application.data.Application Loading @@ -33,23 +34,18 @@ import foundation.e.apps.data.application.utils.CategoryUtils import foundation.e.apps.data.application.utils.toApplication import foundation.e.apps.data.application.utils.toApplication import foundation.e.apps.data.application.utils.toCategory import foundation.e.apps.data.application.utils.toCategory import foundation.e.apps.data.cleanapk.data.categories.Categories import foundation.e.apps.data.cleanapk.data.categories.Categories import foundation.e.apps.data.cleanapk.repositories.CleanApkRepository import foundation.e.apps.data.enums.AppTag import foundation.e.apps.data.enums.AppTag import foundation.e.apps.data.enums.ResultStatus import foundation.e.apps.data.enums.ResultStatus import foundation.e.apps.data.enums.Source import foundation.e.apps.data.enums.Source import foundation.e.apps.data.enums.isUnFiltered import foundation.e.apps.data.enums.isUnFiltered import foundation.e.apps.data.handleNetworkResult import foundation.e.apps.data.handleNetworkResult import foundation.e.apps.data.playstore.PlayStoreRepository import foundation.e.apps.data.preference.AppLoungePreference import foundation.e.apps.data.preference.AppLoungePreference import javax.inject.Inject import javax.inject.Inject import javax.inject.Named class CategoryApiImpl @Inject constructor( class CategoryApiImpl @Inject constructor( @ApplicationContext private val context: Context, @ApplicationContext private val context: Context, private val appLoungePreference: AppLoungePreference, private val appLoungePreference: AppLoungePreference, @Named("gplayRepository") private val gplayRepository: PlayStoreRepository, private val appSources: AppSourcesContainer, @Named("cleanApkAppsRepository") private val cleanApkAppsRepository: CleanApkRepository, @Named("cleanApkPWARepository") private val cleanApkPWARepository: CleanApkRepository, private val applicationDataManager: ApplicationDataManager private val applicationDataManager: ApplicationDataManager ) : CategoryApi { ) : CategoryApi { Loading Loading @@ -113,7 +109,7 @@ class CategoryApiImpl @Inject constructor( ): Pair<List<Category>, ResultStatus> { ): Pair<List<Category>, ResultStatus> { val categoryList = mutableListOf<Category>() val categoryList = mutableListOf<Category>() val result = handleNetworkResult { val result = handleNetworkResult { val playResponse = gplayRepository.getCategories(type).map { gplayCategory -> val playResponse = appSources.gplayRepo.getCategories(type).map { gplayCategory -> val category = gplayCategory.toCategory() val category = gplayCategory.toCategory() category.drawable = category.drawable = CategoryUtils.provideAppsCategoryIconResource( CategoryUtils.provideAppsCategoryIconResource( Loading @@ -140,12 +136,12 @@ class CategoryApiImpl @Inject constructor( val categories = when (source) { val categories = when (source) { Source.OPEN -> { Source.OPEN -> { tag = AppTag.OpenSource(context.getString(R.string.open_source)) tag = AppTag.OpenSource(context.getString(R.string.open_source)) cleanApkAppsRepository.getCategories().body() appSources.cleanApkAppsRepo.getCategories().body() } } Source.PWA -> { Source.PWA -> { tag = AppTag.PWA(context.getString(R.string.pwa)) tag = AppTag.PWA(context.getString(R.string.pwa)) cleanApkPWARepository.getCategories().body() appSources.cleanApkPWARepo.getCategories().body() } } else -> null else -> null Loading Loading @@ -185,7 +181,7 @@ class CategoryApiImpl @Inject constructor( return handleNetworkResult { return handleNetworkResult { val streamCluster = val streamCluster = gplayRepository.getAppsByCategory(category, pageUrl) as StreamCluster appSources.gplayRepo.getAppsByCategory(category, pageUrl) as StreamCluster val filteredAppList = filterRestrictedGPlayApps(authData, streamCluster.clusterAppList) val filteredAppList = filterRestrictedGPlayApps(authData, streamCluster.clusterAppList) filteredAppList.data?.let { filteredAppList.data?.let { Loading Loading @@ -258,11 +254,11 @@ class CategoryApiImpl @Inject constructor( category: String category: String ) = when (source) { ) = when (source) { Source.OPEN -> { Source.OPEN -> { cleanApkAppsRepository.getAppsByCategory(category).body() appSources.cleanApkAppsRepo.getAppsByCategory(category).body() } } Source.PWA -> { Source.PWA -> { cleanApkPWARepository.getAppsByCategory(category).body() appSources.cleanApkPWARepo.getAppsByCategory(category).body() } } else -> null else -> null Loading app/src/main/java/foundation/e/apps/data/application/downloadInfo/DownloadInfoApiImpl.kt +8 −11 Original line number Original line Diff line number Diff line Loading @@ -18,17 +18,14 @@ package foundation.e.apps.data.application.downloadInfo package foundation.e.apps.data.application.downloadInfo import foundation.e.apps.data.AppSourcesContainer import foundation.e.apps.data.cleanapk.CleanApkDownloadInfoFetcher import foundation.e.apps.data.cleanapk.CleanApkDownloadInfoFetcher import foundation.e.apps.data.cleanapk.repositories.CleanApkRepository import foundation.e.apps.data.enums.Origin import foundation.e.apps.data.enums.Origin import foundation.e.apps.data.fusedDownload.models.FusedDownload import foundation.e.apps.data.fusedDownload.models.FusedDownload import foundation.e.apps.data.playstore.PlayStoreRepository import javax.inject.Inject import javax.inject.Inject import javax.inject.Named class DownloadInfoApiImpl @Inject constructor( class DownloadInfoApiImpl @Inject constructor( @Named("gplayRepository") private val gplayRepository: PlayStoreRepository, private val appSources: AppSourcesContainer @Named("cleanApkAppsRepository") private val cleanApkAppsRepository: CleanApkRepository ) : DownloadInfoApi { ) : DownloadInfoApi { override suspend fun getOnDemandModule( override suspend fun getOnDemandModule( Loading @@ -37,7 +34,7 @@ class DownloadInfoApiImpl @Inject constructor( versionCode: Int, versionCode: Int, offerType: Int offerType: Int ): String? { ): String? { val list = gplayRepository.getOnDemandModule( val list = appSources.gplayRepo.getOnDemandModule( packageName, packageName, moduleName, moduleName, versionCode, versionCode, Loading Loading @@ -76,7 +73,7 @@ class DownloadInfoApiImpl @Inject constructor( list: MutableList<String> list: MutableList<String> ) { ) { val downloadList = val downloadList = gplayRepository.getDownloadInfo( appSources.gplayRepo.getDownloadInfo( fusedDownload.packageName, fusedDownload.packageName, fusedDownload.versionCode, fusedDownload.versionCode, fusedDownload.offerType fusedDownload.offerType Loading @@ -90,13 +87,13 @@ class DownloadInfoApiImpl @Inject constructor( list: MutableList<String> list: MutableList<String> ) { ) { val downloadInfo = val downloadInfo = (cleanApkAppsRepository as CleanApkDownloadInfoFetcher).getDownloadInfo( (appSources.cleanApkAppsRepo as CleanApkDownloadInfoFetcher) fusedDownload.id .getDownloadInfo(fusedDownload.id).body() ).body() downloadInfo?.download_data?.download_link?.let { list.add(it) } downloadInfo?.download_data?.download_link?.let { list.add(it) } fusedDownload.signature = downloadInfo?.download_data?.signature ?: "" fusedDownload.signature = downloadInfo?.download_data?.signature ?: "" } } override suspend fun getOSSDownloadInfo(id: String, version: String?) = override suspend fun getOSSDownloadInfo(id: String, version: String?) = (cleanApkAppsRepository as CleanApkDownloadInfoFetcher).getDownloadInfo(id, version) (appSources.cleanApkAppsRepo as CleanApkDownloadInfoFetcher) .getDownloadInfo(id, version) } } app/src/main/java/foundation/e/apps/data/application/home/HomeApiImpl.kt +16 −11 Original line number Original line Diff line number Diff line Loading @@ -25,6 +25,7 @@ import com.aurora.gplayapi.data.models.App import com.aurora.gplayapi.data.models.AuthData import com.aurora.gplayapi.data.models.AuthData import dagger.hilt.android.qualifiers.ApplicationContext import dagger.hilt.android.qualifiers.ApplicationContext import foundation.e.apps.R import foundation.e.apps.R import foundation.e.apps.data.AppSourcesContainer import foundation.e.apps.data.ResultSupreme import foundation.e.apps.data.ResultSupreme import foundation.e.apps.data.application.ApplicationDataManager import foundation.e.apps.data.application.ApplicationDataManager import foundation.e.apps.data.application.data.Home import foundation.e.apps.data.application.data.Home Loading @@ -32,12 +33,10 @@ import foundation.e.apps.data.application.search.FusedHomeDeferred import foundation.e.apps.data.application.search.SearchApi import foundation.e.apps.data.application.search.SearchApi import foundation.e.apps.data.application.utils.toApplication import foundation.e.apps.data.application.utils.toApplication import foundation.e.apps.data.cleanapk.data.home.HomeScreen import foundation.e.apps.data.cleanapk.data.home.HomeScreen import foundation.e.apps.data.cleanapk.repositories.CleanApkRepository import foundation.e.apps.data.enums.ResultStatus import foundation.e.apps.data.enums.ResultStatus import foundation.e.apps.data.enums.Source import foundation.e.apps.data.enums.Source import foundation.e.apps.data.handleNetworkResult import foundation.e.apps.data.handleNetworkResult import foundation.e.apps.data.login.AuthObject import foundation.e.apps.data.login.AuthObject import foundation.e.apps.data.playstore.PlayStoreRepository import foundation.e.apps.data.preference.AppLoungePreference import foundation.e.apps.data.preference.AppLoungePreference import foundation.e.apps.utils.eventBus.AppEvent import foundation.e.apps.utils.eventBus.AppEvent import foundation.e.apps.utils.eventBus.EventBus import foundation.e.apps.utils.eventBus.EventBus Loading @@ -48,15 +47,12 @@ import kotlinx.coroutines.launch import retrofit2.Response import retrofit2.Response import timber.log.Timber import timber.log.Timber import javax.inject.Inject import javax.inject.Inject import javax.inject.Named import foundation.e.apps.data.cleanapk.data.home.Home as CleanApkHome import foundation.e.apps.data.cleanapk.data.home.Home as CleanApkHome class HomeApiImpl @Inject constructor( class HomeApiImpl @Inject constructor( @ApplicationContext private val context: Context, @ApplicationContext private val context: Context, private val appLoungePreference: AppLoungePreference, private val appLoungePreference: AppLoungePreference, @Named("gplayRepository") private val gplayRepository: PlayStoreRepository, private val appSources: AppSourcesContainer, @Named("cleanApkAppsRepository") private val cleanApkAppsRepository: CleanApkRepository, @Named("cleanApkPWARepository") private val cleanApkPWARepository: CleanApkRepository, private val applicationDataManager: ApplicationDataManager private val applicationDataManager: ApplicationDataManager ) : HomeApi { ) : HomeApi { Loading Loading @@ -143,9 +139,9 @@ class HomeApiImpl @Inject constructor( appType: String appType: String ): MutableList<Home> { ): MutableList<Home> { val response = if (appType == SearchApi.APP_TYPE_OPEN) { val response = if (appType == SearchApi.APP_TYPE_OPEN) { (cleanApkAppsRepository.getHomeScreenData() as Response<HomeScreen>).body() (appSources.cleanApkAppsRepo.getHomeScreenData() as Response<HomeScreen>).body() } else { } else { (cleanApkPWARepository.getHomeScreenData() as Response<HomeScreen>).body() (appSources.cleanApkPWARepo.getHomeScreenData() as Response<HomeScreen>).body() } } response?.home?.let { response?.home?.let { Loading Loading @@ -182,11 +178,19 @@ class HomeApiImpl @Inject constructor( } } "popular_apps_in_last_24_hours" -> { "popular_apps_in_last_24_hours" -> { applicationDataManager.prepareApps(home.popular_apps_in_last_24_hours, list, value) applicationDataManager.prepareApps( home.popular_apps_in_last_24_hours, list, value ) } } "popular_games_in_last_24_hours" -> { "popular_games_in_last_24_hours" -> { applicationDataManager.prepareApps(home.popular_games_in_last_24_hours, list, value) applicationDataManager.prepareApps( home.popular_games_in_last_24_hours, list, value ) } } "discover" -> { "discover" -> { Loading Loading @@ -230,7 +234,8 @@ class HomeApiImpl @Inject constructor( priorList: MutableList<Home> priorList: MutableList<Home> ): List<Home> { ): List<Home> { val list = mutableListOf<Home>() val list = mutableListOf<Home>() val gplayHomeData = gplayRepository.getHomeScreenData() as Map<String, List<App>> val gplayHomeData = appSources.gplayRepo.getHomeScreenData() as Map<String, List<App>> gplayHomeData.map { gplayHomeData.map { val fusedApps = it.value.map { app -> val fusedApps = it.value.map { app -> app.toApplication(context).apply { app.toApplication(context).apply { Loading Loading
app/src/main/java/foundation/e/apps/data/AppSourcesContainer.kt 0 → 100644 +33 −0 Original line number Original line Diff line number Diff line /* * Copyright MURENA SAS 2024 * Apps Quickly and easily install Android apps onto your device! * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <https://www.gnu.org/licenses/>. * */ package foundation.e.apps.data import foundation.e.apps.data.cleanapk.repositories.CleanApkRepository import foundation.e.apps.data.playstore.PlayStoreRepository import javax.inject.Inject import javax.inject.Named import javax.inject.Singleton @Singleton class AppSourcesContainer @Inject constructor( @Named("gplayRepository") val gplayRepo: PlayStoreRepository, @Named("cleanApkAppsRepository") val cleanApkAppsRepo: CleanApkRepository, @Named("cleanApkPWARepository") val cleanApkPWARepo: CleanApkRepository )
app/src/main/java/foundation/e/apps/data/application/apps/AppsApiImpl.kt +11 −13 Original line number Original line Diff line number Diff line Loading @@ -22,30 +22,27 @@ import android.content.Context import com.aurora.gplayapi.data.models.App import com.aurora.gplayapi.data.models.App import com.aurora.gplayapi.data.models.AuthData import com.aurora.gplayapi.data.models.AuthData import dagger.hilt.android.qualifiers.ApplicationContext import dagger.hilt.android.qualifiers.ApplicationContext import foundation.e.apps.data.AppSourcesContainer import foundation.e.apps.data.application.ApplicationDataManager import foundation.e.apps.data.application.ApplicationDataManager import foundation.e.apps.data.application.data.Application import foundation.e.apps.data.application.data.Application import foundation.e.apps.data.cleanapk.data.app.Application as CleanApkApplication import foundation.e.apps.data.application.utils.toApplication import foundation.e.apps.data.application.utils.toApplication import foundation.e.apps.data.cleanapk.data.search.Search import foundation.e.apps.data.cleanapk.data.search.Search import foundation.e.apps.data.cleanapk.repositories.CleanApkRepository import foundation.e.apps.data.enums.FilterLevel import foundation.e.apps.data.enums.FilterLevel import foundation.e.apps.data.enums.Origin import foundation.e.apps.data.enums.Origin import foundation.e.apps.data.enums.ResultStatus import foundation.e.apps.data.enums.ResultStatus import foundation.e.apps.data.enums.Status import foundation.e.apps.data.enums.Status import foundation.e.apps.data.enums.isUnFiltered import foundation.e.apps.data.enums.isUnFiltered import foundation.e.apps.data.handleNetworkResult import foundation.e.apps.data.handleNetworkResult import foundation.e.apps.data.playstore.PlayStoreRepository import foundation.e.apps.data.preference.AppLoungePreference import foundation.e.apps.data.preference.AppLoungePreference import foundation.e.apps.ui.applicationlist.ApplicationDiffUtil import foundation.e.apps.ui.applicationlist.ApplicationDiffUtil import retrofit2.Response import retrofit2.Response import javax.inject.Inject import javax.inject.Inject import javax.inject.Named import foundation.e.apps.data.cleanapk.data.app.Application as CleanApkApplication class AppsApiImpl @Inject constructor( class AppsApiImpl @Inject constructor( @ApplicationContext private val context: Context, @ApplicationContext private val context: Context, private val appLoungePreference: AppLoungePreference, private val appLoungePreference: AppLoungePreference, @Named("gplayRepository") private val gplayRepository: PlayStoreRepository, private val appSources: AppSourcesContainer, @Named("cleanApkAppsRepository") private val cleanApkAppsRepository: CleanApkRepository, private val applicationDataManager: ApplicationDataManager private val applicationDataManager: ApplicationDataManager ) : AppsApi { ) : AppsApi { Loading @@ -56,15 +53,15 @@ class AppsApiImpl @Inject constructor( override suspend fun getCleanapkAppDetails(packageName: String): Pair<Application, ResultStatus> { override suspend fun getCleanapkAppDetails(packageName: String): Pair<Application, ResultStatus> { var application = Application() var application = Application() val result = handleNetworkResult { val result = handleNetworkResult { val result = cleanApkAppsRepository.getSearchResult( val result = appSources.cleanApkAppsRepo.getSearchResult( packageName, packageName, KEY_SEARCH_PACKAGE_NAME KEY_SEARCH_PACKAGE_NAME ).body() ).body() if (result?.hasSingleResult() == true) { if (result?.hasSingleResult() == true) { application = application = (cleanApkAppsRepository.getAppDetails(result.apps[0]._id) as Response<CleanApkApplication>) (appSources.cleanApkAppsRepo.getAppDetails(result.apps[0]._id) .body()?.app ?: Application() as Response<CleanApkApplication>).body()?.app ?: Application() } } application.updateFilterLevel(null) application.updateFilterLevel(null) Loading Loading @@ -135,7 +132,7 @@ class AppsApiImpl @Inject constructor( val applicationList = mutableListOf<Application>() val applicationList = mutableListOf<Application>() val result = handleNetworkResult { val result = handleNetworkResult { gplayRepository.getAppsDetails(packageNameList).forEach { app -> appSources.gplayRepo.getAppsDetails(packageNameList).forEach { app -> handleFilteredApps(app, authData, applicationList) handleFilteredApps(app, authData, applicationList) } } } } Loading Loading @@ -168,7 +165,7 @@ class AppsApiImpl @Inject constructor( packageName: String, packageName: String, applicationList: MutableList<Application> applicationList: MutableList<Application> ) = handleNetworkResult { ) = handleNetworkResult { cleanApkAppsRepository.getSearchResult( appSources.cleanApkAppsRepo.getSearchResult( packageName, packageName, KEY_SEARCH_PACKAGE_NAME KEY_SEARCH_PACKAGE_NAME ).body()?.run { ).body()?.run { Loading Loading @@ -201,9 +198,10 @@ class AppsApiImpl @Inject constructor( val result = handleNetworkResult { val result = handleNetworkResult { application = if (origin == Origin.CLEANAPK) { application = if (origin == Origin.CLEANAPK) { (cleanApkAppsRepository.getAppDetails(id) as Response<CleanApkApplication>).body()?.app (appSources.cleanApkAppsRepo.getAppDetails(id) as Response<CleanApkApplication>).body()?.app } else { } else { val app = gplayRepository.getAppDetails(packageName) as App? val app = appSources.gplayRepo.getAppDetails(packageName) as App? app?.toApplication(context) app?.toApplication(context) } } Loading
app/src/main/java/foundation/e/apps/data/application/category/CategoryApiImpl.kt +8 −12 Original line number Original line Diff line number Diff line Loading @@ -24,6 +24,7 @@ import com.aurora.gplayapi.data.models.AuthData import com.aurora.gplayapi.data.models.StreamCluster import com.aurora.gplayapi.data.models.StreamCluster import dagger.hilt.android.qualifiers.ApplicationContext import dagger.hilt.android.qualifiers.ApplicationContext import foundation.e.apps.R import foundation.e.apps.R import foundation.e.apps.data.AppSourcesContainer import foundation.e.apps.data.ResultSupreme import foundation.e.apps.data.ResultSupreme import foundation.e.apps.data.application.ApplicationDataManager import foundation.e.apps.data.application.ApplicationDataManager import foundation.e.apps.data.application.data.Application import foundation.e.apps.data.application.data.Application Loading @@ -33,23 +34,18 @@ import foundation.e.apps.data.application.utils.CategoryUtils import foundation.e.apps.data.application.utils.toApplication import foundation.e.apps.data.application.utils.toApplication import foundation.e.apps.data.application.utils.toCategory import foundation.e.apps.data.application.utils.toCategory import foundation.e.apps.data.cleanapk.data.categories.Categories import foundation.e.apps.data.cleanapk.data.categories.Categories import foundation.e.apps.data.cleanapk.repositories.CleanApkRepository import foundation.e.apps.data.enums.AppTag import foundation.e.apps.data.enums.AppTag import foundation.e.apps.data.enums.ResultStatus import foundation.e.apps.data.enums.ResultStatus import foundation.e.apps.data.enums.Source import foundation.e.apps.data.enums.Source import foundation.e.apps.data.enums.isUnFiltered import foundation.e.apps.data.enums.isUnFiltered import foundation.e.apps.data.handleNetworkResult import foundation.e.apps.data.handleNetworkResult import foundation.e.apps.data.playstore.PlayStoreRepository import foundation.e.apps.data.preference.AppLoungePreference import foundation.e.apps.data.preference.AppLoungePreference import javax.inject.Inject import javax.inject.Inject import javax.inject.Named class CategoryApiImpl @Inject constructor( class CategoryApiImpl @Inject constructor( @ApplicationContext private val context: Context, @ApplicationContext private val context: Context, private val appLoungePreference: AppLoungePreference, private val appLoungePreference: AppLoungePreference, @Named("gplayRepository") private val gplayRepository: PlayStoreRepository, private val appSources: AppSourcesContainer, @Named("cleanApkAppsRepository") private val cleanApkAppsRepository: CleanApkRepository, @Named("cleanApkPWARepository") private val cleanApkPWARepository: CleanApkRepository, private val applicationDataManager: ApplicationDataManager private val applicationDataManager: ApplicationDataManager ) : CategoryApi { ) : CategoryApi { Loading Loading @@ -113,7 +109,7 @@ class CategoryApiImpl @Inject constructor( ): Pair<List<Category>, ResultStatus> { ): Pair<List<Category>, ResultStatus> { val categoryList = mutableListOf<Category>() val categoryList = mutableListOf<Category>() val result = handleNetworkResult { val result = handleNetworkResult { val playResponse = gplayRepository.getCategories(type).map { gplayCategory -> val playResponse = appSources.gplayRepo.getCategories(type).map { gplayCategory -> val category = gplayCategory.toCategory() val category = gplayCategory.toCategory() category.drawable = category.drawable = CategoryUtils.provideAppsCategoryIconResource( CategoryUtils.provideAppsCategoryIconResource( Loading @@ -140,12 +136,12 @@ class CategoryApiImpl @Inject constructor( val categories = when (source) { val categories = when (source) { Source.OPEN -> { Source.OPEN -> { tag = AppTag.OpenSource(context.getString(R.string.open_source)) tag = AppTag.OpenSource(context.getString(R.string.open_source)) cleanApkAppsRepository.getCategories().body() appSources.cleanApkAppsRepo.getCategories().body() } } Source.PWA -> { Source.PWA -> { tag = AppTag.PWA(context.getString(R.string.pwa)) tag = AppTag.PWA(context.getString(R.string.pwa)) cleanApkPWARepository.getCategories().body() appSources.cleanApkPWARepo.getCategories().body() } } else -> null else -> null Loading Loading @@ -185,7 +181,7 @@ class CategoryApiImpl @Inject constructor( return handleNetworkResult { return handleNetworkResult { val streamCluster = val streamCluster = gplayRepository.getAppsByCategory(category, pageUrl) as StreamCluster appSources.gplayRepo.getAppsByCategory(category, pageUrl) as StreamCluster val filteredAppList = filterRestrictedGPlayApps(authData, streamCluster.clusterAppList) val filteredAppList = filterRestrictedGPlayApps(authData, streamCluster.clusterAppList) filteredAppList.data?.let { filteredAppList.data?.let { Loading Loading @@ -258,11 +254,11 @@ class CategoryApiImpl @Inject constructor( category: String category: String ) = when (source) { ) = when (source) { Source.OPEN -> { Source.OPEN -> { cleanApkAppsRepository.getAppsByCategory(category).body() appSources.cleanApkAppsRepo.getAppsByCategory(category).body() } } Source.PWA -> { Source.PWA -> { cleanApkPWARepository.getAppsByCategory(category).body() appSources.cleanApkPWARepo.getAppsByCategory(category).body() } } else -> null else -> null Loading
app/src/main/java/foundation/e/apps/data/application/downloadInfo/DownloadInfoApiImpl.kt +8 −11 Original line number Original line Diff line number Diff line Loading @@ -18,17 +18,14 @@ package foundation.e.apps.data.application.downloadInfo package foundation.e.apps.data.application.downloadInfo import foundation.e.apps.data.AppSourcesContainer import foundation.e.apps.data.cleanapk.CleanApkDownloadInfoFetcher import foundation.e.apps.data.cleanapk.CleanApkDownloadInfoFetcher import foundation.e.apps.data.cleanapk.repositories.CleanApkRepository import foundation.e.apps.data.enums.Origin import foundation.e.apps.data.enums.Origin import foundation.e.apps.data.fusedDownload.models.FusedDownload import foundation.e.apps.data.fusedDownload.models.FusedDownload import foundation.e.apps.data.playstore.PlayStoreRepository import javax.inject.Inject import javax.inject.Inject import javax.inject.Named class DownloadInfoApiImpl @Inject constructor( class DownloadInfoApiImpl @Inject constructor( @Named("gplayRepository") private val gplayRepository: PlayStoreRepository, private val appSources: AppSourcesContainer @Named("cleanApkAppsRepository") private val cleanApkAppsRepository: CleanApkRepository ) : DownloadInfoApi { ) : DownloadInfoApi { override suspend fun getOnDemandModule( override suspend fun getOnDemandModule( Loading @@ -37,7 +34,7 @@ class DownloadInfoApiImpl @Inject constructor( versionCode: Int, versionCode: Int, offerType: Int offerType: Int ): String? { ): String? { val list = gplayRepository.getOnDemandModule( val list = appSources.gplayRepo.getOnDemandModule( packageName, packageName, moduleName, moduleName, versionCode, versionCode, Loading Loading @@ -76,7 +73,7 @@ class DownloadInfoApiImpl @Inject constructor( list: MutableList<String> list: MutableList<String> ) { ) { val downloadList = val downloadList = gplayRepository.getDownloadInfo( appSources.gplayRepo.getDownloadInfo( fusedDownload.packageName, fusedDownload.packageName, fusedDownload.versionCode, fusedDownload.versionCode, fusedDownload.offerType fusedDownload.offerType Loading @@ -90,13 +87,13 @@ class DownloadInfoApiImpl @Inject constructor( list: MutableList<String> list: MutableList<String> ) { ) { val downloadInfo = val downloadInfo = (cleanApkAppsRepository as CleanApkDownloadInfoFetcher).getDownloadInfo( (appSources.cleanApkAppsRepo as CleanApkDownloadInfoFetcher) fusedDownload.id .getDownloadInfo(fusedDownload.id).body() ).body() downloadInfo?.download_data?.download_link?.let { list.add(it) } downloadInfo?.download_data?.download_link?.let { list.add(it) } fusedDownload.signature = downloadInfo?.download_data?.signature ?: "" fusedDownload.signature = downloadInfo?.download_data?.signature ?: "" } } override suspend fun getOSSDownloadInfo(id: String, version: String?) = override suspend fun getOSSDownloadInfo(id: String, version: String?) = (cleanApkAppsRepository as CleanApkDownloadInfoFetcher).getDownloadInfo(id, version) (appSources.cleanApkAppsRepo as CleanApkDownloadInfoFetcher) .getDownloadInfo(id, version) } }
app/src/main/java/foundation/e/apps/data/application/home/HomeApiImpl.kt +16 −11 Original line number Original line Diff line number Diff line Loading @@ -25,6 +25,7 @@ import com.aurora.gplayapi.data.models.App import com.aurora.gplayapi.data.models.AuthData import com.aurora.gplayapi.data.models.AuthData import dagger.hilt.android.qualifiers.ApplicationContext import dagger.hilt.android.qualifiers.ApplicationContext import foundation.e.apps.R import foundation.e.apps.R import foundation.e.apps.data.AppSourcesContainer import foundation.e.apps.data.ResultSupreme import foundation.e.apps.data.ResultSupreme import foundation.e.apps.data.application.ApplicationDataManager import foundation.e.apps.data.application.ApplicationDataManager import foundation.e.apps.data.application.data.Home import foundation.e.apps.data.application.data.Home Loading @@ -32,12 +33,10 @@ import foundation.e.apps.data.application.search.FusedHomeDeferred import foundation.e.apps.data.application.search.SearchApi import foundation.e.apps.data.application.search.SearchApi import foundation.e.apps.data.application.utils.toApplication import foundation.e.apps.data.application.utils.toApplication import foundation.e.apps.data.cleanapk.data.home.HomeScreen import foundation.e.apps.data.cleanapk.data.home.HomeScreen import foundation.e.apps.data.cleanapk.repositories.CleanApkRepository import foundation.e.apps.data.enums.ResultStatus import foundation.e.apps.data.enums.ResultStatus import foundation.e.apps.data.enums.Source import foundation.e.apps.data.enums.Source import foundation.e.apps.data.handleNetworkResult import foundation.e.apps.data.handleNetworkResult import foundation.e.apps.data.login.AuthObject import foundation.e.apps.data.login.AuthObject import foundation.e.apps.data.playstore.PlayStoreRepository import foundation.e.apps.data.preference.AppLoungePreference import foundation.e.apps.data.preference.AppLoungePreference import foundation.e.apps.utils.eventBus.AppEvent import foundation.e.apps.utils.eventBus.AppEvent import foundation.e.apps.utils.eventBus.EventBus import foundation.e.apps.utils.eventBus.EventBus Loading @@ -48,15 +47,12 @@ import kotlinx.coroutines.launch import retrofit2.Response import retrofit2.Response import timber.log.Timber import timber.log.Timber import javax.inject.Inject import javax.inject.Inject import javax.inject.Named import foundation.e.apps.data.cleanapk.data.home.Home as CleanApkHome import foundation.e.apps.data.cleanapk.data.home.Home as CleanApkHome class HomeApiImpl @Inject constructor( class HomeApiImpl @Inject constructor( @ApplicationContext private val context: Context, @ApplicationContext private val context: Context, private val appLoungePreference: AppLoungePreference, private val appLoungePreference: AppLoungePreference, @Named("gplayRepository") private val gplayRepository: PlayStoreRepository, private val appSources: AppSourcesContainer, @Named("cleanApkAppsRepository") private val cleanApkAppsRepository: CleanApkRepository, @Named("cleanApkPWARepository") private val cleanApkPWARepository: CleanApkRepository, private val applicationDataManager: ApplicationDataManager private val applicationDataManager: ApplicationDataManager ) : HomeApi { ) : HomeApi { Loading Loading @@ -143,9 +139,9 @@ class HomeApiImpl @Inject constructor( appType: String appType: String ): MutableList<Home> { ): MutableList<Home> { val response = if (appType == SearchApi.APP_TYPE_OPEN) { val response = if (appType == SearchApi.APP_TYPE_OPEN) { (cleanApkAppsRepository.getHomeScreenData() as Response<HomeScreen>).body() (appSources.cleanApkAppsRepo.getHomeScreenData() as Response<HomeScreen>).body() } else { } else { (cleanApkPWARepository.getHomeScreenData() as Response<HomeScreen>).body() (appSources.cleanApkPWARepo.getHomeScreenData() as Response<HomeScreen>).body() } } response?.home?.let { response?.home?.let { Loading Loading @@ -182,11 +178,19 @@ class HomeApiImpl @Inject constructor( } } "popular_apps_in_last_24_hours" -> { "popular_apps_in_last_24_hours" -> { applicationDataManager.prepareApps(home.popular_apps_in_last_24_hours, list, value) applicationDataManager.prepareApps( home.popular_apps_in_last_24_hours, list, value ) } } "popular_games_in_last_24_hours" -> { "popular_games_in_last_24_hours" -> { applicationDataManager.prepareApps(home.popular_games_in_last_24_hours, list, value) applicationDataManager.prepareApps( home.popular_games_in_last_24_hours, list, value ) } } "discover" -> { "discover" -> { Loading Loading @@ -230,7 +234,8 @@ class HomeApiImpl @Inject constructor( priorList: MutableList<Home> priorList: MutableList<Home> ): List<Home> { ): List<Home> { val list = mutableListOf<Home>() val list = mutableListOf<Home>() val gplayHomeData = gplayRepository.getHomeScreenData() as Map<String, List<App>> val gplayHomeData = appSources.gplayRepo.getHomeScreenData() as Map<String, List<App>> gplayHomeData.map { gplayHomeData.map { val fusedApps = it.value.map { app -> val fusedApps = it.value.map { app -> app.toApplication(context).apply { app.toApplication(context).apply { Loading