import 'dart:convert'; import 'package:http/http.dart' as http; import 'package:get/get.dart'; // للترجمة .tr class NotificationService { static const String _serverUrl = 'https://api.intaleq.xyz/intaleq/ride/firebase/send_fcm.php'; static Future sendNotification({ required String target, required String title, required String body, required String category, // إلزامي للتصنيف String? tone, List? driverList, bool isTopic = false, }) async { try { // 1. تجهيز البيانات المخصصة (Data Payload) Map customData = {}; customData['category'] = category; // إذا كان هناك قائمة سائقين/ركاب، نضعها هنا if (driverList != null && driverList.isNotEmpty) { // نرسلها كـ JSON String لأن FCM v1 يدعم String Values فقط في الـ data customData['driverList'] = jsonEncode(driverList); } // 2. تجهيز الطلب الرئيسي للسيرفر final Map requestPayload = { 'target': target, 'title': title, 'body': body, 'isTopic': isTopic, 'data': customData, // 🔥🔥 التغيير الجوهري: وضعنا البيانات داخل "data" 🔥🔥 }; if (tone != null) { requestPayload['tone'] = tone; } final response = await http.post( Uri.parse(_serverUrl), headers: { 'Content-Type': 'application/json; charset=UTF-8', }, body: jsonEncode(requestPayload), ); if (response.statusCode == 200) { print('✅ Notification sent successfully.'); // print('Response: ${response.body}'); } else { print('❌ Failed to send notification. Code: ${response.statusCode}'); print('Error Body: ${response.body}'); } } catch (e) { print('❌ Error sending notification: $e'); } } }