import SwiftUI
@preconcurrency import Translation

struct ContentView: View {
   @State private var translatedText: String = ""
   @State private var configuration: TranslationSession.Configuration?

   let listPosts = [
      "Das Foto sieht echt toll aus, wo wurde das aufgenommen?",
      "Ich kann kaum glauben, wie schnell die Zeit vergeht!",
      "Herzlichen Glückwunsch zum neuen Job, du hast es wirklich verdient!",
      "Kann jemand dieses Lied bitte verlinken? Ich liebe es!",
      "Ich stimme dir vollkommen zu, das ist genau meine Meinung."
   ]
   var body: some View {
      VStack {
         Button("Translate") {
            if configuration != nil {
               configuration?.invalidate()
            } else {
               let sourceLanguage = Locale.Language(identifier: "de")
               let targetLanguage = Locale.Language(identifier: "en")
               configuration = TranslationSession.Configuration(source: sourceLanguage, target: targetLanguage)
            }
         }
         .buttonStyle(.borderedProminent)
         ScrollView {
            Text(translatedText)
         }
         Spacer()
      }
      .padding()
      .translationTask(configuration) { session in
         do {
            var requests: [TranslationSession.Request] = []
            for text in listPosts {
               let request = TranslationSession.Request(sourceText: text)
               requests.append(request)
            }
            let responses = try await session.translations(from: requests)

            var results: String = ""
            for response in responses {
               results += "\(response.targetText)\n\n"
            }
            translatedText = results
         } catch {
            print("Error translating the text: \(error)")
         }
      }
   }
}