import SwiftUI
import ImagePlayground

struct ContentView: View {
   @State private var image = UIImage(named: "nopicture")!
   @State private var creating: Bool = false
   @State private var instructions: String = ""

   var body: some View {
      VStack {
         Image(uiImage: image)
            .resizable()
            .frame(width: 300, height: 300)
         TextField("Describe the image", text: $instructions)
            .textFieldStyle(.roundedBorder)
            .padding()
         Button("Create Image") {
            creating = true
            Task {
               await createImages()
            }
         }
         .padding()
         .buttonStyle(.borderedProminent)
         .disabled(creating || instructions.isEmpty)
         Spacer()
      }
   }
   func createImages() async {
      do {
         let creator = try await ImageCreator()
         let images = creator.images(for: [.text(instructions)], style: .illustration, limit: 1)
         
         for try await img in images {
            image = UIImage(cgImage: img.cgImage)
         }
         creating = false
         instructions = ""
      } catch {
         print("Error: \(error)")
      }
   }
}