Display error details when checking server settings
This commit is contained in:
parent
18c45e49a3
commit
56bd19f0cf
2 changed files with 45 additions and 12 deletions
|
@ -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
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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>
|
||||
|
|
Loading…
Reference in a new issue