import ComponentLibrary
import Foundation

public enum VersioningAlertStyle: Equatable {
    public enum TapAction {
        case openSubscriptionPage
        case goToCreate
        case dismissOnly
        case goToLibraryForRemaster
    }

    public struct TextCopy: Equatable, Codable {
        static let empty: TextCopy = .init(
            mainSummaryCopy: "",
            buttonCopy: "",
            middleTitle: "",
            countLeft: .zero
        )

        let mainSummaryCopy: String
        let buttonCopy: String
        let middleTitle: String
        let countLeft: Int

        public init(
            mainSummaryCopy: String,
            buttonCopy: String,
            middleTitle: String = "",
            countLeft: Int = .zero
        ) {
            self.mainSummaryCopy = mainSummaryCopy
            self.buttonCopy = buttonCopy
            self.middleTitle = middleTitle
            self.countLeft = countLeft
        }
    }

    case preset(Preset)

    public var textCopy: TextCopy {
        switch self {
        case .preset(let preset):
            return preset.textCopy
        }
    }

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

    var auraColor: VersioningV4Background.ViewStyle {
        switch self {
        case .preset(let preset):
            return preset.auraColor
        }
    }
}
