Загрузка данных


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")
    }
}