From a4d065abf6fccae05ab51aa8d56e171b63ffa628 Mon Sep 17 00:00:00 2001 From: Sayantan Roychowdhury Date: Thu, 27 Oct 2022 17:48:51 +0530 Subject: [PATCH 01/11] [Fix] Issue 5680: Add locale in AuthData. --- .../foundation/e/apps/login/LoginSourceGPlay.kt | 13 ++++++++++--- .../e/apps/login/api/LoginApiRepository.kt | 4 +++- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/foundation/e/apps/login/LoginSourceGPlay.kt b/app/src/main/java/foundation/e/apps/login/LoginSourceGPlay.kt index 0126beaea..6da981245 100644 --- a/app/src/main/java/foundation/e/apps/login/LoginSourceGPlay.kt +++ b/app/src/main/java/foundation/e/apps/login/LoginSourceGPlay.kt @@ -17,8 +17,10 @@ package foundation.e.apps.login +import android.content.Context import com.aurora.gplayapi.data.models.AuthData import com.google.gson.Gson +import dagger.hilt.android.qualifiers.ApplicationContext import foundation.e.apps.api.ResultSupreme import foundation.e.apps.login.api.GPlayApiFactory import foundation.e.apps.login.api.GPlayLoginInterface @@ -26,6 +28,7 @@ import foundation.e.apps.login.api.GoogleLoginApi import foundation.e.apps.login.api.LoginApiRepository import foundation.e.apps.utils.enums.User import foundation.e.apps.utils.exceptions.GPlayValidationException +import java.util.Locale import javax.inject.Inject import javax.inject.Singleton @@ -37,6 +40,7 @@ import javax.inject.Singleton */ @Singleton class LoginSourceGPlay @Inject constructor( + @ApplicationContext private val context: Context, private val gson: Gson, private val loginDataStore: LoginDataStore, ) : LoginSourceInterface { @@ -53,6 +57,9 @@ class LoginSourceGPlay @Inject constructor( private val loginApiRepository: LoginApiRepository get() = LoginApiRepository(gPlayLoginInterface, user) + private val locale: Locale + get() = context.resources.configuration.locales[0] + override fun isActive(): Boolean { if (user == User.UNAVAILABLE) { /* @@ -141,7 +148,7 @@ class LoginSourceGPlay @Inject constructor( * Get AuthData for ANONYMOUS mode. */ private suspend fun getAuthData(): ResultSupreme { - return loginApiRepository.fetchAuthData("", "").run { + return loginApiRepository.fetchAuthData("", "", locale).run { if (isSuccess()) ResultSupreme.Success(formattedAuthData(this.data!!)) else this } @@ -161,7 +168,7 @@ class LoginSourceGPlay @Inject constructor( * Use it to fetch auth data. */ if (aasToken.isNotBlank()) { - return loginApiRepository.fetchAuthData(email, aasToken) + return loginApiRepository.fetchAuthData(email, aasToken, locale) } /* @@ -192,7 +199,7 @@ class LoginSourceGPlay @Inject constructor( * Finally save the aasToken and create auth data. */ loginDataStore.saveAasToken(aasTokenFetched) - return loginApiRepository.fetchAuthData(email, aasTokenFetched) + return loginApiRepository.fetchAuthData(email, aasTokenFetched, locale) } /** diff --git a/app/src/main/java/foundation/e/apps/login/api/LoginApiRepository.kt b/app/src/main/java/foundation/e/apps/login/api/LoginApiRepository.kt index 44dcd0c7d..a1d101d2c 100644 --- a/app/src/main/java/foundation/e/apps/login/api/LoginApiRepository.kt +++ b/app/src/main/java/foundation/e/apps/login/api/LoginApiRepository.kt @@ -26,6 +26,7 @@ import foundation.e.apps.utils.enums.User import foundation.e.apps.utils.exceptions.GPlayLoginException import kotlinx.coroutines.TimeoutCancellationException import kotlinx.coroutines.withTimeout +import java.util.Locale /** * Call methods of [GoogleLoginApi] and [AnonymousLoginApi] from here. @@ -50,11 +51,12 @@ class LoginApiRepository constructor( * @param aasToken For Google login - Access token obtained from [getAasToken] function, * else blank for Anonymous login. */ - suspend fun fetchAuthData(email: String, aasToken: String): ResultSupreme { + suspend fun fetchAuthData(email: String, aasToken: String, locale: Locale): ResultSupreme { val result = runCodeBlockWithTimeout({ gPlayLoginInterface.fetchAuthData(email, aasToken) }) return result.apply { + this.data?.locale = locale this.exception = when (result) { is ResultSupreme.Timeout -> GPlayLoginException(true, "GPlay API timeout", user) is ResultSupreme.Error -> GPlayLoginException(false, result.message, user) -- GitLab From 39122e92ec7fa936ad55cd77f07701126fc031be Mon Sep 17 00:00:00 2001 From: Sayantan Roychowdhury Date: Thu, 27 Oct 2022 18:50:10 +0530 Subject: [PATCH 02/11] [Fix] Issue 5680: add locale to validated AuthData --- app/src/main/java/foundation/e/apps/login/LoginSourceGPlay.kt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/foundation/e/apps/login/LoginSourceGPlay.kt b/app/src/main/java/foundation/e/apps/login/LoginSourceGPlay.kt index 6da981245..27222dace 100644 --- a/app/src/main/java/foundation/e/apps/login/LoginSourceGPlay.kt +++ b/app/src/main/java/foundation/e/apps/login/LoginSourceGPlay.kt @@ -212,6 +212,7 @@ class LoginSourceGPlay @Inject constructor( ): ResultSupreme { val formattedAuthData = formattedAuthData(authData) + formattedAuthData.locale = locale val validityResponse = loginApiRepository.login(formattedAuthData) @@ -223,7 +224,7 @@ class LoginSourceGPlay @Inject constructor( val playResponse = validityResponse.data return if (validityResponse.isSuccess() && playResponse?.code == 200 && playResponse.isSuccessful) { - ResultSupreme.Success(authData) + ResultSupreme.Success(formattedAuthData) } else { val message = "Validating AuthData failed.\n\n" + -- GitLab From 0a9f39b55fbe9d62178a1ad029e9c14b786bc74b Mon Sep 17 00:00:00 2001 From: Sayantan Roychowdhury Date: Mon, 24 Oct 2022 16:50:26 +0530 Subject: [PATCH 03/11] [Log] Issue 5680: more verbose error message for anonymous login failure --- .../foundation/e/apps/login/api/AnonymousLoginApi.kt | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/foundation/e/apps/login/api/AnonymousLoginApi.kt b/app/src/main/java/foundation/e/apps/login/api/AnonymousLoginApi.kt index dcc7f99b8..0b0faf795 100644 --- a/app/src/main/java/foundation/e/apps/login/api/AnonymousLoginApi.kt +++ b/app/src/main/java/foundation/e/apps/login/api/AnonymousLoginApi.kt @@ -50,7 +50,15 @@ class AnonymousLoginApi( val response = gPlayHttpClient.postAuth(tokenUrl, gson.toJson(nativeDeviceProperty).toByteArray()) if (response.code != 200 || !response.isSuccessful) { - throw Exception("Error fetching Anonymous credentials: ${response.errorString}") + throw Exception( + "Error fetching Anonymous credentials\n" + + "Network code: ${response.code}\n" + + "Success: ${response.isSuccessful}" + + response.errorString.run { + if (isNotBlank()) "\nError message: ${response.errorString}" + else "" + } + ) } else { authData = gson.fromJson( String(response.responseBytes), -- GitLab From 961cc67aa7a83e42b484b61f2dcd2f794c1afacd Mon Sep 17 00:00:00 2001 From: Sayantan Roychowdhury Date: Thu, 27 Oct 2022 20:59:47 +0530 Subject: [PATCH 04/11] [Log] Issue 5680: Add log message to ResultStatus. Consider that when creating ResultSupreme. --- app/src/main/java/foundation/e/apps/api/ResultSupreme.kt | 2 +- .../main/java/foundation/e/apps/utils/enums/ResultStatus.kt | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/foundation/e/apps/api/ResultSupreme.kt b/app/src/main/java/foundation/e/apps/api/ResultSupreme.kt index f74b9c218..d64afd821 100644 --- a/app/src/main/java/foundation/e/apps/api/ResultSupreme.kt +++ b/app/src/main/java/foundation/e/apps/api/ResultSupreme.kt @@ -134,7 +134,7 @@ sealed class ResultSupreme { val resultObject = when { status == ResultStatus.OK && data != null -> Success(data) status == ResultStatus.TIMEOUT && data != null -> Timeout(data) - else -> Error(message, exception) + else -> Error(message.ifBlank { status.message }, exception) } resultObject.apply { if (isUnknownError()) { diff --git a/app/src/main/java/foundation/e/apps/utils/enums/ResultStatus.kt b/app/src/main/java/foundation/e/apps/utils/enums/ResultStatus.kt index c98415ef7..e13350a3f 100644 --- a/app/src/main/java/foundation/e/apps/utils/enums/ResultStatus.kt +++ b/app/src/main/java/foundation/e/apps/utils/enums/ResultStatus.kt @@ -4,5 +4,8 @@ enum class ResultStatus { OK, TIMEOUT, UNKNOWN, - RETRY + RETRY, + ; + + var message: String = "" } -- GitLab From 685ad3c319b91355ecc3e030d95db48d2588992d Mon Sep 17 00:00:00 2001 From: Sayantan Roychowdhury Date: Thu, 27 Oct 2022 21:41:00 +0530 Subject: [PATCH 05/11] [Log] Issue 5680: put exception message in ResultStatus in runCodeBlockWithTimeout --- app/src/main/java/foundation/e/apps/api/fused/FusedAPIImpl.kt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/foundation/e/apps/api/fused/FusedAPIImpl.kt b/app/src/main/java/foundation/e/apps/api/fused/FusedAPIImpl.kt index 1ada969bf..6d7052c86 100644 --- a/app/src/main/java/foundation/e/apps/api/fused/FusedAPIImpl.kt +++ b/app/src/main/java/foundation/e/apps/api/fused/FusedAPIImpl.kt @@ -1028,7 +1028,9 @@ class FusedAPIImpl @Inject constructor( } catch (e: Exception) { e.printStackTrace() exceptionBlock?.invoke() - ResultStatus.UNKNOWN + ResultStatus.UNKNOWN.apply { + message = e.message.toString() + } } } -- GitLab From d0b3c0d5dc9651ce1a61463a8344d39b7eed93ba Mon Sep 17 00:00:00 2001 From: Sayantan Roychowdhury Date: Thu, 27 Oct 2022 21:35:13 +0530 Subject: [PATCH 06/11] Issue 5680: Pass exception in exceptionBlock in runCodeBlockWithTimeout --- app/src/main/java/foundation/e/apps/api/fused/FusedAPIImpl.kt | 4 ++-- .../java/foundation/e/apps/login/api/LoginApiRepository.kt | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/foundation/e/apps/api/fused/FusedAPIImpl.kt b/app/src/main/java/foundation/e/apps/api/fused/FusedAPIImpl.kt index 6d7052c86..6031a1329 100644 --- a/app/src/main/java/foundation/e/apps/api/fused/FusedAPIImpl.kt +++ b/app/src/main/java/foundation/e/apps/api/fused/FusedAPIImpl.kt @@ -1015,7 +1015,7 @@ class FusedAPIImpl @Inject constructor( private suspend fun runCodeBlockWithTimeout( block: suspend () -> Unit, timeoutBlock: (() -> Unit)? = null, - exceptionBlock: (() -> Unit)? = null, + exceptionBlock: ((e: Exception) -> Unit)? = null, ): ResultStatus { return try { withTimeout(timeoutDurationInMillis) { @@ -1027,7 +1027,7 @@ class FusedAPIImpl @Inject constructor( ResultStatus.TIMEOUT } catch (e: Exception) { e.printStackTrace() - exceptionBlock?.invoke() + exceptionBlock?.invoke(e) ResultStatus.UNKNOWN.apply { message = e.message.toString() } diff --git a/app/src/main/java/foundation/e/apps/login/api/LoginApiRepository.kt b/app/src/main/java/foundation/e/apps/login/api/LoginApiRepository.kt index a1d101d2c..fa8602834 100644 --- a/app/src/main/java/foundation/e/apps/login/api/LoginApiRepository.kt +++ b/app/src/main/java/foundation/e/apps/login/api/LoginApiRepository.kt @@ -145,7 +145,7 @@ class LoginApiRepository constructor( private suspend fun runCodeBlockWithTimeout( block: suspend () -> T, timeoutBlock: (() -> T?)? = null, - exceptionBlock: (() -> T?)? = null, + exceptionBlock: ((e: Exception) -> T?)? = null, ): ResultSupreme { return try { withTimeout(timeoutDurationInMillis) { @@ -157,7 +157,7 @@ class LoginApiRepository constructor( } } catch (e: Exception) { e.printStackTrace() - ResultSupreme.Error(exceptionBlock?.invoke(), message = e.message ?: "") + ResultSupreme.Error(exceptionBlock?.invoke(e), message = e.message ?: "") } } } -- GitLab From ab5644b90db86b4874553482fef3946399cce833 Mon Sep 17 00:00:00 2001 From: Sayantan Roychowdhury Date: Thu, 27 Oct 2022 21:52:09 +0530 Subject: [PATCH 07/11] Issue 5680: Refactor getHomeScreenDataBasedOnApplicationType() --- .../e/apps/api/fused/FusedAPIImpl.kt | 58 +++++++------------ 1 file changed, 21 insertions(+), 37 deletions(-) diff --git a/app/src/main/java/foundation/e/apps/api/fused/FusedAPIImpl.kt b/app/src/main/java/foundation/e/apps/api/fused/FusedAPIImpl.kt index 6031a1329..7eeb83037 100644 --- a/app/src/main/java/foundation/e/apps/api/fused/FusedAPIImpl.kt +++ b/app/src/main/java/foundation/e/apps/api/fused/FusedAPIImpl.kt @@ -133,48 +133,32 @@ class FusedAPIImpl @Inject constructor( applicationType: String ): Pair, ResultStatus> { val list = mutableListOf() - var apiStatus = ResultStatus.OK - try { - /* - * Each category of home apps (example "Top Free Apps") will have its own timeout. - * Fetching 6 such categories will have a total timeout to 2 mins 30 seconds - * (considering each category having 25 seconds timeout). - * - * To prevent waiting so long and fail early, use withTimeout{}. - */ - withTimeout(timeoutDurationInMillis) { - if (preferenceManagerModule.isGplaySelected()) { - list.addAll(fetchGPlayHome(authData)) - } + val apiStatus = runCodeBlockWithTimeout({ - if (preferenceManagerModule.isOpenSourceSelected()) { - val response = cleanAPKRepository.getHomeScreenData( - CleanAPKInterface.APP_TYPE_ANY, - CleanAPKInterface.APP_SOURCE_FOSS - ).body() - response?.home?.let { - list.addAll(generateCleanAPKHome(it, APP_TYPE_OPEN)) - } + if (preferenceManagerModule.isGplaySelected()) { + list.addAll(fetchGPlayHome(authData)) + } + + if (preferenceManagerModule.isOpenSourceSelected()) { + val response = cleanAPKRepository.getHomeScreenData( + CleanAPKInterface.APP_TYPE_ANY, + CleanAPKInterface.APP_SOURCE_FOSS + ).body() + response?.home?.let { + list.addAll(generateCleanAPKHome(it, APP_TYPE_OPEN)) } + } - if (preferenceManagerModule.isPWASelected()) { - val response = cleanAPKRepository.getHomeScreenData( - CleanAPKInterface.APP_TYPE_PWA, - CleanAPKInterface.APP_SOURCE_ANY - ).body() - response?.home?.let { - list.addAll(generateCleanAPKHome(it, APP_TYPE_PWA)) - } + if (preferenceManagerModule.isPWASelected()) { + val response = cleanAPKRepository.getHomeScreenData( + CleanAPKInterface.APP_TYPE_PWA, + CleanAPKInterface.APP_SOURCE_ANY + ).body() + response?.home?.let { + list.addAll(generateCleanAPKHome(it, APP_TYPE_PWA)) } } - } catch (e: TimeoutCancellationException) { - e.printStackTrace() - apiStatus = ResultStatus.TIMEOUT - Timber.d("Timed out fetching home data for type: $applicationType") - } catch (e: Exception) { - apiStatus = ResultStatus.UNKNOWN - Timber.e(e) - } + }) return Pair(list, apiStatus) } -- GitLab From e5df1d15d3936d422a62de6ebb2920beeac53bb9 Mon Sep 17 00:00:00 2001 From: Sayantan Roychowdhury Date: Fri, 28 Oct 2022 11:28:54 +0530 Subject: [PATCH 08/11] [Log] Issue 5680: Send stackTraceToString instead of exception message --- app/src/main/java/foundation/e/apps/api/fused/FusedAPIImpl.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/foundation/e/apps/api/fused/FusedAPIImpl.kt b/app/src/main/java/foundation/e/apps/api/fused/FusedAPIImpl.kt index 7eeb83037..ac5d0e8db 100644 --- a/app/src/main/java/foundation/e/apps/api/fused/FusedAPIImpl.kt +++ b/app/src/main/java/foundation/e/apps/api/fused/FusedAPIImpl.kt @@ -1013,7 +1013,7 @@ class FusedAPIImpl @Inject constructor( e.printStackTrace() exceptionBlock?.invoke(e) ResultStatus.UNKNOWN.apply { - message = e.message.toString() + message = e.stackTraceToString() } } } -- GitLab From 215f32921171c3c6e0ecd1f64f2f795a8c6d8b8b Mon Sep 17 00:00:00 2001 From: Sayantan Roychowdhury Date: Fri, 28 Oct 2022 11:29:39 +0530 Subject: [PATCH 09/11] [Log] Issue 5680: layout change - wrap more info text in scrollview. --- app/src/main/res/layout/dialog_error_log.xml | 27 ++++++++++++-------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/app/src/main/res/layout/dialog_error_log.xml b/app/src/main/res/layout/dialog_error_log.xml index a7e51a731..e4005d628 100644 --- a/app/src/main/res/layout/dialog_error_log.xml +++ b/app/src/main/res/layout/dialog_error_log.xml @@ -37,16 +37,23 @@ android:visibility="gone" /> - + android:layout_height="wrap_content"> + + + + \ No newline at end of file -- GitLab From cd39e5fb58a28d6ead96d8c4dce3adf010f3c2bb Mon Sep 17 00:00:00 2001 From: Sayantan Roychowdhury Date: Fri, 28 Oct 2022 11:30:39 +0530 Subject: [PATCH 10/11] [Log] Issue 5680: show error from ResultStatus instead of fixed "Data load error" --- .../e/apps/application/ApplicationViewModel.kt | 8 ++++++-- .../e/apps/applicationlist/ApplicationListViewModel.kt | 6 ++++-- .../e/apps/categories/CategoriesViewModel.kt | 10 +++++++--- .../main/java/foundation/e/apps/home/HomeViewModel.kt | 10 +++++++--- .../java/foundation/e/apps/search/SearchViewModel.kt | 8 ++++++-- .../java/foundation/e/apps/updates/UpdatesViewModel.kt | 8 +++++--- 6 files changed, 35 insertions(+), 15 deletions(-) diff --git a/app/src/main/java/foundation/e/apps/application/ApplicationViewModel.kt b/app/src/main/java/foundation/e/apps/application/ApplicationViewModel.kt index 886bcadbb..153ef28e6 100644 --- a/app/src/main/java/foundation/e/apps/application/ApplicationViewModel.kt +++ b/app/src/main/java/foundation/e/apps/application/ApplicationViewModel.kt @@ -105,11 +105,15 @@ class ApplicationViewModel @Inject constructor( ) fusedApp.postValue(appData) + val status = appData.second + if (appData.second != ResultStatus.OK) { val exception = if (authData.aasToken.isNotBlank() || authData.authToken.isNotBlank()) - GPlayException(appData.second == ResultStatus.TIMEOUT, "Data load error") - else CleanApkException(appData.second == ResultStatus.TIMEOUT, "Data load error") + GPlayException(appData.second == ResultStatus.TIMEOUT, + status.message.ifBlank { "Data load error" }) + else CleanApkException(appData.second == ResultStatus.TIMEOUT, + status.message.ifBlank { "Data load error" }) exceptionsList.add(exception) exceptionsLiveData.postValue(exceptionsList) diff --git a/app/src/main/java/foundation/e/apps/applicationlist/ApplicationListViewModel.kt b/app/src/main/java/foundation/e/apps/applicationlist/ApplicationListViewModel.kt index 4fe457439..03abced44 100644 --- a/app/src/main/java/foundation/e/apps/applicationlist/ApplicationListViewModel.kt +++ b/app/src/main/java/foundation/e/apps/applicationlist/ApplicationListViewModel.kt @@ -77,8 +77,10 @@ class ApplicationListViewModel @Inject constructor( if (!result.isSuccess()) { val exception = if (authData.aasToken.isNotBlank() || authData.authToken.isNotBlank()) - GPlayException(result.isTimeout(), "Data load error") - else CleanApkException(result.isTimeout(), "Data load error") + GPlayException(result.isTimeout(), + result.message.ifBlank { "Data load error" }) + else CleanApkException(result.isTimeout(), + result.message.ifBlank { "Data load error" }) exceptionsList.add(exception) exceptionsLiveData.postValue(exceptionsList) diff --git a/app/src/main/java/foundation/e/apps/categories/CategoriesViewModel.kt b/app/src/main/java/foundation/e/apps/categories/CategoriesViewModel.kt index 13456df3c..eee7e3e6e 100644 --- a/app/src/main/java/foundation/e/apps/categories/CategoriesViewModel.kt +++ b/app/src/main/java/foundation/e/apps/categories/CategoriesViewModel.kt @@ -65,11 +65,15 @@ class CategoriesViewModel @Inject constructor( val categoriesData = fusedAPIRepository.getCategoriesList(type, authData) categoriesList.postValue(categoriesData) - if (categoriesData.third != ResultStatus.OK) { + val status = categoriesData.third + + if (status != ResultStatus.OK) { val exception = if (authData.aasToken.isNotBlank() || authData.authToken.isNotBlank()) - GPlayException(categoriesData.third == ResultStatus.TIMEOUT, "Data load error") - else CleanApkException(categoriesData.third == ResultStatus.TIMEOUT, "Data load error") + GPlayException(categoriesData.third == ResultStatus.TIMEOUT, + status.message.ifBlank { "Data load error" }) + else CleanApkException(categoriesData.third == ResultStatus.TIMEOUT, + status.message.ifBlank { "Data load error" }) exceptionsList.add(exception) exceptionsLiveData.postValue(exceptionsList) diff --git a/app/src/main/java/foundation/e/apps/home/HomeViewModel.kt b/app/src/main/java/foundation/e/apps/home/HomeViewModel.kt index 596d07673..b1805a181 100644 --- a/app/src/main/java/foundation/e/apps/home/HomeViewModel.kt +++ b/app/src/main/java/foundation/e/apps/home/HomeViewModel.kt @@ -69,11 +69,15 @@ class HomeViewModel @Inject constructor( val screenData = fusedAPIRepository.getHomeScreenData(authData) homeScreenData.postValue(screenData) - if (screenData.second != ResultStatus.OK) { + val status = screenData.second + + if (status != ResultStatus.OK) { val exception = if (authData.aasToken.isNotBlank() || authData.authToken.isNotBlank()) - GPlayException(screenData.second == ResultStatus.TIMEOUT, "Data load error") - else CleanApkException(screenData.second == ResultStatus.TIMEOUT, "Data load error") + GPlayException(screenData.second == ResultStatus.TIMEOUT, + status.message.ifBlank { "Data load error" }) + else CleanApkException(screenData.second == ResultStatus.TIMEOUT, + status.message.ifBlank { "Data load error" }) exceptionsList.add(exception) exceptionsLiveData.postValue(exceptionsList) diff --git a/app/src/main/java/foundation/e/apps/search/SearchViewModel.kt b/app/src/main/java/foundation/e/apps/search/SearchViewModel.kt index 02c10cca4..42568c987 100644 --- a/app/src/main/java/foundation/e/apps/search/SearchViewModel.kt +++ b/app/src/main/java/foundation/e/apps/search/SearchViewModel.kt @@ -88,8 +88,12 @@ class SearchViewModel @Inject constructor( if (!it.isSuccess()) { val exception = if (authData.aasToken.isNotBlank() || authData.authToken.isNotBlank()) { - GPlayException(it.isTimeout(), "Data load error") - } else CleanApkException(it.isTimeout(), "Data load error") + GPlayException(it.isTimeout(), + it.message.ifBlank { "Data load error" }) + } else { + CleanApkException(it.isTimeout(), + it.message.ifBlank { "Data load error" }) + } exceptionsList.add(exception) exceptionsLiveData.postValue(exceptionsList) diff --git a/app/src/main/java/foundation/e/apps/updates/UpdatesViewModel.kt b/app/src/main/java/foundation/e/apps/updates/UpdatesViewModel.kt index 9be088227..0b546deca 100644 --- a/app/src/main/java/foundation/e/apps/updates/UpdatesViewModel.kt +++ b/app/src/main/java/foundation/e/apps/updates/UpdatesViewModel.kt @@ -68,18 +68,20 @@ class UpdatesViewModel @Inject constructor( else updatesManagerRepository.getUpdatesOSS() updatesList.postValue(updatesResult) - if (updatesResult.second != ResultStatus.OK) { + val status = updatesResult.second + + if (status != ResultStatus.OK) { val exception = if (authData != null && (authData.aasToken.isNotBlank() || authData.authToken.isNotBlank()) ) { GPlayException( updatesResult.second == ResultStatus.TIMEOUT, - "Data load error" + status.message.ifBlank { "Data load error" } ) } else CleanApkException( updatesResult.second == ResultStatus.TIMEOUT, - "Data load error" + status.message.ifBlank { "Data load error" } ) exceptionsList.add(exception) -- GitLab From 085b57f672e3b7b7e2a3cca4ff541a94dd1729e7 Mon Sep 17 00:00:00 2001 From: Sayantan Roychowdhury Date: Mon, 31 Oct 2022 17:42:51 +0530 Subject: [PATCH 11/11] ktlint fixes --- .../e/apps/application/ApplicationViewModel.kt | 12 ++++++++---- .../apps/applicationlist/ApplicationListViewModel.kt | 12 ++++++++---- .../e/apps/categories/CategoriesViewModel.kt | 12 ++++++++---- .../java/foundation/e/apps/home/HomeViewModel.kt | 12 ++++++++---- .../foundation/e/apps/login/api/AnonymousLoginApi.kt | 12 ++++++------ .../java/foundation/e/apps/search/SearchViewModel.kt | 12 ++++++++---- .../foundation/e/apps/updates/UpdatesFragment.kt | 7 +++---- .../e/apps/updates/manager/UpdatesWorker.kt | 3 +-- 8 files changed, 50 insertions(+), 32 deletions(-) diff --git a/app/src/main/java/foundation/e/apps/application/ApplicationViewModel.kt b/app/src/main/java/foundation/e/apps/application/ApplicationViewModel.kt index 153ef28e6..6366fdb28 100644 --- a/app/src/main/java/foundation/e/apps/application/ApplicationViewModel.kt +++ b/app/src/main/java/foundation/e/apps/application/ApplicationViewModel.kt @@ -110,10 +110,14 @@ class ApplicationViewModel @Inject constructor( if (appData.second != ResultStatus.OK) { val exception = if (authData.aasToken.isNotBlank() || authData.authToken.isNotBlank()) - GPlayException(appData.second == ResultStatus.TIMEOUT, - status.message.ifBlank { "Data load error" }) - else CleanApkException(appData.second == ResultStatus.TIMEOUT, - status.message.ifBlank { "Data load error" }) + GPlayException( + appData.second == ResultStatus.TIMEOUT, + status.message.ifBlank { "Data load error" } + ) + else CleanApkException( + appData.second == ResultStatus.TIMEOUT, + status.message.ifBlank { "Data load error" } + ) exceptionsList.add(exception) exceptionsLiveData.postValue(exceptionsList) diff --git a/app/src/main/java/foundation/e/apps/applicationlist/ApplicationListViewModel.kt b/app/src/main/java/foundation/e/apps/applicationlist/ApplicationListViewModel.kt index 03abced44..d3045d919 100644 --- a/app/src/main/java/foundation/e/apps/applicationlist/ApplicationListViewModel.kt +++ b/app/src/main/java/foundation/e/apps/applicationlist/ApplicationListViewModel.kt @@ -77,10 +77,14 @@ class ApplicationListViewModel @Inject constructor( if (!result.isSuccess()) { val exception = if (authData.aasToken.isNotBlank() || authData.authToken.isNotBlank()) - GPlayException(result.isTimeout(), - result.message.ifBlank { "Data load error" }) - else CleanApkException(result.isTimeout(), - result.message.ifBlank { "Data load error" }) + GPlayException( + result.isTimeout(), + result.message.ifBlank { "Data load error" } + ) + else CleanApkException( + result.isTimeout(), + result.message.ifBlank { "Data load error" } + ) exceptionsList.add(exception) exceptionsLiveData.postValue(exceptionsList) diff --git a/app/src/main/java/foundation/e/apps/categories/CategoriesViewModel.kt b/app/src/main/java/foundation/e/apps/categories/CategoriesViewModel.kt index eee7e3e6e..d505cf136 100644 --- a/app/src/main/java/foundation/e/apps/categories/CategoriesViewModel.kt +++ b/app/src/main/java/foundation/e/apps/categories/CategoriesViewModel.kt @@ -70,10 +70,14 @@ class CategoriesViewModel @Inject constructor( if (status != ResultStatus.OK) { val exception = if (authData.aasToken.isNotBlank() || authData.authToken.isNotBlank()) - GPlayException(categoriesData.third == ResultStatus.TIMEOUT, - status.message.ifBlank { "Data load error" }) - else CleanApkException(categoriesData.third == ResultStatus.TIMEOUT, - status.message.ifBlank { "Data load error" }) + GPlayException( + categoriesData.third == ResultStatus.TIMEOUT, + status.message.ifBlank { "Data load error" } + ) + else CleanApkException( + categoriesData.third == ResultStatus.TIMEOUT, + status.message.ifBlank { "Data load error" } + ) exceptionsList.add(exception) exceptionsLiveData.postValue(exceptionsList) diff --git a/app/src/main/java/foundation/e/apps/home/HomeViewModel.kt b/app/src/main/java/foundation/e/apps/home/HomeViewModel.kt index b1805a181..25cb14b7a 100644 --- a/app/src/main/java/foundation/e/apps/home/HomeViewModel.kt +++ b/app/src/main/java/foundation/e/apps/home/HomeViewModel.kt @@ -74,10 +74,14 @@ class HomeViewModel @Inject constructor( if (status != ResultStatus.OK) { val exception = if (authData.aasToken.isNotBlank() || authData.authToken.isNotBlank()) - GPlayException(screenData.second == ResultStatus.TIMEOUT, - status.message.ifBlank { "Data load error" }) - else CleanApkException(screenData.second == ResultStatus.TIMEOUT, - status.message.ifBlank { "Data load error" }) + GPlayException( + screenData.second == ResultStatus.TIMEOUT, + status.message.ifBlank { "Data load error" } + ) + else CleanApkException( + screenData.second == ResultStatus.TIMEOUT, + status.message.ifBlank { "Data load error" } + ) exceptionsList.add(exception) exceptionsLiveData.postValue(exceptionsList) diff --git a/app/src/main/java/foundation/e/apps/login/api/AnonymousLoginApi.kt b/app/src/main/java/foundation/e/apps/login/api/AnonymousLoginApi.kt index 0b0faf795..70d795a89 100644 --- a/app/src/main/java/foundation/e/apps/login/api/AnonymousLoginApi.kt +++ b/app/src/main/java/foundation/e/apps/login/api/AnonymousLoginApi.kt @@ -52,12 +52,12 @@ class AnonymousLoginApi( if (response.code != 200 || !response.isSuccessful) { throw Exception( "Error fetching Anonymous credentials\n" + - "Network code: ${response.code}\n" + - "Success: ${response.isSuccessful}" + - response.errorString.run { - if (isNotBlank()) "\nError message: ${response.errorString}" - else "" - } + "Network code: ${response.code}\n" + + "Success: ${response.isSuccessful}" + + response.errorString.run { + if (isNotBlank()) "\nError message: ${response.errorString}" + else "" + } ) } else { authData = gson.fromJson( diff --git a/app/src/main/java/foundation/e/apps/search/SearchViewModel.kt b/app/src/main/java/foundation/e/apps/search/SearchViewModel.kt index 42568c987..aa0f9697e 100644 --- a/app/src/main/java/foundation/e/apps/search/SearchViewModel.kt +++ b/app/src/main/java/foundation/e/apps/search/SearchViewModel.kt @@ -88,11 +88,15 @@ class SearchViewModel @Inject constructor( if (!it.isSuccess()) { val exception = if (authData.aasToken.isNotBlank() || authData.authToken.isNotBlank()) { - GPlayException(it.isTimeout(), - it.message.ifBlank { "Data load error" }) + GPlayException( + it.isTimeout(), + it.message.ifBlank { "Data load error" } + ) } else { - CleanApkException(it.isTimeout(), - it.message.ifBlank { "Data load error" }) + CleanApkException( + it.isTimeout(), + it.message.ifBlank { "Data load error" } + ) } exceptionsList.add(exception) diff --git a/app/src/main/java/foundation/e/apps/updates/UpdatesFragment.kt b/app/src/main/java/foundation/e/apps/updates/UpdatesFragment.kt index bead0da21..7c1865993 100644 --- a/app/src/main/java/foundation/e/apps/updates/UpdatesFragment.kt +++ b/app/src/main/java/foundation/e/apps/updates/UpdatesFragment.kt @@ -39,24 +39,23 @@ import foundation.e.apps.MainActivityViewModel import foundation.e.apps.PrivacyInfoViewModel import foundation.e.apps.R import foundation.e.apps.api.ResultSupreme -import foundation.e.apps.api.fused.FusedAPIImpl import foundation.e.apps.api.fused.FusedAPIInterface import foundation.e.apps.api.fused.data.FusedApp import foundation.e.apps.application.subFrags.ApplicationDialogFragment import foundation.e.apps.applicationlist.ApplicationListRVAdapter import foundation.e.apps.databinding.FragmentUpdatesBinding -import foundation.e.apps.manager.database.fusedDownload.FusedDownload import foundation.e.apps.login.AuthObject +import foundation.e.apps.manager.database.fusedDownload.FusedDownload import foundation.e.apps.manager.download.data.DownloadProgress import foundation.e.apps.manager.pkg.PkgManagerModule import foundation.e.apps.manager.workmanager.InstallWorkManager.INSTALL_WORK_NAME import foundation.e.apps.updates.manager.UpdatesWorkManager import foundation.e.apps.utils.enums.ResultStatus import foundation.e.apps.utils.enums.Status -import foundation.e.apps.utils.exceptions.GPlayException -import foundation.e.apps.utils.exceptions.GPlayLoginException import foundation.e.apps.utils.eventBus.AppEvent import foundation.e.apps.utils.eventBus.EventBus +import foundation.e.apps.utils.exceptions.GPlayException +import foundation.e.apps.utils.exceptions.GPlayLoginException import foundation.e.apps.utils.modules.CommonUtilsModule.safeNavigate import foundation.e.apps.utils.modules.PWAManagerModule import foundation.e.apps.utils.parentFragment.TimeoutFragment diff --git a/app/src/main/java/foundation/e/apps/updates/manager/UpdatesWorker.kt b/app/src/main/java/foundation/e/apps/updates/manager/UpdatesWorker.kt index 0b29b17fc..c9c1076d3 100644 --- a/app/src/main/java/foundation/e/apps/updates/manager/UpdatesWorker.kt +++ b/app/src/main/java/foundation/e/apps/updates/manager/UpdatesWorker.kt @@ -28,12 +28,11 @@ import foundation.e.apps.updates.UpdatesNotifier import foundation.e.apps.utils.enums.Origin import foundation.e.apps.utils.enums.ResultStatus import foundation.e.apps.utils.enums.Type +import foundation.e.apps.utils.enums.User import foundation.e.apps.utils.eventBus.AppEvent import foundation.e.apps.utils.eventBus.EventBus import foundation.e.apps.utils.modules.DataStoreManager import kotlinx.coroutines.delay -import foundation.e.apps.utils.enums.User -import foundation.e.apps.utils.modules.DataStoreModule import timber.log.Timber import java.io.ByteArrayOutputStream import java.net.URL -- GitLab