60 lines
1.2 KiB
Swift
60 lines
1.2 KiB
Swift
|
//
|
|||
|
// Kities.swift
|
|||
|
// comments
|
|||
|
//
|
|||
|
// Created by Георгий Сигалев on 11.03.2024.
|
|||
|
//
|
|||
|
|
|||
|
import Foundation
|
|||
|
import SwiftUI
|
|||
|
import Alamofire
|
|||
|
import SDWebImage
|
|||
|
import SDWebImageSwiftUI
|
|||
|
|
|||
|
struct CatResponse: Identifiable, Decodable {
|
|||
|
var id: String
|
|||
|
var url: String
|
|||
|
var width: Int
|
|||
|
var height: Int
|
|||
|
}
|
|||
|
|
|||
|
func fetchKities() async -> CatResponse? {
|
|||
|
let result = await AF.request("https://api.thecatapi.com/v1/images/search").serializingDecodable([CatResponse].self).result
|
|||
|
|
|||
|
var data: [CatResponse] = []
|
|||
|
|
|||
|
do {
|
|||
|
try data = result.get()
|
|||
|
} catch {
|
|||
|
return nil
|
|||
|
}
|
|||
|
return data[0]
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
struct KityView: View {
|
|||
|
@State var url: String?
|
|||
|
@Environment(\.dismiss) private var dismiss
|
|||
|
|
|||
|
@ViewBuilder
|
|||
|
var body: some View{
|
|||
|
|
|||
|
VStack {
|
|||
|
if url != nil {
|
|||
|
WebImage(url: URL(string: url!))
|
|||
|
}
|
|||
|
else {
|
|||
|
Text("Загрузка...")
|
|||
|
}
|
|||
|
}.task {
|
|||
|
guard let cat = (await fetchKities()) else {
|
|||
|
dismiss()
|
|||
|
return
|
|||
|
}
|
|||
|
self.url = cat.url
|
|||
|
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|