import APIClient
import ComposableArchitecture
import Get
import SwiftUI

struct ContentView: View {
    class Store: ObservableObject {
        @Dependency(\.apiClientV2.postAppVersionUpdate) private var postAppVersionUpdate: (AppVersionUpdateRequest) async throws -> AppVersionUpdateResponse
        @Dependency(\.apiClientV2.postLyricsPair) private var postLyricsPair: (GenLyricsSpec) async throws -> GenLyricsRequestIds

        @Published var appVersion: AppVersionUpdateResponse?
        @Published var lyricPair: GenLyricsRequestIds?

        init() {
            Task {
                do {
                    appVersion = try await postAppVersionUpdate(AppVersionUpdateRequest(appName: "Suno", platform: "ios"))
                }
            }

            Task {
                do {
                    lyricPair = try await postLyricsPair(GenLyricsSpec(prompt: "love a demo app"))
                }
            }
        }
    }

    @StateObject private var store = Store()

    var body: some View {
        VStack {
            Image(systemName: "globe")
                .imageScale(.large)
                .foregroundStyle(.tint)
            Text("\(String(describing: store.appVersion))")

            Text("\(String(describing: store.lyricPair))")
        }
        .padding()
    }
}

#Preview {
    ContentView()
}
