//
//  SupportedLanguage.swift
//  MiniScanner
//
//  Created by Mustafa Merza on 7/17/24.
//  Copyright © 2024 AppsNectar. All rights reserved.
//

import Foundation
import LanguageManager_iOS

enum SupportedLanguage: CaseIterable {
    
    case device
    case english
    case arabic
    
    var flag: String {
        switch self {
        case .device:
            return SupportedLanguage.currentLanguage.flag
        case .english:
            return "🇺🇸"
        case .arabic:
            return "🇰🇼"
        }
    }
    
    static var currentLanguage: SupportedLanguage {
        .from(language: LanguageManager.shared.currentLanguage)
    }
    
    var isRTL: Bool {
        LanguageManager.shared.isRightToLeft
    }
    
    var layoutDirection: LayoutDirection {
        isRTL ? .rightToLeft : .leftToRight
    }
}

extension SupportedLanguage {
    
    static func from(codeName: String) -> SupportedLanguage {
        .from(language: Languages(rawValue: codeName) ?? .deviceLanguage)
    }
    
    var codeName: String {
        switch self {
        case .device:
            return Languages.deviceLanguage.rawValue
        case .english:
            return Languages.en.rawValue
        case .arabic:
            return Languages.ar.rawValue
        }
    }
}

extension SupportedLanguage {
    
    static func from(language: Languages) -> Self {
        switch language {
        case .ar:
            return .arabic
        case .en:
            return .english
        case .deviceLanguage:
            return .device
            
        default:
            return .device
        }
    }
    
    var language: Languages {
        switch self {
        case .device:
            return LanguageManager.shared.deviceLanguage ?? .en
        case .english:
            return .en
        case .arabic:
            return .ar
        }
    }
}