import APIClient
import ComponentLibrary
import ComposableArchitecture
import Localization
import SwiftUI

public struct AnnouncementListItemView: View {
    var message: String
    var formattedCreateAt: String
    var clipOrPlaylist: MiniClipOrPlaylist?
    var clipOrPlaylistTapped: (MiniClipOrPlaylist) -> Void
    var clipOrPlaylistLoading: Bool

    public var body: some View {
        content
            .listRowInsets(.init())
            .listRowBackground(Color.clear)
            .alignmentGuide(.listRowSeparatorLeading) { d in
                d[.leading] + 24
            }
    }

    private var content: some View {
        HStack(spacing: 16) {
            avatar

            VStack(alignment: .leading, spacing: 2) {
                Text(message)
                    .typographyV1(.body1)
                    .accentColor(.SemanticV1.textPrimary)
                    .foregroundColor(.SemanticV1.textPrimary)
                    .fixedSize(horizontal: false, vertical: true)
                    .lineLimit(4)

                Text(formattedCreateAt)
                    .typographyV1(.caption4)
                    .foregroundColor(.SemanticV1.textSecondary)
                    .lineLimit(1)
            }
            .multilineTextAlignment(.leading)
            .frame(maxWidth: .infinity, alignment: .leading)
        }
        .contentShape(.rect)
        .padding(.vertical, 8)
    }

    @ViewBuilder
    private var avatar: some View {
        Image.Assets.logoCircle
            .resizable()
            .clipShape(.rect(cornerRadius: 20))
            .frame(width: 40, height: 40)
    }
}
