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.