// Copyright © 2022 Olo Inc. All rights reserved.
// This software is made available under the Olo Pay SDK License (See LICENSE.md file)
//
//  UIColorExtensions.swift
//  OlopaysdkReactNative
//
//  Created by Justin Anderson on 3/13/23.
//  Copyright © 2023 Facebook. All rights reserved.
//

import Foundation

extension UIColor {
    // Based Stripe React Native example:
    // https://github.com/stripe/stripe-react-native/blob/master/ios/UIColorExtension.swift
    public convenience init(hex: String) {
        let a, r, g, b: UInt64
        let hexInt = hex.trimmingCharacters(in: CharacterSet.alphanumerics.inverted)
        var int = UInt64()
        
        Scanner(string: hexInt).scanHexInt64(&int)
        switch hexInt.count {
        case 3: // RGB (12-bit)
            (a, r, g, b) = (255, (int >> 8) * 17, (int >> 4 & 0xF) * 17, (int & 0xF) * 17)
        case 6: // RGB (24-bit)
            (a, r, g, b) = (255, int >> 16, int >> 8 & 0xFF, int & 0xFF)
        case 8: // ARGB (32-bit)
            (a, r, g, b) = (int >> 24, int >> 16 & 0xFF, int >> 8 & 0xFF, int & 0xFF)
        default:
            (a, r, g, b) = (255, 0, 0, 0)
        }
        
        self.init(red: CGFloat(r) / 255, green: CGFloat(g) / 255, blue: CGFloat(b) / 255, alpha: CGFloat(a) / 255)
    }
}
