Loading app/src/main/java/foundation/e/apps/data/application/ApplicationRepository.kt +17 −9 Original line number Diff line number Diff line Loading @@ -109,7 +109,7 @@ class ApplicationRepository @Inject constructor( storeRepository.getHomeScreenData(list) } setHomeErrorMessage(result.getResultStatus(), source) prefixHomeErrorMessage(result, source) list.sortBy { when (it.source) { APP_TYPE_OPEN -> AppSourceWeight.OPEN_SOURCE.ordinal Loading @@ -118,17 +118,25 @@ class ApplicationRepository @Inject constructor( } } return ResultSupreme.create(result.getResultStatus(), list) return ResultSupreme.create( result.getResultStatus(), list, result.message, result.exception, ) } private fun setHomeErrorMessage(apiStatus: ResultStatus, source: Source) { if (apiStatus != ResultStatus.OK) { apiStatus.message = when (source) { Source.PLAY_STORE -> ("GPlay home loading error\n" + apiStatus.message).trim() Source.SYSTEM_APP -> ("Gitlab home not allowed\n" + apiStatus.message).trim() Source.OPEN_SOURCE -> ("Open Source home loading error\n" + apiStatus.message).trim() Source.PWA -> ("PWA home loading error\n" + apiStatus.message).trim() private fun prefixHomeErrorMessage(result: ResultSupreme<*>, source: Source) { if (result.getResultStatus() != ResultStatus.OK) { val prefix = when (source) { Source.PLAY_STORE -> "GPlay home loading error" Source.SYSTEM_APP -> "Gitlab home not allowed" Source.OPEN_SOURCE -> "Open Source home loading error" Source.PWA -> "PWA home loading error" } result.message = listOf(prefix, result.message) .filter { it.isNotBlank() } .joinToString("\n") } } Loading app/src/main/java/foundation/e/apps/data/application/category/CategoriesResponse.kt +2 −1 Original line number Diff line number Diff line Loading @@ -9,5 +9,6 @@ data class CategoriesResponse( val categories: List<Category>, val type: CategoryType, val source: Source, val status: ResultStatus val status: ResultStatus, val message: String = "", ) app/src/main/java/foundation/e/apps/data/application/category/CategoryApiImpl.kt +40 −20 Original line number Diff line number Diff line Loading @@ -51,19 +51,25 @@ class CategoryApiImpl @Inject constructor( val categoryResponses = mutableListOf<CategoriesResponse>() for ((source, _) in enabledStoreRepositoryProvider.awaitEnabledStores()) { val categories = mutableListOf<Category>() val status = fetchCategoryResult(categories, type, source) categoryResponses.add(CategoriesResponse(categories, type, source, status)) val result = fetchCategoryResult(type, source) categoryResponses.add( CategoriesResponse( categories = result.categories, type = type, source = source, status = result.status, message = result.message, ) ) } return categoryResponses } private suspend fun fetchCategoryResult( categoriesList: MutableList<Category>, type: CategoryType, source: Source ): ResultStatus { val categoryResult = when (source) { ): CategoryFetchResult { return when (source) { Source.OPEN_SOURCE -> { fetchCleanApkCategories(type, Source.OPEN_SOURCE) } Loading @@ -76,21 +82,16 @@ class CategoryApiImpl @Inject constructor( fetchGplayCategories(type) } } categoryResult.let { categoriesList.addAll(it.first) } return categoryResult.second } private suspend fun fetchGplayCategories( type: CategoryType, ): Pair<List<Category>, ResultStatus> { ): CategoryFetchResult { val playStoreRepository = awaitPlayStoreRepository() ?: return Pair( emptyList(), ResultStatus.UNKNOWN.apply { message = getPlayStoreUnavailableMessage() }, ?: return CategoryFetchResult( categories = emptyList(), status = ResultStatus.UNKNOWN, message = getPlayStoreUnavailableMessage(), ) val categoryList = mutableListOf<Category>() val result = handleNetworkResult { Loading @@ -107,13 +108,17 @@ class CategoryApiImpl @Inject constructor( categoryList } return Pair(result.data ?: listOf(), result.getResultStatus()) return CategoryFetchResult( categories = result.data ?: listOf(), status = result.getResultStatus(), message = result.message, ) } private suspend fun fetchCleanApkCategories( type: CategoryType, source: Source ): Pair<List<Category>, ResultStatus> { ): CategoryFetchResult { val categoryList = mutableListOf<Category>() var tag: AppTag? = null Loading @@ -137,7 +142,11 @@ class CategoryApiImpl @Inject constructor( } } return Pair(categoryList, result.getResultStatus()) return CategoryFetchResult( categories = categoryList, status = result.getResultStatus(), message = result.message, ) } private fun getFusedCategoryBasedOnCategoryType( Loading Loading @@ -227,7 +236,12 @@ class CategoryApiImpl @Inject constructor( list.add(it) } } return ResultSupreme.create(result.getResultStatus(), Pair(list, "")) return ResultSupreme.create( result.getResultStatus(), Pair(list, ""), result.message, result.exception, ) } private suspend fun getCleanApkAppsResponse( Loading @@ -248,4 +262,10 @@ class CategoryApiImpl @Inject constructor( private suspend fun awaitPlayStoreRepository(): PlayStoreRepository? { return enabledStoreRepositoryProvider.awaitStore(Source.PLAY_STORE) as? PlayStoreRepository } private data class CategoryFetchResult( val categories: List<Category>, val status: ResultStatus, val message: String = "", ) } app/src/main/java/foundation/e/apps/data/application/search/SearchRepositoryImpl.kt +6 −1 Original line number Diff line number Diff line Loading @@ -234,7 +234,12 @@ class SearchRepositoryImpl @Inject constructor( } } return ResultSupreme.create(result.getResultStatus(), application) return ResultSupreme.create( result.getResultStatus(), application, result.message, result.exception, ) } override suspend fun getSearchSuggestions(query: String): List<SearchSuggestion> { Loading app/src/main/java/foundation/e/apps/ui/categories/CategoriesViewModel.kt +2 −2 Original line number Diff line number Diff line Loading @@ -81,12 +81,12 @@ class CategoriesViewModel @Inject constructor( val error = if (data.source == Source.PLAY_STORE) { GPlayException( data.status == ResultStatus.TIMEOUT, data.status.message.ifBlank { "Data load error" } data.message.ifBlank { "Data load error" } ) } else { CleanApkException( data.status == ResultStatus.TIMEOUT, data.status.message.ifBlank { "Data load error" } data.message.ifBlank { "Data load error" } ) } exceptions.add( Loading Loading
app/src/main/java/foundation/e/apps/data/application/ApplicationRepository.kt +17 −9 Original line number Diff line number Diff line Loading @@ -109,7 +109,7 @@ class ApplicationRepository @Inject constructor( storeRepository.getHomeScreenData(list) } setHomeErrorMessage(result.getResultStatus(), source) prefixHomeErrorMessage(result, source) list.sortBy { when (it.source) { APP_TYPE_OPEN -> AppSourceWeight.OPEN_SOURCE.ordinal Loading @@ -118,17 +118,25 @@ class ApplicationRepository @Inject constructor( } } return ResultSupreme.create(result.getResultStatus(), list) return ResultSupreme.create( result.getResultStatus(), list, result.message, result.exception, ) } private fun setHomeErrorMessage(apiStatus: ResultStatus, source: Source) { if (apiStatus != ResultStatus.OK) { apiStatus.message = when (source) { Source.PLAY_STORE -> ("GPlay home loading error\n" + apiStatus.message).trim() Source.SYSTEM_APP -> ("Gitlab home not allowed\n" + apiStatus.message).trim() Source.OPEN_SOURCE -> ("Open Source home loading error\n" + apiStatus.message).trim() Source.PWA -> ("PWA home loading error\n" + apiStatus.message).trim() private fun prefixHomeErrorMessage(result: ResultSupreme<*>, source: Source) { if (result.getResultStatus() != ResultStatus.OK) { val prefix = when (source) { Source.PLAY_STORE -> "GPlay home loading error" Source.SYSTEM_APP -> "Gitlab home not allowed" Source.OPEN_SOURCE -> "Open Source home loading error" Source.PWA -> "PWA home loading error" } result.message = listOf(prefix, result.message) .filter { it.isNotBlank() } .joinToString("\n") } } Loading
app/src/main/java/foundation/e/apps/data/application/category/CategoriesResponse.kt +2 −1 Original line number Diff line number Diff line Loading @@ -9,5 +9,6 @@ data class CategoriesResponse( val categories: List<Category>, val type: CategoryType, val source: Source, val status: ResultStatus val status: ResultStatus, val message: String = "", )
app/src/main/java/foundation/e/apps/data/application/category/CategoryApiImpl.kt +40 −20 Original line number Diff line number Diff line Loading @@ -51,19 +51,25 @@ class CategoryApiImpl @Inject constructor( val categoryResponses = mutableListOf<CategoriesResponse>() for ((source, _) in enabledStoreRepositoryProvider.awaitEnabledStores()) { val categories = mutableListOf<Category>() val status = fetchCategoryResult(categories, type, source) categoryResponses.add(CategoriesResponse(categories, type, source, status)) val result = fetchCategoryResult(type, source) categoryResponses.add( CategoriesResponse( categories = result.categories, type = type, source = source, status = result.status, message = result.message, ) ) } return categoryResponses } private suspend fun fetchCategoryResult( categoriesList: MutableList<Category>, type: CategoryType, source: Source ): ResultStatus { val categoryResult = when (source) { ): CategoryFetchResult { return when (source) { Source.OPEN_SOURCE -> { fetchCleanApkCategories(type, Source.OPEN_SOURCE) } Loading @@ -76,21 +82,16 @@ class CategoryApiImpl @Inject constructor( fetchGplayCategories(type) } } categoryResult.let { categoriesList.addAll(it.first) } return categoryResult.second } private suspend fun fetchGplayCategories( type: CategoryType, ): Pair<List<Category>, ResultStatus> { ): CategoryFetchResult { val playStoreRepository = awaitPlayStoreRepository() ?: return Pair( emptyList(), ResultStatus.UNKNOWN.apply { message = getPlayStoreUnavailableMessage() }, ?: return CategoryFetchResult( categories = emptyList(), status = ResultStatus.UNKNOWN, message = getPlayStoreUnavailableMessage(), ) val categoryList = mutableListOf<Category>() val result = handleNetworkResult { Loading @@ -107,13 +108,17 @@ class CategoryApiImpl @Inject constructor( categoryList } return Pair(result.data ?: listOf(), result.getResultStatus()) return CategoryFetchResult( categories = result.data ?: listOf(), status = result.getResultStatus(), message = result.message, ) } private suspend fun fetchCleanApkCategories( type: CategoryType, source: Source ): Pair<List<Category>, ResultStatus> { ): CategoryFetchResult { val categoryList = mutableListOf<Category>() var tag: AppTag? = null Loading @@ -137,7 +142,11 @@ class CategoryApiImpl @Inject constructor( } } return Pair(categoryList, result.getResultStatus()) return CategoryFetchResult( categories = categoryList, status = result.getResultStatus(), message = result.message, ) } private fun getFusedCategoryBasedOnCategoryType( Loading Loading @@ -227,7 +236,12 @@ class CategoryApiImpl @Inject constructor( list.add(it) } } return ResultSupreme.create(result.getResultStatus(), Pair(list, "")) return ResultSupreme.create( result.getResultStatus(), Pair(list, ""), result.message, result.exception, ) } private suspend fun getCleanApkAppsResponse( Loading @@ -248,4 +262,10 @@ class CategoryApiImpl @Inject constructor( private suspend fun awaitPlayStoreRepository(): PlayStoreRepository? { return enabledStoreRepositoryProvider.awaitStore(Source.PLAY_STORE) as? PlayStoreRepository } private data class CategoryFetchResult( val categories: List<Category>, val status: ResultStatus, val message: String = "", ) }
app/src/main/java/foundation/e/apps/data/application/search/SearchRepositoryImpl.kt +6 −1 Original line number Diff line number Diff line Loading @@ -234,7 +234,12 @@ class SearchRepositoryImpl @Inject constructor( } } return ResultSupreme.create(result.getResultStatus(), application) return ResultSupreme.create( result.getResultStatus(), application, result.message, result.exception, ) } override suspend fun getSearchSuggestions(query: String): List<SearchSuggestion> { Loading
app/src/main/java/foundation/e/apps/ui/categories/CategoriesViewModel.kt +2 −2 Original line number Diff line number Diff line Loading @@ -81,12 +81,12 @@ class CategoriesViewModel @Inject constructor( val error = if (data.source == Source.PLAY_STORE) { GPlayException( data.status == ResultStatus.TIMEOUT, data.status.message.ifBlank { "Data load error" } data.message.ifBlank { "Data load error" } ) } else { CleanApkException( data.status == ResultStatus.TIMEOUT, data.status.message.ifBlank { "Data load error" } data.message.ifBlank { "Data load error" } ) } exceptions.add( Loading