//
//  TrustBanner.swift
//  MoMoUIKits
//
//  Created by Nguyễn Hoàng Sơn on 14/12/2023.
//

import Foundation
import SwiftUI
import SDWebImageSwiftUI

let jsonUrl = "https://static.momocdn.net/app/json/component-kits/design_system.json"

public struct TrustBannerData: Decodable {
    let content: [String: String]
    let subContent: [String: String]
    let pciImage: String
    let sslImage: String
    let urlConfig: String
    let icons: [String]
    let momoImage: String
    
    enum CodingKeys: String, CodingKey {
        case content
        case subContent
        case pciImage
        case sslImage
        case icons
        case momoImage
        case urlConfig = "url_config"
    }
}

let defaultBanner = TrustBannerData(
    content: ["vi": "An toàn tài sản & Bảo mật thông tin của bạn là ưu tiên hàng đầu của MoMo.",
              "en": "Ensuring financial security and data privacy is MoMo's highest priority."],
    subContent: [
        "vi": "Tìm hiểu thêm",
        "en": "Learn more"
    ],
    pciImage: "https://static.momocdn.net/app/img/kits/trustBanner/pci.png",
    sslImage: "https://static.momocdn.net/app/img/kits/trustBanner/ssl.png",
    urlConfig: "login_and_security",
    icons: [
        "https://static.momocdn.net/app/img/kits/trustBanner/ic_viettinbank.png",
        "https://static.momocdn.net/app/img/kits/trustBanner/ic_agribank.png",
        "https://static.momocdn.net/app/img/kits/trustBanner/ic_vietcombank.png",
        "https://static.momocdn.net/app/img/kits/trustBanner/ic_bidv.png"
    ],
    momoImage: "https://static.momocdn.net/app/img/kits/trustBanner/ic_secu.png"
)

public struct TrustBanner: View {
    @EnvironmentObject var applicationEnvironment: ApplicationEnvironment
    
    var onPress: ((String)->Void)?
     
    public init(onPress: ((String)->Void)?) {
        self.onPress = onPress
    }
    
    var language: String? = "vi"
    
    func onPressSecurity() {
        if (onPress != nil) {
            onPress!(applicationEnvironment.config?.trustBanner?.urlConfig ?? defaultBanner.urlConfig)
        }
    }
    
    
    public var body: some View {
        HStack(alignment: .center, spacing: 8) {
            WebImage(url: URL(string: applicationEnvironment.config?.trustBanner?.momoImage ?? defaultBanner.momoImage))
                .resizable()
                .scaledToFit()
                .frame(width: 64, height: 64)
            VStack(alignment: .leading){
                Text(applicationEnvironment.config?.trustBanner?.content[language ?? "vi"] as? String ?? defaultBanner.content[language ?? "vi"])
                    .foregroundColor(Color(hex: "484848"))
                    .lineLimit(2)
                    .font(.system(size: 13, weight: Font.Weight.regular))
                    .lineSpacing(3)
                    .padding(.bottom, 8)
                HStack {
                    HStack(spacing: 0) {
                        Text(applicationEnvironment.config?.trustBanner?.subContent[language ?? "vi"] as? String ?? defaultBanner.subContent[language ?? "vi"])
                            .foregroundColor(Colors.pink03)
                            .font(.system(size: 13, weight: .bold))
                            .padding(.trailing, 4)
                        
                        Icon(source: "arrow_chevron_right_small", color: Colors.pink03)
                    }.onTapGesture {
                        onPressSecurity()
                    }
                    
                    Spacer()
                    HStack{
                        WebImage(url:  URL(string: applicationEnvironment.config?.trustBanner?.pciImage ?? defaultBanner.pciImage))
                            .resizable()
                            .scaledToFit()
                            .frame(width: 24, height: 20)
                        WebImage(url:  URL(string: applicationEnvironment.config?.trustBanner?.sslImage ?? defaultBanner.sslImage))
                            .resizable()
                            .scaledToFit()
                            .frame(width: 52, height: 20)
                    }
                }
                
            }
            
        }
        .padding(.all, 12)
        .background(Color(hex: "F2F8FF"))
        .cornerRadius(12)
        .onTapGesture {
            onPressSecurity()
        }
        .frame(maxWidth: UIScreen.main.bounds.size.width)
    }
}
