import SwiftUI

struct AccountView: View {
    @EnvironmentObject private var store: SecureStore
    @State private var status = ""

    var body: some View {
        NavigationStack {
            ScrollView {
                VStack(alignment: .leading, spacing: 16) {
                    ViewerCard {
                        VStack(alignment: .leading, spacing: 10) {
                            if let logo = store.brandLogoUrl, let url = URL(string: logo) {
                                AsyncImage(url: url) { phase in
                                    switch phase {
                                    case .success(let image): image.resizable().scaledToFit().frame(height: 56)
                                    default: Image(systemName: "bell.badge.fill").font(.system(size: 40)).foregroundStyle(ViewerTheme.accent)
                                    }
                                }
                            } else {
                                Image(systemName: "bell.badge.fill").font(.system(size: 40)).foregroundStyle(ViewerTheme.accent)
                            }
                            Text(store.displayAppName).font(.title3.weight(.bold)).foregroundStyle(ViewerTheme.ink)
                            Text("Company: \(store.companyName ?? "—")").font(.subheadline).foregroundStyle(ViewerTheme.muted)
                            if let number = store.companyNumber, !number.isEmpty {
                                Text("Company number: \(number)").font(.caption.monospaced()).foregroundStyle(ViewerTheme.muted)
                            }
                            if let user = store.profile?.user {
                                Text("Signed in as \(user.name)").font(.caption).foregroundStyle(ViewerTheme.muted)
                                Text("Role: \(user.role)").font(.caption).foregroundStyle(ViewerTheme.muted)
                            }
                        }
                    }

                    Button(role: .destructive) {
                        Task { await logout() }
                    } label: {
                        Text("Logout").frame(maxWidth: .infinity)
                    }
                    .buttonStyle(.bordered)
                    .tint(.red)

                    if !status.isEmpty {
                        Text(status).font(.footnote).foregroundStyle(.orange)
                    }
                }
                .padding(20)
            }
            .navigationTitle("Account")
            .scrollContentBackground(.hidden)
            .background(ViewerTheme.pageBackground.ignoresSafeArea())
        }
    }

    private func logout() async {
        await APIClient.shared.logout()
        store.clearSession()
    }
}
