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

import Foundation
import FireworkVideo

public enum VideoPlayerStyle: String, Codable {
    case full, fit
}

public class VideoPlayerCTAStyle: NSObject, Codable {
    var backgroundColor: String?
    var textColor: String?
    var fontSize: Double?
    var shape: ButtonShape?
    var iOSFontInfo: FontInfo?
}

public enum VideoPlayerCompleteAction: String, Codable {
    case loop, advanceToNext
}

public enum FeedCompleteAction: String, Codable {
    case loop, dismiss
}

public enum StatusBarStyle: String, Codable {
    case light, dark

    func toUIStatusBarStyle() -> UIStatusBarStyle {
        switch self {
        case .light:
            return .lightContent
        case .dark:
            return .darkContent
        }
    }
}

public enum VideoPlayerCTADelayType: String, Codable {
    case constant, percentage
}

public class VideoPlayerCTADelay: NSObject, Codable {
    var type: VideoPlayerCTADelayType?
    var value: Double?
}

public enum VideoPlayerCTAWidth: String, Codable {
    case fullWidth, compact, sizeToFit

    func width() -> VideoPlayerCTAConfiguration.VideoPlayerCTAWidth {
        switch self {
        case .fullWidth:
            return .fullWidth
        case .compact:
            return .compact
        case .sizeToFit:
            return .sizeToFit
        }
    }
}

public class VideoPlayerButtonConfiguration: NSObject, Codable {
    var videoDetailButton: ButtonInfo?
    var closeButton: ButtonInfo?
    var muteButton: ButtonInfo?
    var unmuteButton: ButtonInfo?
    var playButton: ButtonInfo?
    var pauseButton: ButtonInfo?
}

public enum ScrollDirection: String, Codable {
    case horizontal, vertical
}

public enum ShareButtonPosition: String, Codable {
    case videoDetailPage, playerTopArea
}

@objc
public class VideoPlayerConfiguration: NSObject, Codable {
    var playerStyle: VideoPlayerStyle?
    var videoCompleteAction: VideoPlayerCompleteAction?
    var showShareButton: Bool?
    var ctaButtonStyle: VideoPlayerCTAStyle?
    var showPlaybackButton: Bool?
    var showMuteButton: Bool?
    var showBranding: Bool?
    var ctaDelay: VideoPlayerCTADelay?
    var ctaHighlightDelay: VideoPlayerCTADelay?
    var shareBaseURL: String?
    var ctaWidth: VideoPlayerCTAWidth?
    var enablePictureInPicture: Bool?
    var enableSystemPictureInPicture: Bool?
    var buttonConfiguration: VideoPlayerButtonConfiguration?
    var showVideoDetailTitle: Bool?
    var videoPlayerLogoConfiguration: VideoPlayerLogoConfiguration?
    var replayBadgeConfiguration: ReplayBadgeConfiguration?
    var countdownTimerConfiguration: CountdownTimerConfiguration?
    var shouldExtendMediaOutsideSafeArea: Bool?
    var statusBarHidden: Bool?
    var statusBarStyle: StatusBarStyle?
    var pipPlacement: PipPlacement?
    var scrollDirection: ScrollDirection?
    var isArrowButtonVisible: Bool?
    var feedCompleteAction: FeedCompleteAction?
    var showMoreButton: Bool?
    var shareButtonPosition: ShareButtonPosition?
}
