//
//  SimulatorWarningsSuppressor.swift
//  AppClientBaseSwift
//
//  Suppress common iOS Simulator warnings
//  Tắt các warnings phổ biến của iOS Simulator
//

import Foundation
import UIKit

// MARK: - Simulator Warnings Suppressor
// Suppressor cho Simulator Warnings

/// Helper to suppress simulator-specific warnings
/// Helper để tắt warnings đặc thù của simulator
struct SimulatorWarningsSuppressor {
    
    /// Suppress common iOS Simulator warnings
    /// Tắt các warnings phổ biến của iOS Simulator
    static func suppressSimulatorWarnings() {
        #if DEBUG && targetEnvironment(simulator)
        
        // Suppress Auto Layout constraint warnings
        // Tắt warnings về Auto Layout constraints
        UserDefaults.standard.setValue(false, forKey: "_UIConstraintBasedLayoutLogUnsatisfiable")
        
        // Note: Haptic and keyboard warnings cannot be suppressed programmatically
        // These are internal iOS system logs
        // Lưu ý: Haptic và keyboard warnings không thể tắt bằng code
        // Đây là system logs nội bộ của iOS
        
        print("ℹ️ Simulator warnings suppression enabled")
        print("   - Auto Layout constraint warnings: suppressed")
        print("   - Haptic feedback warnings: cannot suppress (simulator limitation)")
        print("   - Keyboard warnings: cannot suppress (system logs)")
        
        #endif
    }
    
    /// Check if running on simulator
    /// Kiểm tra có đang chạy trên simulator không
    static var isSimulator: Bool {
        #if targetEnvironment(simulator)
        return true
        #else
        return false
        #endif
    }
    
    /// Print simulator-friendly message about known issues
    /// In thông báo về các issues đã biết trên simulator
    static func printSimulatorInfo() {
        #if DEBUG && targetEnvironment(simulator)
        print("""
        
        ⚠️ Running on iOS Simulator - Known Issues:
        
        1. Haptic Feedback Warnings:
           - hapticpatternlibrary.plist not found
           - This is normal on simulator
           - Will work fine on real devices
        
        2. Auto Layout Warnings:
           - Keyboard constraint conflicts
           - iOS automatically resolves these
           - No visual impact on app
        
        3. Keyboard Cache Warnings:
           - Candidate multiplexer warnings
           - Simulator-specific issue
           - Does not affect functionality
        
        💡 These warnings do NOT indicate bugs in your code.
        
        """)
        #endif
    }
}

// MARK: - App Delegate Extension
// Extension cho App Delegate

#if DEBUG && targetEnvironment(simulator)
extension SimulatorWarningsSuppressor {
    
    /// Call this in AppDelegate or App init
    /// Gọi hàm này trong AppDelegate hoặc App init
    static func configure() {
        suppressSimulatorWarnings()
        printSimulatorInfo()
    }
}
#endif
