//
//  KMAdvertisementModelTansition.swift
//  KMAdvertisement
//
//  Created by lizhe on 2022/12/2.
//
import AppKit
@objcMembers open class KMAdvertisementModelTransition: NSObject {
    //MARK: 模型转换
    
    //图片转换
    public static func transitionImagePath(image: KMAdvertisementItemInfo.Image?, highlight:Bool) -> String {
        var result = ""
        guard let tempImage = image else { return result }
        
        if highlight {
            result = (KMAdvertisementConfig.isDarkModel() ? tempImage.hover_Dark : tempImage.hover_Light) ?? ""
        } else {
            result = (KMAdvertisementConfig.isDarkModel() ? tempImage.normal_Dark : tempImage.normal_Light) ?? ""
        }
        
        if result.count == 0 {
            let language = Language()
            language.en = image?.en
            language.zh_TW = image?.zh_TW
            language.zh_CN = image?.zh_CN
            result = KMAdvertisementModelTransition.transitionLanguage(langeuage: language)
        }
        
        return result
    }
    
    //多语转换
    @objc public static func transitionLanguage(langeuage: Language?) -> String {
        var result = ""
        let string = KMAdvertisementModelTransition.getLanguageType()
        if string == "zh-Hans-CN" || string == "zh-Hans" {
            result = langeuage?.zh_CN ?? ""
        } else if string == "zh-Hans-TW" ||
                    string == "zh-Hant-CN" ||
                    string == "zh-Hant" {
            result = langeuage?.zh_TW ?? ""
        } else {
            result = langeuage?.en ?? ""
        }
        return result
    }
    
    public static func getLanguageType() -> String {
#if os(iOS)
        let def = UserDefaults.standard
        let allLanguages: [String] = def.object(forKey: "AppleLanguages") as! [String]
        let chooseLanguage = allLanguages.first
        return chooseLanguage ?? "en"
#elseif os(OSX)
        let allLanguages: [String] = UserDefaults.standard.object(forKey: "AppleLanguages") as! [String]
        let chooseLanguage: String = allLanguages.first ?? "en"
        return chooseLanguage
#endif
    }
    
    @objc public static func sendFireBaseEvent(firebase: firebaseInfo?) -> Void {
        guard let firebaseInfo = firebase else {
            return
        }
        guard let fireBaseEvent = firebaseInfo.event else {
            return
        }
        guard let firebasePropertyKey = firebaseInfo.propertyKey else {
            return
        }
        guard let firebasePropertyValue = firebaseInfo.propertyValue else {
            return
        }
        FMTrackEventManager.defaultManager.trackEvent(event: fireBaseEvent, withProperties: [firebasePropertyKey : firebasePropertyValue])
    }
}

extension NSColor {
    convenience init(hex: String) {
        var hexString = hex
        if hex.starts(with: "#") {
            hexString = String(hex.dropFirst())
        }
        if let ui64 = UInt64(hexString, radix: 16) {
            self.init(hex: Int(ui64))
        } else {
            self.init(hex: 0)  // <--- black
        }
    }
    
    convenience init(hex: Int) {
        let components = (
            R: CGFloat((hex >> 16) & 0xff) / 255,
            G: CGFloat((hex >> 08) & 0xff) / 255,
            B: CGFloat((hex >> 00) & 0xff) / 255
        )
        self.init(red: components.R, green: components.G, blue: components.B, alpha: 1)
    }
}