Update codebase
This commit is contained in:
@@ -1,14 +1,14 @@
|
||||
import 'dart:convert';
|
||||
import 'dart:io';
|
||||
import 'package:tripz_driver/controller/home/captin/home_captain_controller.dart';
|
||||
import 'package:tripz_driver/views/home/Captin/orderCaptin/order_speed_request.dart';
|
||||
import 'package:tripz_driver/views/widgets/error_snakbar.dart';
|
||||
import 'package:tripz_driver/views/widgets/mydialoug.dart';
|
||||
import 'package:tripz_driver/controller/voice_call_controller.dart';
|
||||
import 'package:siro_driver/controller/home/captin/home_captain_controller.dart';
|
||||
import 'package:siro_driver/views/home/Captin/orderCaptin/order_speed_request.dart';
|
||||
import 'package:siro_driver/views/widgets/error_snakbar.dart';
|
||||
import 'package:siro_driver/views/widgets/mydialoug.dart';
|
||||
import 'package:siro_driver/controller/voice_call_controller.dart';
|
||||
import 'package:firebase_messaging/firebase_messaging.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:tripz_driver/views/widgets/elevated_btn.dart';
|
||||
import 'package:siro_driver/views/widgets/elevated_btn.dart';
|
||||
|
||||
import '../../constant/box_name.dart';
|
||||
import '../../constant/colors.dart';
|
||||
@@ -233,7 +233,7 @@ class FirebaseMessagesController extends GetxController {
|
||||
|
||||
case 'token change':
|
||||
case 'TOKEN_CHANGE':
|
||||
box.remove(BoxName.jwt);
|
||||
await storage.delete(key: BoxName.jwt);
|
||||
break;
|
||||
|
||||
case 'face detect':
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import 'package:tripz_driver/constant/currency.dart';
|
||||
import 'package:siro_driver/constant/currency.dart';
|
||||
import 'dart:async';
|
||||
import 'dart:convert';
|
||||
import 'dart:io';
|
||||
@@ -15,8 +15,13 @@ import '../../constant/box_name.dart';
|
||||
import '../../constant/links.dart';
|
||||
import '../../main.dart'; // للوصول لـ box
|
||||
import '../../print.dart';
|
||||
import '../../views/food_delivery/food_delivery_home_page.dart';
|
||||
import '../../views/food_delivery/food_offer_page.dart';
|
||||
import '../../views/food_delivery/food_task_details_page.dart';
|
||||
import '../../views/home/Captin/driver_map_page.dart';
|
||||
import '../../views/home/Captin/orderCaptin/order_request_page.dart';
|
||||
import '../food_delivery/food_delivery_controller.dart';
|
||||
import '../food_delivery/food_notification_service.dart';
|
||||
import '../functions/crud.dart';
|
||||
import '../home/captin/home_captain_controller.dart';
|
||||
|
||||
@@ -213,6 +218,14 @@ class NotificationController extends GetxController {
|
||||
if (payload == null) return;
|
||||
|
||||
final payloadData = jsonDecode(payload) as Map<String, dynamic>;
|
||||
|
||||
// إشعارات وحدة التوصيل لها حمولة وأزرار خاصة بها — نفرزها قبل أي شيء
|
||||
// لأن باقي هذه الدالة يفترض حمولة رحلة (مصفوفة add_ride.php).
|
||||
if (payloadData.containsKey('food_event')) {
|
||||
await _handleFoodNotificationResponse(response, payloadData);
|
||||
return;
|
||||
}
|
||||
|
||||
final rawData = payloadData['data'];
|
||||
|
||||
List<dynamic> listData = [];
|
||||
@@ -248,6 +261,38 @@ class NotificationController extends GetxController {
|
||||
}
|
||||
}
|
||||
|
||||
// ── فرع وحدة التوصيل — مسار مستقل تماماً عن مسار الرحلات أعلاه ──────────
|
||||
Future<void> _handleFoodNotificationResponse(
|
||||
NotificationResponse response, Map<String, dynamic> payloadData) async {
|
||||
final orderId = int.tryParse(payloadData['order_id']?.toString() ?? '') ?? 0;
|
||||
if (orderId == 0) return;
|
||||
|
||||
await FoodNotificationService.instance.cancelOfferNotification();
|
||||
|
||||
// الكنترولر قد لا يكون مسجَّلاً (الضغط على الإشعار والتطبيق مغلق)، فنسجّله
|
||||
// ليعيد بناء حالته من الخادم قبل عرض أي شاشة.
|
||||
final controller = Get.isRegistered<FoodDeliveryController>()
|
||||
? Get.find<FoodDeliveryController>()
|
||||
: Get.put(FoodDeliveryController());
|
||||
|
||||
if (response.actionId == 'FOOD_ACCEPT') {
|
||||
await controller.respondToOffer(orderId, true);
|
||||
Get.to(() => FoodTaskDetailsPage(orderId: orderId));
|
||||
return;
|
||||
}
|
||||
|
||||
if (response.actionId == 'FOOD_REJECT') {
|
||||
await controller.respondToOffer(orderId, false);
|
||||
return;
|
||||
}
|
||||
|
||||
if (payloadData['food_event'] == 'offer') {
|
||||
Get.to(() => const FoodOfferPage(), fullscreenDialog: true);
|
||||
} else {
|
||||
Get.to(() => const FoodDeliveryHomePage());
|
||||
}
|
||||
}
|
||||
|
||||
// ==============================================================================
|
||||
// 4. منطق القبول الآمن (Safe Accept Logic)
|
||||
// ==============================================================================
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import 'package:tripz_driver/constant/links.dart';
|
||||
import 'package:tripz_driver/controller/functions/crud.dart';
|
||||
import 'package:tripz_driver/views/home/Captin/home_captain/home_captin.dart';
|
||||
import 'package:tripz_driver/views/widgets/elevated_btn.dart';
|
||||
import 'package:siro_driver/constant/links.dart';
|
||||
import 'package:siro_driver/controller/functions/crud.dart';
|
||||
import 'package:siro_driver/views/home/Captin/home_captain/home_captin.dart';
|
||||
import 'package:siro_driver/views/widgets/elevated_btn.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
class OverlayContent1 extends StatelessWidget {
|
||||
|
||||
Reference in New Issue
Block a user