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 checkSmartUpdate() async { Log.print("🔄 بدء فحص تحديثات المتجر..."); // 1. فحص تحديث المتجر (Native Update) await _checkStoreUpdate(); } // ====================================================================== // 1. تحديث المتجر الأساسي // ====================================================================== Future _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.intaleq_driver' : 'https://apps.apple.com/jo/app/intaleq-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)), ), ); } }