import 'dart:io';
import 'package:device_info_plus/device_info_plus.dart';

class DevicePerformanceManager {
  /// القائمة البيضاء لموديلات الهواتف القوية (Flagships Only)
  /// أي هاتف يبدأ موديله بأحد هذه الرموز سيعتبر قوياً
  static const List<String> _highEndSamsungModels = [
    'SM-S', // سلسلة Galaxy S21, S22, S23, S24 (S901, S908, S911...)
    'SM-F', // سلسلة Fold و Flip (Z Fold, Z Flip)
    'SM-N9', // سلسلة Note 9, Note 10, Note 20
    'SM-G9', // سلسلة S10, S20 (G970, G980...)
  ];

  static const List<String> _highEndGoogleModels = [
    'Pixel 6',
    'Pixel 7',
    'Pixel 8',
    'Pixel 9',
    'Pixel Fold'
  ];

  static const List<String> _highEndHuaweiModels = [
    'ELS-', // P40 Pro
    'ANA-', // P40
    'HMA-', // Mate 20
    'LYA-', // Mate 20 Pro
    'VOG-', // P30 Pro
    'ELE-', // P30
    'NOH-', // Mate 40 Pro
    'AL00', // Mate X series (some)
  ];

  static const List<String> _highEndXiaomiModels = [
    '2201122', // Xiaomi 12 series patterns often look like this
    '2210132', // Xiaomi 13
    '2304FPN', // Xiaomi 13 Ultra
    'M2007J1', // Mi 10 series
    'M2102K1', // Mi 11 Ultra
  ];

  static const List<String> _highEndOnePlusModels = [
    'GM19', // OnePlus 7
    'HD19', // OnePlus 7T
    'IN20', // OnePlus 8
    'KB20', // OnePlus 8T
    'LE21', // OnePlus 9
    'NE22', // OnePlus 10
    'PHB110', // OnePlus 11
    'CPH', // Newer OnePlus models
  ];

  /// دالة الفحص الرئيسية
  static Future<bool> isHighEndDevice() async {
    // 1. الآيفون دائماً قوي (نظام الرسوميات فيه متفوق حتى في الموديلات القديمة)
    if (Platform.isIOS) return true;

    if (Platform.isAndroid) {
      try {
        final androidInfo = await DeviceInfoPlugin().androidInfo;

        String manufacturer = androidInfo.manufacturer.toLowerCase();
        String model =
            androidInfo.model.toUpperCase(); // نحوله لحروف كبيرة للمقارنة
        String hardware = androidInfo.hardware.toLowerCase(); // المعالج

        // --- الفحص العكسي (الحظر المباشر) ---
        // إذا كان المعالج من الفئات الضعيفة جداً المشهورة في الهواتف المقلدة
        // mt65xx, mt6735, sc77xx هي معالجات رخيصة جداً
        if (hardware.contains('mt65') ||
            hardware.contains('mt6735') ||
            hardware.contains('sc77')) {
          return false;
        }

        // --- فحص القائمة البيضاء (Whitelist) ---

        // 1. Samsung Flagships
        if (manufacturer.contains('samsung')) {
          for (var prefix in _highEndSamsungModels) {
            if (model.startsWith(prefix)) return true;
          }
        }

        // 2. Google Pixel (6 and above)
        if (manufacturer.contains('google')) {
          for (var prefix in _highEndGoogleModels) {
            if (model.contains(prefix.toUpperCase())) return true;
          }
        }

        // 3. Huawei Flagships
        if (manufacturer.contains('huawei')) {
          for (var prefix in _highEndHuaweiModels) {
            if (model.startsWith(prefix)) return true;
          }
        }

        // 4. OnePlus Flagships
        if (manufacturer.contains('oneplus')) {
          for (var prefix in _highEndOnePlusModels) {
            if (model.startsWith(prefix)) return true;
          }
        }

        // 5. Xiaomi Flagships
        if (manufacturer.contains('xiaomi') ||
            manufacturer.contains('redmi') ||
            manufacturer.contains('poco')) {
          // شاومي تسميتها معقدة، لذا سنعتمد على فحص الرام كعامل مساعد هنا فقط
          // لأن هواتف شاومي القوية عادة لا تزور الرام
          // الرام يجب أن يكون أكبر من 6 جيجا (بايت)
          double ramGB = (androidInfo.availableRamSize) / (1024 * 1024 * 1024);
          if (ramGB > 7.5)
            return true; // 8GB RAM or more is usually safe for Xiaomi high-end
        }

        // إذا لم يكن من ضمن القوائم أعلاه، نعتبره جهازاً متوسطاً/ضعيفاً ونعرض الرسم البسيط
        return false;
      } catch (e) {
        // في حال حدوث خطأ في الفحص، نعود للوضع الآمن (الرسم البسيط)
        return false;
      }
    }

    return false;
  }
}
