package ru.notesapp.data.remote
import retrofit2.HttpException
import java.io.IOException
sealed interface NetworkResult<out T> {
data class Success<T>(val data: T) : NetworkResult<T>
data class Error(val code: Int, val message: String) : NetworkResult<Nothing>
data object NetworkError : NetworkResult<Nothing>
}
suspend fun <T> safeApiCall(block: suspend () -> T): NetworkResult<T> {
return try {
NetworkResult.Success(block())
} catch (e: HttpException) {
NetworkResult.Error(e.code(), e.message() ?: "HTTP error")
} catch (e: IOException) {
NetworkResult.NetworkError
} catch (e: Exception) {
NetworkResult.Error(-1, e.message ?: "Unknown error")
}
}