From c19e77170a53a44086bebdec8b9ac7876ae778cd Mon Sep 17 00:00:00 2001 From: Julian Raufelder Date: Wed, 16 Mar 2022 22:55:23 +0100 Subject: [PATCH] Show vault format in error message if it is not supported --- .../exception/ExceptionHandlers.kt | 3 +-- .../UnsupportedVaultFormatExceptionHandler.kt | 19 +++++++++++++++++++ presentation/src/main/res/values/strings.xml | 2 +- 3 files changed, 21 insertions(+), 3 deletions(-) create mode 100644 presentation/src/main/java/org/cryptomator/presentation/exception/UnsupportedVaultFormatExceptionHandler.kt diff --git a/presentation/src/main/java/org/cryptomator/presentation/exception/ExceptionHandlers.kt b/presentation/src/main/java/org/cryptomator/presentation/exception/ExceptionHandlers.kt index abf0f223..0062fcf5 100644 --- a/presentation/src/main/java/org/cryptomator/presentation/exception/ExceptionHandlers.kt +++ b/presentation/src/main/java/org/cryptomator/presentation/exception/ExceptionHandlers.kt @@ -3,7 +3,6 @@ package org.cryptomator.presentation.exception import android.content.ActivityNotFoundException import android.content.Context import org.cryptomator.cryptolib.api.InvalidPassphraseException -import org.cryptomator.cryptolib.api.UnsupportedVaultFormatException import org.cryptomator.domain.di.PerView import org.cryptomator.domain.exception.CloudAlreadyExistsException import org.cryptomator.domain.exception.CloudNodeAlreadyExistsException @@ -54,7 +53,6 @@ class ExceptionHandlers @Inject constructor(private val context: Context, defaul staticHandler(HashMismatchUpdateCheckException::class.java, R.string.error_hash_mismatch_update) staticHandler(GeneralUpdateErrorException::class.java, R.string.error_general_update) staticHandler(SSLHandshakePreAndroid5UpdateCheckException::class.java, R.string.error_general_update) - staticHandler(UnsupportedVaultFormatException::class.java, R.string.error_vault_version_not_supported) staticHandler( MissingVaultConfigFileException::class.java, String.format( ResourceHelper.getString(R.string.error_vault_config_file_missing_due_to_format_999), @@ -82,6 +80,7 @@ class ExceptionHandlers @Inject constructor(private val context: Context, defaul exceptionHandlers.add(CancellationExceptionHandler()) exceptionHandlers.add(NoSuchVaultExceptionHandler()) exceptionHandlers.add(PermissionNotGrantedExceptionHandler()) + exceptionHandlers.add(UnsupportedVaultFormatExceptionHandler()) } fun handle(view: View, e: Throwable) { diff --git a/presentation/src/main/java/org/cryptomator/presentation/exception/UnsupportedVaultFormatExceptionHandler.kt b/presentation/src/main/java/org/cryptomator/presentation/exception/UnsupportedVaultFormatExceptionHandler.kt new file mode 100644 index 00000000..83e5fc65 --- /dev/null +++ b/presentation/src/main/java/org/cryptomator/presentation/exception/UnsupportedVaultFormatExceptionHandler.kt @@ -0,0 +1,19 @@ +package org.cryptomator.presentation.exception + +import org.cryptomator.cryptolib.api.UnsupportedVaultFormatException +import org.cryptomator.presentation.R +import org.cryptomator.presentation.ui.activity.view.View +import org.cryptomator.presentation.util.ResourceHelper.Companion.getString +import org.cryptomator.util.ExceptionUtil + +class UnsupportedVaultFormatExceptionHandler : ExceptionHandler() { + + override fun supports(e: Throwable): Boolean { + return ExceptionUtil.contains(e, UnsupportedVaultFormatException::class.java) + } + + override fun doHandle(view: View, e: Throwable) { + val detectedFormat = ExceptionUtil.extract(e, UnsupportedVaultFormatException::class.java).get().detectedVersion + view.showError(String.format(getString(R.string.error_vault_version_not_supported), detectedFormat)) + } +} diff --git a/presentation/src/main/res/values/strings.xml b/presentation/src/main/res/values/strings.xml index febc50ca..680b5bce 100644 --- a/presentation/src/main/res/values/strings.xml +++ b/presentation/src/main/res/values/strings.xml @@ -17,7 +17,7 @@ No network connection Wrong password A file or folder already exists. - Unsupported vault. This vault has been created with another version of Cryptomator. + Vault version %1$s is unsupported. This vault has been created with an older or newer version of Cryptomator. %1$s file is missing in your vault folder. Make sure that this file exists in your vault folder in the cloud. Vault already exists. File does not exist.