Loading app/src/main/java/foundation/e/apps/api/StoreRepository.kt +4 −2 Original line number Diff line number Diff line Loading @@ -18,10 +18,12 @@ package foundation.e.apps.api import foundation.e.apps.api.fused.utils.CategoryType interface StoreRepository { suspend fun getHomeScreenData(): Any suspend fun getSearchResult(query: String): Any suspend fun getSearchResult(query: String, searchBy: String? = null): Any suspend fun getSearchSuggestions(query: String): Any suspend fun getAppsByCategory(category: String, paginationParameter: Any? = null): Any suspend fun getCategories(type: CategoryType? = null): Any } app/src/main/java/foundation/e/apps/api/cleanapk/CleanApkAppsRepository.kt +15 −3 Original line number Diff line number Diff line Loading @@ -19,8 +19,10 @@ package foundation.e.apps.api.cleanapk import foundation.e.apps.api.StoreRepository import foundation.e.apps.api.cleanapk.data.categories.Categories import foundation.e.apps.api.cleanapk.data.home.HomeScreen import foundation.e.apps.api.cleanapk.data.search.Search import foundation.e.apps.api.fused.utils.CategoryType import retrofit2.Response class CleanApkAppsRepository( Loading @@ -35,14 +37,14 @@ class CleanApkAppsRepository( ) } override suspend fun getSearchResult(query: String): Response<Search> { override suspend fun getSearchResult(query: String, searchBy: String?): Response<Search> { return cleanAPKInterface.searchApps( query, CleanAPKInterface.APP_SOURCE_FOSS, CleanAPKInterface.APP_TYPE_ANY, 20, 1, null searchBy ) } Loading @@ -50,7 +52,10 @@ class CleanApkAppsRepository( return Any() } override suspend fun getAppsByCategory(category: String, paginationParameter: Any?): Response<Search> { override suspend fun getAppsByCategory( category: String, paginationParameter: Any? ): Response<Search> { return cleanAPKInterface.listApps( category, CleanAPKInterface.APP_SOURCE_FOSS, Loading @@ -59,4 +64,11 @@ class CleanApkAppsRepository( 1 ) } override suspend fun getCategories(type: CategoryType?): Response<Categories> { return cleanAPKInterface.getCategoriesList( CleanAPKInterface.APP_TYPE_ANY, CleanAPKInterface.APP_SOURCE_FOSS ) } } app/src/main/java/foundation/e/apps/api/cleanapk/CleanApkPWARepository.kt +11 −2 Original line number Diff line number Diff line Loading @@ -19,7 +19,9 @@ package foundation.e.apps.api.cleanapk import foundation.e.apps.api.StoreRepository import foundation.e.apps.api.cleanapk.data.categories.Categories import foundation.e.apps.api.cleanapk.data.search.Search import foundation.e.apps.api.fused.utils.CategoryType import retrofit2.Response class CleanApkPWARepository( Loading @@ -34,14 +36,14 @@ class CleanApkPWARepository( ) } override suspend fun getSearchResult(query: String): Response<Search> { override suspend fun getSearchResult(query: String, searchBy: String?): Response<Search> { return cleanAPKInterface.searchApps( query, CleanAPKInterface.APP_SOURCE_ANY, CleanAPKInterface.APP_TYPE_PWA, 20, 1, null searchBy ) } Loading @@ -58,4 +60,11 @@ class CleanApkPWARepository( 1 ) } override suspend fun getCategories(type: CategoryType?): Response<Categories> { return cleanAPKInterface.getCategoriesList( CleanAPKInterface.APP_TYPE_PWA, CleanAPKInterface.APP_SOURCE_ANY ) } } app/src/main/java/foundation/e/apps/api/fused/FusedAPIImpl.kt +30 −106 Original line number Diff line number Diff line Loading @@ -20,19 +20,10 @@ package foundation.e.apps.api.fused import android.content.Context import android.text.format.Formatter import androidx.lifecycle.LiveData import androidx.lifecycle.LiveDataScope import androidx.lifecycle.asLiveData import androidx.lifecycle.liveData import androidx.lifecycle.map import androidx.lifecycle.* import com.aurora.gplayapi.Constants import com.aurora.gplayapi.SearchSuggestEntry import com.aurora.gplayapi.data.models.App import com.aurora.gplayapi.data.models.Artwork import com.aurora.gplayapi.data.models.AuthData import com.aurora.gplayapi.data.models.Category import com.aurora.gplayapi.data.models.StreamBundle import com.aurora.gplayapi.data.models.StreamCluster import com.aurora.gplayapi.data.models.* import dagger.hilt.android.qualifiers.ApplicationContext import foundation.e.apps.R import foundation.e.apps.api.ResultSupreme Loading @@ -48,20 +39,14 @@ import foundation.e.apps.api.fused.data.FusedApp import foundation.e.apps.api.fused.data.FusedCategory import foundation.e.apps.api.fused.data.FusedHome import foundation.e.apps.api.fused.data.Ratings import foundation.e.apps.api.fused.utils.CategoryType import foundation.e.apps.api.fused.utils.CategoryUtils import foundation.e.apps.api.gplay.GPlayAPIRepository import foundation.e.apps.home.model.HomeChildFusedAppDiffUtil import foundation.e.apps.manager.database.fusedDownload.FusedDownload import foundation.e.apps.manager.pkg.PkgManagerModule import foundation.e.apps.utils.Constants.timeoutDurationInMillis import foundation.e.apps.utils.enums.AppTag import foundation.e.apps.utils.enums.FilterLevel import foundation.e.apps.utils.enums.Origin import foundation.e.apps.utils.enums.ResultStatus import foundation.e.apps.utils.enums.Source import foundation.e.apps.utils.enums.Status import foundation.e.apps.utils.enums.Type import foundation.e.apps.utils.enums.isUnFiltered import foundation.e.apps.utils.enums.* import foundation.e.apps.utils.modules.PWAManagerModule import foundation.e.apps.utils.modules.PreferenceManagerModule import kotlinx.coroutines.TimeoutCancellationException Loading Loading @@ -206,15 +191,14 @@ class FusedAPIImpl @Inject constructor( * Issue: https://gitlab.e.foundation/e/backlog/-/issues/5413 */ suspend fun getCategoriesList( type: Category.Type, authData: AuthData type: CategoryType, ): Triple<List<FusedCategory>, String, ResultStatus> { val categoriesList = mutableListOf<FusedCategory>() val preferredApplicationType = preferenceManagerModule.preferredApplicationType() var apiStatus: ResultStatus = ResultStatus.OK var applicationCategoryType = preferredApplicationType handleAllSourcesCategories(categoriesList, type, authData).run { handleAllSourcesCategories(categoriesList, type).run { if (first != ResultStatus.OK) { apiStatus = first applicationCategoryType = second Loading Loading @@ -461,10 +445,11 @@ class FusedAPIImpl @Inject constructor( private suspend fun getCleanapkSearchResult(packageName: String): ResultSupreme<FusedApp> { var fusedApp = FusedApp() val status = runCodeBlockWithTimeout({ val result = cleanAPKRepository.searchApps( keyword = packageName, by = "package_name" ).body() val result = (cleanApkAppsRepository.getSearchResult( packageName, "package_name" ) as Response<Search>).body() if (result?.apps?.isNotEmpty() == true && result.numberOfResults == 1) { fusedApp = result.apps[0] } Loading Loading @@ -616,10 +601,11 @@ class FusedAPIImpl @Inject constructor( suspend fun getCleanapkAppDetails(packageName: String): Pair<FusedApp, ResultStatus> { var fusedApp = FusedApp() val status = runCodeBlockWithTimeout({ val result = cleanAPKRepository.searchApps( keyword = packageName, by = "package_name" ).body() val result = (cleanApkAppsRepository.getSearchResult( packageName, "package_name" ) as Response<Search>).body() if (result?.apps?.isNotEmpty() == true && result.numberOfResults == 1) { fusedApp = cleanAPKRepository.getAppOrPWADetailsByID(result.apps[0]._id).body()?.app Loading Loading @@ -672,10 +658,10 @@ class FusedAPIImpl @Inject constructor( */ for (packageName in packageNameList) { status = runCodeBlockWithTimeout({ cleanAPKRepository.searchApps( keyword = packageName, by = "package_name" ).body()?.run { (cleanApkAppsRepository.getSearchResult( packageName, "package_name" ) as Response<Search>).body()?.run { if (apps.isNotEmpty() && numberOfResults == 1) { fusedAppList.add( apps[0].apply { Loading Loading @@ -859,45 +845,6 @@ class FusedAPIImpl @Inject constructor( return Pair(response ?: FusedApp(), status) } /* * Categories-related internal functions */ private suspend fun handleCleanApkCategories( preferredApplicationType: String, categoriesList: MutableList<FusedCategory>, type: Category.Type ): ResultStatus { return runCodeBlockWithTimeout({ val data = getCleanApkCategories(preferredApplicationType) data?.let { category -> categoriesList.addAll( getFusedCategoryBasedOnCategoryType( category, type, getCategoryTag(preferredApplicationType) ) ) } }) } private fun getCategoryTag(preferredApplicationType: String): AppTag { return if (preferredApplicationType == APP_TYPE_OPEN) { AppTag.OpenSource(context.getString(R.string.open_source)) } else { AppTag.PWA(context.getString(R.string.pwa)) } } private suspend fun getCleanApkCategories(preferredApplicationType: String): Categories? { return if (preferredApplicationType == APP_TYPE_OPEN) { getOpenSourceCategories() } else { getPWAsCategories() } } /* * Function to populate a given category list, from all GPlay categories, open source categories, * and PWAs. Loading @@ -910,8 +857,7 @@ class FusedAPIImpl @Inject constructor( */ private suspend fun handleAllSourcesCategories( categoriesList: MutableList<FusedCategory>, type: Category.Type, authData: AuthData type: CategoryType, ): Pair<ResultStatus, String> { var apiStatus = ResultStatus.OK var errorApplicationCategory = "" Loading @@ -933,7 +879,6 @@ class FusedAPIImpl @Inject constructor( if (preferenceManagerModule.isGplaySelected()) { val gplayCategoryResult = fetchGplayCategories( type, authData ) categoriesList.addAll(gplayCategoryResult.second) apiStatus = gplayCategoryResult.first Loading @@ -944,14 +889,13 @@ class FusedAPIImpl @Inject constructor( } private suspend fun FusedAPIImpl.fetchGplayCategories( type: Category.Type, authData: AuthData, type: CategoryType, ): Triple<ResultStatus, List<FusedCategory>, String> { var errorApplicationCategory = "" var apiStatus = ResultStatus.OK val categoryList = mutableListOf<FusedCategory>() runCodeBlockWithTimeout({ val playResponse = gPlayAPIRepository.getCategoriesList(type, authData).map { app -> val playResponse = (gplayRepository.getCategories(type) as List<Category>).map { app -> val category = app.transformToFusedCategory() updateCategoryDrawable(category) category Loading @@ -968,7 +912,7 @@ class FusedAPIImpl @Inject constructor( } private suspend fun FusedAPIImpl.fetchPWACategories( type: Category.Type, type: CategoryType, ): Triple<ResultStatus, List<FusedCategory>, String> { var errorApplicationCategory = "" var apiStatus: ResultStatus = ResultStatus.OK Loading @@ -992,7 +936,7 @@ class FusedAPIImpl @Inject constructor( } private suspend fun FusedAPIImpl.fetchOpenSourceCategories( type: Category.Type, type: CategoryType, ): Triple<ResultStatus, List<FusedCategory>, String> { var errorApplicationCategory = "" var apiStatus: ResultStatus = ResultStatus.OK Loading Loading @@ -1069,14 +1013,14 @@ class FusedAPIImpl @Inject constructor( private fun getFusedCategoryBasedOnCategoryType( categories: Categories, categoryType: Category.Type, categoryType: CategoryType, tag: AppTag ): List<FusedCategory> { return when (categoryType) { Category.Type.APPLICATION -> { CategoryType.APPLICATION -> { getAppsCategoriesAsFusedCategory(categories, tag) } Category.Type.GAME -> { CategoryType.GAMES -> { getGamesCategoriesAsFusedCategory(categories, tag) } } Loading Loading @@ -1126,17 +1070,11 @@ class FusedAPIImpl @Inject constructor( } private suspend fun getPWAsCategories(): Categories? { return cleanAPKRepository.getCategoriesList( CleanAPKInterface.APP_TYPE_PWA, CleanAPKInterface.APP_SOURCE_ANY ).body() return (cleanApkPWARepository.getCategories() as Response<Categories>).body() } private suspend fun getOpenSourceCategories(): Categories? { return cleanAPKRepository.getCategoriesList( CleanAPKInterface.APP_TYPE_ANY, CleanAPKInterface.APP_SOURCE_FOSS ).body() return (cleanApkAppsRepository.getCategories() as Response<Categories>).body() } private suspend fun getOpenSourceAppsResponse(category: String): Search? { Loading Loading @@ -1187,20 +1125,6 @@ class FusedAPIImpl @Inject constructor( return list } private fun getGplaySearchResults( query: String, authData: AuthData ): LiveData<Pair<List<FusedApp>, Boolean>> { val searchResults = gPlayAPIRepository.getSearchResults(query, authData, ::replaceWithFDroid) return searchResults.map { Pair( it.first, it.second ) } } private suspend fun getGplaySearchResult( query: String, authData: AuthData Loading app/src/main/java/foundation/e/apps/api/fused/FusedAPIRepository.kt +3 −4 Original line number Diff line number Diff line Loading @@ -22,13 +22,13 @@ import androidx.lifecycle.LiveData import com.aurora.gplayapi.SearchSuggestEntry import com.aurora.gplayapi.data.models.App import com.aurora.gplayapi.data.models.AuthData import com.aurora.gplayapi.data.models.Category import com.aurora.gplayapi.data.models.StreamBundle import com.aurora.gplayapi.data.models.StreamCluster import foundation.e.apps.api.ResultSupreme import foundation.e.apps.api.fused.data.FusedApp import foundation.e.apps.api.fused.data.FusedCategory import foundation.e.apps.api.fused.data.FusedHome import foundation.e.apps.api.fused.utils.CategoryType import foundation.e.apps.manager.database.fusedDownload.FusedDownload import foundation.e.apps.utils.enums.FilterLevel import foundation.e.apps.utils.enums.Origin Loading Loading @@ -145,10 +145,9 @@ class FusedAPIRepository @Inject constructor(private val fusedAPIImpl: FusedAPII } suspend fun getCategoriesList( type: Category.Type, authData: AuthData type: CategoryType, ): Triple<List<FusedCategory>, String, ResultStatus> { return fusedAPIImpl.getCategoriesList(type, authData) return fusedAPIImpl.getCategoriesList(type) } suspend fun getSearchSuggestions(query: String, authData: AuthData): List<SearchSuggestEntry> { Loading Loading
app/src/main/java/foundation/e/apps/api/StoreRepository.kt +4 −2 Original line number Diff line number Diff line Loading @@ -18,10 +18,12 @@ package foundation.e.apps.api import foundation.e.apps.api.fused.utils.CategoryType interface StoreRepository { suspend fun getHomeScreenData(): Any suspend fun getSearchResult(query: String): Any suspend fun getSearchResult(query: String, searchBy: String? = null): Any suspend fun getSearchSuggestions(query: String): Any suspend fun getAppsByCategory(category: String, paginationParameter: Any? = null): Any suspend fun getCategories(type: CategoryType? = null): Any }
app/src/main/java/foundation/e/apps/api/cleanapk/CleanApkAppsRepository.kt +15 −3 Original line number Diff line number Diff line Loading @@ -19,8 +19,10 @@ package foundation.e.apps.api.cleanapk import foundation.e.apps.api.StoreRepository import foundation.e.apps.api.cleanapk.data.categories.Categories import foundation.e.apps.api.cleanapk.data.home.HomeScreen import foundation.e.apps.api.cleanapk.data.search.Search import foundation.e.apps.api.fused.utils.CategoryType import retrofit2.Response class CleanApkAppsRepository( Loading @@ -35,14 +37,14 @@ class CleanApkAppsRepository( ) } override suspend fun getSearchResult(query: String): Response<Search> { override suspend fun getSearchResult(query: String, searchBy: String?): Response<Search> { return cleanAPKInterface.searchApps( query, CleanAPKInterface.APP_SOURCE_FOSS, CleanAPKInterface.APP_TYPE_ANY, 20, 1, null searchBy ) } Loading @@ -50,7 +52,10 @@ class CleanApkAppsRepository( return Any() } override suspend fun getAppsByCategory(category: String, paginationParameter: Any?): Response<Search> { override suspend fun getAppsByCategory( category: String, paginationParameter: Any? ): Response<Search> { return cleanAPKInterface.listApps( category, CleanAPKInterface.APP_SOURCE_FOSS, Loading @@ -59,4 +64,11 @@ class CleanApkAppsRepository( 1 ) } override suspend fun getCategories(type: CategoryType?): Response<Categories> { return cleanAPKInterface.getCategoriesList( CleanAPKInterface.APP_TYPE_ANY, CleanAPKInterface.APP_SOURCE_FOSS ) } }
app/src/main/java/foundation/e/apps/api/cleanapk/CleanApkPWARepository.kt +11 −2 Original line number Diff line number Diff line Loading @@ -19,7 +19,9 @@ package foundation.e.apps.api.cleanapk import foundation.e.apps.api.StoreRepository import foundation.e.apps.api.cleanapk.data.categories.Categories import foundation.e.apps.api.cleanapk.data.search.Search import foundation.e.apps.api.fused.utils.CategoryType import retrofit2.Response class CleanApkPWARepository( Loading @@ -34,14 +36,14 @@ class CleanApkPWARepository( ) } override suspend fun getSearchResult(query: String): Response<Search> { override suspend fun getSearchResult(query: String, searchBy: String?): Response<Search> { return cleanAPKInterface.searchApps( query, CleanAPKInterface.APP_SOURCE_ANY, CleanAPKInterface.APP_TYPE_PWA, 20, 1, null searchBy ) } Loading @@ -58,4 +60,11 @@ class CleanApkPWARepository( 1 ) } override suspend fun getCategories(type: CategoryType?): Response<Categories> { return cleanAPKInterface.getCategoriesList( CleanAPKInterface.APP_TYPE_PWA, CleanAPKInterface.APP_SOURCE_ANY ) } }
app/src/main/java/foundation/e/apps/api/fused/FusedAPIImpl.kt +30 −106 Original line number Diff line number Diff line Loading @@ -20,19 +20,10 @@ package foundation.e.apps.api.fused import android.content.Context import android.text.format.Formatter import androidx.lifecycle.LiveData import androidx.lifecycle.LiveDataScope import androidx.lifecycle.asLiveData import androidx.lifecycle.liveData import androidx.lifecycle.map import androidx.lifecycle.* import com.aurora.gplayapi.Constants import com.aurora.gplayapi.SearchSuggestEntry import com.aurora.gplayapi.data.models.App import com.aurora.gplayapi.data.models.Artwork import com.aurora.gplayapi.data.models.AuthData import com.aurora.gplayapi.data.models.Category import com.aurora.gplayapi.data.models.StreamBundle import com.aurora.gplayapi.data.models.StreamCluster import com.aurora.gplayapi.data.models.* import dagger.hilt.android.qualifiers.ApplicationContext import foundation.e.apps.R import foundation.e.apps.api.ResultSupreme Loading @@ -48,20 +39,14 @@ import foundation.e.apps.api.fused.data.FusedApp import foundation.e.apps.api.fused.data.FusedCategory import foundation.e.apps.api.fused.data.FusedHome import foundation.e.apps.api.fused.data.Ratings import foundation.e.apps.api.fused.utils.CategoryType import foundation.e.apps.api.fused.utils.CategoryUtils import foundation.e.apps.api.gplay.GPlayAPIRepository import foundation.e.apps.home.model.HomeChildFusedAppDiffUtil import foundation.e.apps.manager.database.fusedDownload.FusedDownload import foundation.e.apps.manager.pkg.PkgManagerModule import foundation.e.apps.utils.Constants.timeoutDurationInMillis import foundation.e.apps.utils.enums.AppTag import foundation.e.apps.utils.enums.FilterLevel import foundation.e.apps.utils.enums.Origin import foundation.e.apps.utils.enums.ResultStatus import foundation.e.apps.utils.enums.Source import foundation.e.apps.utils.enums.Status import foundation.e.apps.utils.enums.Type import foundation.e.apps.utils.enums.isUnFiltered import foundation.e.apps.utils.enums.* import foundation.e.apps.utils.modules.PWAManagerModule import foundation.e.apps.utils.modules.PreferenceManagerModule import kotlinx.coroutines.TimeoutCancellationException Loading Loading @@ -206,15 +191,14 @@ class FusedAPIImpl @Inject constructor( * Issue: https://gitlab.e.foundation/e/backlog/-/issues/5413 */ suspend fun getCategoriesList( type: Category.Type, authData: AuthData type: CategoryType, ): Triple<List<FusedCategory>, String, ResultStatus> { val categoriesList = mutableListOf<FusedCategory>() val preferredApplicationType = preferenceManagerModule.preferredApplicationType() var apiStatus: ResultStatus = ResultStatus.OK var applicationCategoryType = preferredApplicationType handleAllSourcesCategories(categoriesList, type, authData).run { handleAllSourcesCategories(categoriesList, type).run { if (first != ResultStatus.OK) { apiStatus = first applicationCategoryType = second Loading Loading @@ -461,10 +445,11 @@ class FusedAPIImpl @Inject constructor( private suspend fun getCleanapkSearchResult(packageName: String): ResultSupreme<FusedApp> { var fusedApp = FusedApp() val status = runCodeBlockWithTimeout({ val result = cleanAPKRepository.searchApps( keyword = packageName, by = "package_name" ).body() val result = (cleanApkAppsRepository.getSearchResult( packageName, "package_name" ) as Response<Search>).body() if (result?.apps?.isNotEmpty() == true && result.numberOfResults == 1) { fusedApp = result.apps[0] } Loading Loading @@ -616,10 +601,11 @@ class FusedAPIImpl @Inject constructor( suspend fun getCleanapkAppDetails(packageName: String): Pair<FusedApp, ResultStatus> { var fusedApp = FusedApp() val status = runCodeBlockWithTimeout({ val result = cleanAPKRepository.searchApps( keyword = packageName, by = "package_name" ).body() val result = (cleanApkAppsRepository.getSearchResult( packageName, "package_name" ) as Response<Search>).body() if (result?.apps?.isNotEmpty() == true && result.numberOfResults == 1) { fusedApp = cleanAPKRepository.getAppOrPWADetailsByID(result.apps[0]._id).body()?.app Loading Loading @@ -672,10 +658,10 @@ class FusedAPIImpl @Inject constructor( */ for (packageName in packageNameList) { status = runCodeBlockWithTimeout({ cleanAPKRepository.searchApps( keyword = packageName, by = "package_name" ).body()?.run { (cleanApkAppsRepository.getSearchResult( packageName, "package_name" ) as Response<Search>).body()?.run { if (apps.isNotEmpty() && numberOfResults == 1) { fusedAppList.add( apps[0].apply { Loading Loading @@ -859,45 +845,6 @@ class FusedAPIImpl @Inject constructor( return Pair(response ?: FusedApp(), status) } /* * Categories-related internal functions */ private suspend fun handleCleanApkCategories( preferredApplicationType: String, categoriesList: MutableList<FusedCategory>, type: Category.Type ): ResultStatus { return runCodeBlockWithTimeout({ val data = getCleanApkCategories(preferredApplicationType) data?.let { category -> categoriesList.addAll( getFusedCategoryBasedOnCategoryType( category, type, getCategoryTag(preferredApplicationType) ) ) } }) } private fun getCategoryTag(preferredApplicationType: String): AppTag { return if (preferredApplicationType == APP_TYPE_OPEN) { AppTag.OpenSource(context.getString(R.string.open_source)) } else { AppTag.PWA(context.getString(R.string.pwa)) } } private suspend fun getCleanApkCategories(preferredApplicationType: String): Categories? { return if (preferredApplicationType == APP_TYPE_OPEN) { getOpenSourceCategories() } else { getPWAsCategories() } } /* * Function to populate a given category list, from all GPlay categories, open source categories, * and PWAs. Loading @@ -910,8 +857,7 @@ class FusedAPIImpl @Inject constructor( */ private suspend fun handleAllSourcesCategories( categoriesList: MutableList<FusedCategory>, type: Category.Type, authData: AuthData type: CategoryType, ): Pair<ResultStatus, String> { var apiStatus = ResultStatus.OK var errorApplicationCategory = "" Loading @@ -933,7 +879,6 @@ class FusedAPIImpl @Inject constructor( if (preferenceManagerModule.isGplaySelected()) { val gplayCategoryResult = fetchGplayCategories( type, authData ) categoriesList.addAll(gplayCategoryResult.second) apiStatus = gplayCategoryResult.first Loading @@ -944,14 +889,13 @@ class FusedAPIImpl @Inject constructor( } private suspend fun FusedAPIImpl.fetchGplayCategories( type: Category.Type, authData: AuthData, type: CategoryType, ): Triple<ResultStatus, List<FusedCategory>, String> { var errorApplicationCategory = "" var apiStatus = ResultStatus.OK val categoryList = mutableListOf<FusedCategory>() runCodeBlockWithTimeout({ val playResponse = gPlayAPIRepository.getCategoriesList(type, authData).map { app -> val playResponse = (gplayRepository.getCategories(type) as List<Category>).map { app -> val category = app.transformToFusedCategory() updateCategoryDrawable(category) category Loading @@ -968,7 +912,7 @@ class FusedAPIImpl @Inject constructor( } private suspend fun FusedAPIImpl.fetchPWACategories( type: Category.Type, type: CategoryType, ): Triple<ResultStatus, List<FusedCategory>, String> { var errorApplicationCategory = "" var apiStatus: ResultStatus = ResultStatus.OK Loading @@ -992,7 +936,7 @@ class FusedAPIImpl @Inject constructor( } private suspend fun FusedAPIImpl.fetchOpenSourceCategories( type: Category.Type, type: CategoryType, ): Triple<ResultStatus, List<FusedCategory>, String> { var errorApplicationCategory = "" var apiStatus: ResultStatus = ResultStatus.OK Loading Loading @@ -1069,14 +1013,14 @@ class FusedAPIImpl @Inject constructor( private fun getFusedCategoryBasedOnCategoryType( categories: Categories, categoryType: Category.Type, categoryType: CategoryType, tag: AppTag ): List<FusedCategory> { return when (categoryType) { Category.Type.APPLICATION -> { CategoryType.APPLICATION -> { getAppsCategoriesAsFusedCategory(categories, tag) } Category.Type.GAME -> { CategoryType.GAMES -> { getGamesCategoriesAsFusedCategory(categories, tag) } } Loading Loading @@ -1126,17 +1070,11 @@ class FusedAPIImpl @Inject constructor( } private suspend fun getPWAsCategories(): Categories? { return cleanAPKRepository.getCategoriesList( CleanAPKInterface.APP_TYPE_PWA, CleanAPKInterface.APP_SOURCE_ANY ).body() return (cleanApkPWARepository.getCategories() as Response<Categories>).body() } private suspend fun getOpenSourceCategories(): Categories? { return cleanAPKRepository.getCategoriesList( CleanAPKInterface.APP_TYPE_ANY, CleanAPKInterface.APP_SOURCE_FOSS ).body() return (cleanApkAppsRepository.getCategories() as Response<Categories>).body() } private suspend fun getOpenSourceAppsResponse(category: String): Search? { Loading Loading @@ -1187,20 +1125,6 @@ class FusedAPIImpl @Inject constructor( return list } private fun getGplaySearchResults( query: String, authData: AuthData ): LiveData<Pair<List<FusedApp>, Boolean>> { val searchResults = gPlayAPIRepository.getSearchResults(query, authData, ::replaceWithFDroid) return searchResults.map { Pair( it.first, it.second ) } } private suspend fun getGplaySearchResult( query: String, authData: AuthData Loading
app/src/main/java/foundation/e/apps/api/fused/FusedAPIRepository.kt +3 −4 Original line number Diff line number Diff line Loading @@ -22,13 +22,13 @@ import androidx.lifecycle.LiveData import com.aurora.gplayapi.SearchSuggestEntry import com.aurora.gplayapi.data.models.App import com.aurora.gplayapi.data.models.AuthData import com.aurora.gplayapi.data.models.Category import com.aurora.gplayapi.data.models.StreamBundle import com.aurora.gplayapi.data.models.StreamCluster import foundation.e.apps.api.ResultSupreme import foundation.e.apps.api.fused.data.FusedApp import foundation.e.apps.api.fused.data.FusedCategory import foundation.e.apps.api.fused.data.FusedHome import foundation.e.apps.api.fused.utils.CategoryType import foundation.e.apps.manager.database.fusedDownload.FusedDownload import foundation.e.apps.utils.enums.FilterLevel import foundation.e.apps.utils.enums.Origin Loading Loading @@ -145,10 +145,9 @@ class FusedAPIRepository @Inject constructor(private val fusedAPIImpl: FusedAPII } suspend fun getCategoriesList( type: Category.Type, authData: AuthData type: CategoryType, ): Triple<List<FusedCategory>, String, ResultStatus> { return fusedAPIImpl.getCategoriesList(type, authData) return fusedAPIImpl.getCategoriesList(type) } suspend fun getSearchSuggestions(query: String, authData: AuthData): List<SearchSuggestEntry> { Loading