From 5394e04e3d8197b92048c94c54b456ba8bf0d2a7 Mon Sep 17 00:00:00 2001 From: Nihar Thakkar Date: Fri, 21 Jun 2019 23:43:53 +0530 Subject: [PATCH] Improve error messages --- app/build.gradle | 4 +-- .../e/apps/application/model/Application.kt | 15 +++++------ .../e/apps/application/model/Downloader.kt | 25 +++++++++++-------- .../application/model/DownloaderInterface.kt | 5 ++-- .../java/foundation/e/apps/utils/Error.kt | 4 ++- app/src/main/res/values/strings.xml | 1 + 6 files changed, 32 insertions(+), 22 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index c18640e42..48673d00c 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -10,8 +10,8 @@ android { applicationId "foundation.e.apps" minSdkVersion 21 targetSdkVersion 27 - versionCode 6 - versionName "1.1.3" + versionCode 7 + versionName "1.1.4" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } buildTypes { diff --git a/app/src/main/java/foundation/e/apps/application/model/Application.kt b/app/src/main/java/foundation/e/apps/application/model/Application.kt index 8068cd3cd..4a4421652 100644 --- a/app/src/main/java/foundation/e/apps/application/model/Application.kt +++ b/app/src/main/java/foundation/e/apps/application/model/Application.kt @@ -91,7 +91,7 @@ class Application(val packageName: String, private val applicationManager: Appli if (downloader != null) { downloader?.cancelDownload() } else { - onDownloadComplete(context, DownloadManager.STATUS_FAILED) + onDownloadComplete(context, Error.NO_ERROR) } } return @@ -128,12 +128,10 @@ class Application(val packageName: String, private val applicationManager: Appli blocker.wait() } } else { - stateManager.notifyError(Error.APK_INCOMPATIBLE) - onDownloadComplete(context, DownloadManager.STATUS_FAILED) + onDownloadComplete(context, Error.APK_INCOMPATIBLE) } } else { - stateManager.notifyError(error) - onDownloadComplete(context, DownloadManager.STATUS_FAILED) + onDownloadComplete(context, error) } } @@ -150,8 +148,8 @@ class Application(val packageName: String, private val applicationManager: Appli } } - override fun onDownloadComplete(context: Context, status: Int) { - if (status == DownloadManager.STATUS_SUCCESSFUL) { + override fun onDownloadComplete(context: Context, error: Error) { + if (error == Error.NO_ERROR) { install(context) } else { synchronized(blocker) { @@ -159,6 +157,9 @@ class Application(val packageName: String, private val applicationManager: Appli } info.getApkFile(context, basicData!!).delete() applicationManager.stopInstalling(context, this) + if (error != Error.APK_DOWNLOAD_CANCELLED) { + stateManager.notifyError(error) + } } downloader = null } diff --git a/app/src/main/java/foundation/e/apps/application/model/Downloader.kt b/app/src/main/java/foundation/e/apps/application/model/Downloader.kt index 22745a585..222f1f8bf 100644 --- a/app/src/main/java/foundation/e/apps/application/model/Downloader.kt +++ b/app/src/main/java/foundation/e/apps/application/model/Downloader.kt @@ -28,6 +28,7 @@ import android.content.Intent import android.content.BroadcastReceiver import android.content.IntentFilter import android.os.AsyncTask +import foundation.e.apps.utils.Error class Downloader(private val applicationInfo: ApplicationInfo, private val fullData: FullData, private val downloaderInterface: DownloaderInterface) : @@ -64,7 +65,7 @@ class Downloader(private val applicationInfo: ApplicationInfo, private val fullD handleDownloadUpdates() }.start() } else { - downloaderInterface.onDownloadComplete(context, DownloadManager.STATUS_FAILED) + downloaderInterface.onDownloadComplete(context, Error.APK_UNAVAILABLE) } } @@ -125,23 +126,27 @@ class Downloader(private val applicationInfo: ApplicationInfo, private val fullD override fun onReceive(context: Context, intent: Intent) { unregisterReceivers(context) val status = getDownloadStatus() - if (status != null && status == DownloadManager.STATUS_SUCCESSFUL) { - IntegrityVerificationTask( - applicationInfo, - fullData, - this@Downloader) - .executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, context) + if (status != null) { + if (status == DownloadManager.STATUS_SUCCESSFUL) { + IntegrityVerificationTask( + applicationInfo, + fullData, + this@Downloader) + .executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, context) + } else { + downloaderInterface.onDownloadComplete(context, Error.APK_DOWNLOAD_FAILED) + } } else { - downloaderInterface.onDownloadComplete(context, DownloadManager.STATUS_FAILED) + downloaderInterface.onDownloadComplete(context, Error.APK_DOWNLOAD_CANCELLED) } } } override fun onIntegrityVerified(context: Context, verificationSuccessful: Boolean) { if (verificationSuccessful) { - downloaderInterface.onDownloadComplete(context, DownloadManager.STATUS_SUCCESSFUL) + downloaderInterface.onDownloadComplete(context, Error.NO_ERROR) } else { - downloaderInterface.onDownloadComplete(context, DownloadManager.STATUS_FAILED) + downloaderInterface.onDownloadComplete(context, Error.APK_CORRUPT) } } diff --git a/app/src/main/java/foundation/e/apps/application/model/DownloaderInterface.kt b/app/src/main/java/foundation/e/apps/application/model/DownloaderInterface.kt index 7c2ddb127..47bf6aeea 100644 --- a/app/src/main/java/foundation/e/apps/application/model/DownloaderInterface.kt +++ b/app/src/main/java/foundation/e/apps/application/model/DownloaderInterface.kt @@ -18,7 +18,8 @@ package foundation.e.apps.application.model import android.content.Context +import foundation.e.apps.utils.Error interface DownloaderInterface { - fun onDownloadComplete(context: Context, status: Int) -} \ No newline at end of file + fun onDownloadComplete(context: Context, error: Error) +} diff --git a/app/src/main/java/foundation/e/apps/utils/Error.kt b/app/src/main/java/foundation/e/apps/utils/Error.kt index 312cacc5e..201c632b0 100644 --- a/app/src/main/java/foundation/e/apps/utils/Error.kt +++ b/app/src/main/java/foundation/e/apps/utils/Error.kt @@ -33,7 +33,9 @@ enum class Error(val description: Int) { INVALID_PACKAGE_NAME(R.string.error_invalid_package_name), PACKAGE_ALREADY_EXISTS(R.string.error_package_already_exists), NO_ERROR(R.string.error_no_error), - APK_INCOMPATIBLE(R.string.error_apk_incompatible); + APK_INCOMPATIBLE(R.string.error_apk_incompatible), + APK_DOWNLOAD_CANCELLED(R.string.error_apk_download_cancelled), + APK_DOWNLOAD_FAILED(R.string.error_apk_download_failed); companion object { fun findError(e: Exception): Error { diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 7218300b8..4506ea74c 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -134,4 +134,5 @@ This app is already available or has been requested. No error. This app is incompatible with your device. + Download cancelled. -- GitLab