//
//  VideoFeedConfiguration.swift
//  react-native-firework-sdk
//
//  Created by Jeff Zheng on 2021/12/28.
//

import FireworkVideo
import Foundation

@objc
public class VideoFeedConfiguration: NSObject, Codable {
    var backgroundColor: String?
    var cornerRadius: Double?
    var title: VideoFeedTitleConfiguration?
    var titlePosition: VideoFeedTitlePosition?
    var titlePadding: VideoFeedPadding?
    var playIcon: VideoFeedPlayIconConfiguration?
    var showAdBadge: Bool?
    var aspectRatio: Double?
    var contentPadding: VideoFeedPadding?
    var itemSpacing: Double?
    var enableAutoplay: Bool?
    var gridColumns: Int?
    var replayBadge: ReplayBadgeConfiguration?
    var shadow: VideoFeedShadowConfiguration?

    class VideoFeedTitleConfiguration: NSObject, Codable {
        public var hidden: Bool?
        public var textColor: String?
        public var fontSize: Double?
        public var numberOfLines: Int?
        public var iOSFontInfo: FontInfo?
    }

    class VideoFeedPlayIconConfiguration: NSObject, Codable {
        public var hidden: Bool?
        public var iconWidth: Double?
        public var imageName: String?
        public var systemImageName: String?

        func apply(to configuration: inout VideoFeedItemContentConfiguration.PlayIconConfiguration) {
            if let hidden {
                configuration.isHidden = hidden
            }
            let buttonInfo = ButtonInfo()
            buttonInfo.imageName = imageName
            buttonInfo.systemImageName = systemImageName
            configuration.display = buttonInfo.getButtonDisplayConfiguration() ?? ButtonDisplayConfiguration()
            if let iconWidth {
                configuration.iconWidth = iconWidth
            }
        }
    }

    class VideoFeedPadding: NSObject, Codable {
        public var top: Double?
        public var right: Double?
        public var bottom: Double?
        public var left: Double?
    }

    enum VideoFeedTitlePosition: String, Codable {
        case stacked, nested
    }

    class VideoFeedShadowConfiguration: NSObject, Codable {
        public var opacity: Float?
        public var color: String?
        public var width: Double?
        public var height: Double?
    }
}
