Display error details when checking server settings

This commit is contained in:
cketti 2023-12-06 18:28:19 +01:00
parent 18c45e49a3
commit 56bd19f0cf
2 changed files with 45 additions and 12 deletions

View file

@ -1,29 +1,60 @@
package app.k9mail.feature.account.server.validation.ui
import android.content.res.Resources
import androidx.annotation.StringRes
import app.k9mail.feature.account.server.validation.R
import app.k9mail.feature.account.server.validation.ui.ServerValidationContract.Error
internal fun Error.toResourceString(resources: Resources): String {
return when (this) {
is Error.AuthenticationError -> resources.getString(
R.string.account_server_validation_error_authentication,
)
is Error.AuthenticationError -> {
resources.buildErrorString(
titleResId = R.string.account_server_validation_error_authentication,
detailsResId = R.string.account_server_validation_error_server_message,
detailsMessage = serverMessage,
)
}
is Error.CertificateError -> resources.getString(
R.string.account_server_validation_error_certificate,
)
is Error.NetworkError -> resources.getString(
R.string.account_server_validation_error_network,
)
is Error.NetworkError -> {
resources.buildErrorString(
titleResId = R.string.account_server_validation_error_network,
detailsResId = R.string.account_server_validation_error_details,
detailsMessage = exception.message,
)
}
is Error.ServerError -> resources.getString(
R.string.account_server_validation_error_server,
)
is Error.ServerError -> {
resources.buildErrorString(
titleResId = R.string.account_server_validation_error_server,
detailsResId = R.string.account_server_validation_error_server_message,
detailsMessage = serverMessage,
)
}
is Error.UnknownError -> resources.getString(
R.string.account_server_validation_error_unknown,
)
is Error.UnknownError -> {
resources.buildErrorString(
titleResId = R.string.account_server_validation_error_unknown,
detailsResId = R.string.account_server_validation_error_details,
detailsMessage = message,
)
}
}
}
private fun Resources.buildErrorString(
@StringRes titleResId: Int,
@StringRes detailsResId: Int,
detailsMessage: String?,
): String {
val title = getString(titleResId)
return if (detailsMessage != null) {
val details = getString(detailsResId, detailsMessage)
"$title\n\n$details"
} else {
title
}
}

View file

@ -5,6 +5,8 @@
<string name="account_server_validation_error_network">Network error</string>
<string name="account_server_validation_error_server">Server error</string>
<string name="account_server_validation_error_unknown">Unknown error</string>
<string name="account_server_validation_error_server_message">The server returned the following message:\n%s</string>
<string name="account_server_validation_error_details">Details:\n%s</string>
<string name="account_server_validation_incoming_loading_message">Checking incoming server settings…</string>
<string name="account_server_validation_incoming_loading_error">Checking incoming server settings failed</string>
<string name="account_server_validation_incoming_success">Incoming server settings are valid</string>