import SwiftUI

struct CircularAvatarView: View {
    let name: String
    var imageData: Data?
    var size: CGFloat = 32
    var isGroup: Bool = false

    var body: some View {
        if let imageData = imageData, let uiImage = UIImage(data: imageData) {
            Image(uiImage: uiImage)
                .resizable()
                .aspectRatio(contentMode: .fill)
                .frame(width: size, height: size)
                .clipShape(Circle())
        } else {
            // Default: colored circle with initial letter
            ZStack {
                Circle()
                    .fill(avatarColor)
                    .frame(width: size, height: size)

                Text(initial)
                    .font(.system(size: size * 0.4, weight: .semibold))
                    .foregroundStyle(.white)
            }
        }
    }

    private var initial: String {
        String(name.prefix(1)).uppercased()
    }

    /// Deterministic color from name hash (matching Python gui_client behavior)
    private var avatarColor: Color {
        let colors: [Color] = [
            .red, .orange, .yellow, .green, .mint,
            .teal, .cyan, .blue, .indigo, .purple, .pink
        ]
        var hash = 0
        for char in name.unicodeScalars {
            hash = hash &* 31 &+ Int(char.value)
        }
        return colors[abs(hash) % colors.count]
    }
}
