import Foundation

final class LocalizedTag: ObservableObject {

    @Published
    var urlComponent: String

    /// A custom name, different from the tag id
    @Published
    var name: String

    @Published
    var subtitle: String?

    @Published
    var description: String?

    /// The image id of the thumbnail
    @Published
    var thumbnail: ImageResource?

    /// The original url in the previous site layout
    let originalUrl: String?

    init(urlComponent: String,
         name: String,
         subtitle: String? = nil,
         description: String? = nil,
         thumbnail: ImageResource? = nil,
         originalUrl: String? = nil) {
        self.urlComponent = urlComponent
        self.name = name
        self.subtitle = subtitle
        self.description = description
        self.thumbnail = thumbnail
        self.originalUrl = originalUrl
    }
}

extension LocalizedTag {

    func data() -> FeedEntryData.Tag {
        .init(
            name: name,
            url: "tags/\(urlComponent).html"
        )
    }
}