diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/storage/InsufficientStorageException.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/storage/InsufficientStorageException.kt index 32d18cb7c2784b112e909947dcc80a9cbe57fb91..bb38a584438e3e1078078684667e7fa96da905d2 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/storage/InsufficientStorageException.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/storage/InsufficientStorageException.kt @@ -1,7 +1,20 @@ package de.rki.coronawarnapp.storage +import android.content.Context +import android.text.format.Formatter +import de.rki.coronawarnapp.util.FormattedError import java.io.IOException class InsufficientStorageException( val result: DeviceStorage.CheckResult -) : IOException("Not enough free space (Want:${result.requiredBytes}; Have:${result.freeBytes}") +) : IOException( + "Not enough free space: ${result.requiredBytes}B are required and only ${result.freeBytes}B are available." +), FormattedError { + + override fun getFormattedError(context: Context): String { + val formattedRequired = Formatter.formatShortFileSize(context, result.requiredBytes) + val formattedFree = Formatter.formatShortFileSize(context, result.freeBytes) + // TODO Replace with localized message when the exception is logged via new error tracking. + return "Not enough free space: $formattedRequired are required and only $formattedFree are available." + } +} diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/FormattedError.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/FormattedError.kt new file mode 100644 index 0000000000000000000000000000000000000000..cd100ebbc6db68e6362d66ee24e175c656f7b118 --- /dev/null +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/FormattedError.kt @@ -0,0 +1,12 @@ +package de.rki.coronawarnapp.util + +import android.content.Context + +interface FormattedError { + fun getFormattedError(context: Context): String +} + +fun Throwable.tryFormattedError(context: Context): String = when (this) { + is FormattedError -> this.getFormattedError(context) + else -> localizedMessage ?: this.toString() +}