import SwiftUI
import FoundationModels

struct ContentView: View {
   @State private var appData = ApplicationData.shared
   @State private var position = ScrollPosition(idType: String.self)
   @State private var selected: Int = 0
   let listCities = ["New York", "London", "Tokyo", "Sydney", "Berlin", "Paris", "Rome", "Cairo", "Beijing", "Mumbai"]

   var body: some View {
      VStack {
         ScrollView {
            Text(appData.response)
               .padding()
               .textSelection(.enabled)
               .id("textID")
         }
         .frame(minWidth: 350, maxWidth: .infinity, minHeight: 300, alignment: .leading)
         .background(Color.gray.opacity(0.2))
         .clipShape(RoundedRectangle(cornerRadius: 12))
         .scrollPosition($position)

         HStack {
            Picker("Select City: ", selection: $selected) {
               ForEach(listCities.indices, id: \.self) { index in
                  Text(listCities[index])
                     .tag(index)
               }
            }
            .disabled(appData.session.isResponding)

            Button("Send") {
               Task {
                  if selected >= 0 && selected < listCities.count {
                     // Prepare prompt
                     appData.prompt = "I'm traveling to \(listCities[selected])"
                     var newPrompt = AttributedString("\(appData.prompt)\n\n")
                     newPrompt.font = .system(size: 16, weight: .bold)
                     appData.response.append(newPrompt)
                     await appData.sendPrompt()
                  }
               }
            }
            .buttonStyle(.borderedProminent)
            .disabled(appData.session.isResponding)
         }
      }
      .padding()
      .onChange(of: appData.response) {
         position.scrollTo(edge: .bottom)
      }
   }
}