import Foundation

public enum DiscountAlertStyle: Equatable {
    public enum TapAction {
        case openSubscriptionPage
        case dismissOnly
    }

    public struct TextCopy: Equatable, Codable {
        static let empty: TextCopy = .init(
            promotionName: "",
            promotionHeadline: "",
            promotionHeadlineEmphasized: "",
            promotionDescription: "",
            buttonCopy: ""
        )

        let promotionName: String
        let promotionHeadline: String
        let promotionHeadlineEmphasized: String
        let promotionDescription: String
        let buttonCopy: String
    }

    case preset(Preset)

    public func textCopy(discountPercentage: Int) -> TextCopy {
        switch self {
        case .preset(let preset):
            return preset.textCopy(discountPercentage: discountPercentage)
        }
    }

    public var analyticsAttribute: TextCopy {
        switch self {
        case .preset(let preset):
            // Just show 0% for metrics
            return preset.textCopy(discountPercentage: 0)
        }
    }

    var tapAction: TapAction {
        switch self {
        case .preset(let preset):
            return preset.tapAction
        }
    }
}
