import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:package_info_plus/package_info_plus.dart';
import 'package:url_launcher/url_launcher.dart';
import 'dart:io';
import 'dart:convert';

import '../../constant/info.dart';
import '../../constant/links.dart';
import '../../constant/colors.dart';
import '../../print.dart';
import 'crud.dart';

class AppUpdateController extends GetxController {
  @override
  void onInit() {
    super.onInit();
    // الفحص التلقائي عند التشغيل لتحديثات المتجر
    checkSmartUpdate();
  }

  // ======================================================================
  // الدالة الذكية المدمجة (الآن تفحص المتجر فقط لأن Shorebird يعمل تلقائياً بالخلفية)
  // ======================================================================
  Future<void> checkSmartUpdate() async {
    Log.print("🔄 بدء فحص تحديثات المتجر...");

    // 1. فحص تحديث المتجر (Native Update)
    await _checkStoreUpdate();
  }

  // ======================================================================
  // 1. تحديث المتجر الأساسي
  // ======================================================================
  Future<bool> _checkStoreUpdate() async {
    try {
      final packageInfo = await PackageInfo.fromPlatform();
      final currentBuildNumber = packageInfo.buildNumber;

      // استخدام نفس الـ Endpoint والمعايير الموجودة في التطبيق
      var response = await CRUD().get(link: AppLink.packageInfo, payload: {
        "platform": Platform.isAndroid ? 'android' : 'ios',
        "appName": AppInformation.appVersion,
      });
      
      if (response != 'failure') {
        var decoded = jsonDecode(response);
        if (decoded['status'] == 'success' && decoded['message'] != null && decoded['message'].isNotEmpty) {
          String latestBuildNumber = decoded['message'][0]['version'].toString();
          
          // مقارنة الـ Build Number
          if (latestBuildNumber != currentBuildNumber) {
            _showStoreUpdateDialog();
            return true; 
          }
        }
      }
    } catch (e) {
      Log.print("❌ Store update check error: $e");
    }
    return false; 
  }

  // ======================================================================
  // دوال مساعدة
  // ======================================================================

  void _showStoreUpdateDialog() {
    final String storeUrl = Platform.isAndroid
        ? 'https://play.google.com/store/apps/details?id=com.siro_driver'
        : 'https://apps.apple.com/jo/app/siro-driver/id6482995159';

    Get.defaultDialog(
      title: "تحديث جديد متوفر".tr,
      middleText: "يوجد إصدار جديد من التطبيق في المتجر، يرجى التحديث للحصول على الميزات الجديدة.".tr,
      barrierDismissible: false,
      onWillPop: () async => false, 
      confirm: ElevatedButton(
        style: ElevatedButton.styleFrom(
          backgroundColor: AppColor.primaryColor,
          shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(10))
        ),
        onPressed: () async {
          if (await canLaunchUrl(Uri.parse(storeUrl))) {
            await launchUrl(Uri.parse(storeUrl), mode: LaunchMode.externalApplication);
          }
        },
        child: Text("تحديث الآن".tr, style: const TextStyle(color: Colors.white)),
      ),
    );
  }
}
