struct InviteView: View {
    @State private var inviteCode: String?
    @State private var inviteLink: String?
    @State private var remainingInvites: Int = 0
    @State private var isLoading = true
    
    var body: some View {
        VStack(spacing: 20) {
            if isLoading {
                ProgressView("Loading invite info...")
            } else {
                VStack(spacing: 16) {
                    Text("Invite Friends")
                        .font(.title2)
                        .fontWeight(.bold)
                    
                    Text("You have \(remainingInvites) invites remaining")
                        .foregroundColor(.secondary)
                    
                    if let code = inviteCode {
                        VStack {
                            Text("Your Invite Code")
                                .font(.headline)
                            Text(code)
                                .font(.title)
                                .fontWeight(.bold)
                                .padding()
                                .background(Color.gray.opacity(0.1))
                                .cornerRadius(8)
                        }
                    }
                    
                    if let link = inviteLink {
                        ShareLink(
                            item: URL(string: link)!,
                            message: Text("Join me on this amazing app!")
                        ) {
                            Label("Share Invite Link", systemImage: "square.and.arrow.up")
                                .frame(maxWidth: .infinity)
                                .padding()
                                .background(Color.blue)
                                .foregroundColor(.white)
                                .cornerRadius(8)
                        }
                    }
                }
            }
        }
        .padding()
        .onAppear {
            loadInviteInfo()
        }
    }
    
    private func loadInviteInfo() async {
        let cm = ContactsService.shared
        
        async let code = cm.invites.code
        async let link = cm.invites.link
        async let remaining = cm.invites.remaining()
        
        let (inviteCode, inviteLink, remainingCount) = await (code, link, remaining)
        
        DispatchQueue.main.async {
            self.inviteCode = inviteCode
            self.inviteLink = inviteLink
            self.remainingInvites = remainingCount
            self.isLoading = false
        }
    }
}