Skip to content

Instantly share code, notes, and snippets.

@Alexey-RNR
Created February 4, 2025 13:24
Show Gist options
  • Save Alexey-RNR/fd24dd40afdc4184b2c75e55ade851a6 to your computer and use it in GitHub Desktop.
Save Alexey-RNR/fd24dd40afdc4184b2c75e55ade851a6 to your computer and use it in GitHub Desktop.
sealed class NetworkError(val message: String) {
data class ServerError(val requestId: String, val serverMessage: String?) : NetworkError(
"Ошибка взаимодействия с сервером для запроса: id = $requestId. Сообщение об ошибке: $serverMessage"
)
data class NoData(val requestId: String) : NetworkError(
"Для запроса: id = $requestId нет данных"
)
data class NoInternet(val requestId: String) : NetworkError(
"Нет подключения к интернету."
) {
val requestIdVal: String = requestId
}
}
class ErrorHandler {
fun handleError(error: NetworkError) {
when (error) {
is NetworkError.ServerError -> showErrorMessage(error.message)
is NetworkError.NoData -> showEmptyContent()
is NetworkError.NoInternet -> {
showErrorMessage(error.message)
reloadRequest(error.requestIdVal)
}
}
}
private fun showErrorMessage(message: String) {
println(message)
}
private fun showEmptyContent() {
println("Показываем пустой экран")
}
private fun reloadRequest(requestId: String) {
println("При появлении подключения к интернету перезапускаем запрос: id = $requestId")
}
}
class Network {
fun onNetworkError(code: Int?, requestId: String, error: String?): NetworkError {
return when {
code == null -> NetworkError.NoInternet(requestId)
code == 200 -> NetworkError.NoData(requestId)
else -> NetworkError.ServerError(requestId, error)
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment