package de.tsschulz.tt_tagebuch.shared.state

import de.tsschulz.tt_tagebuch.shared.api.http.ApiException

internal fun Throwable.toUserMessage(fallback: String): String {
    if (this is ApiException) {
        return when (statusCode) {
            401 -> "Session abgelaufen. Bitte erneut anmelden."
            403 -> "Keine Berechtigung für diese Aktion."
            else -> message ?: fallback
        }
    }

    val rawMessage = message.orEmpty()
    val normalizedMessage = rawMessage.lowercase()
    if (
        normalizedMessage.contains("failed to connect") ||
        normalizedMessage.contains("unable to resolve") ||
        normalizedMessage.contains("connection refused") ||
        normalizedMessage.contains("timeout") ||
        normalizedMessage.contains("network")
    ) {
        return "Keine Netzwerkverbindung zum Backend. Bitte Verbindung und Backend-URL prüfen."
    }

    return rawMessage.ifBlank { fallback }
}
