Update: 2026-07-23 20:43:21
This commit is contained in:
@@ -51,8 +51,7 @@ class AppLink {
|
|||||||
case 'Egypt':
|
case 'Egypt':
|
||||||
return 'https://location-egypt.siromove.com/siro/ride/location';
|
return 'https://location-egypt.siromove.com/siro/ride/location';
|
||||||
case 'Jordan':
|
case 'Jordan':
|
||||||
// TODO: Change to new subdomain when fully migrated
|
return 'https://jordan-siro.intaleqapp.com/loction_server/siro/ride/location';
|
||||||
return 'https://location.intaleq.xyz/intaleq/ride/location';
|
|
||||||
default:
|
default:
|
||||||
return 'https://location.siromove.com/siro/ride/location';
|
return 'https://location.siromove.com/siro/ride/location';
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
import 'dart:io';
|
||||||
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:jwt_decoder/jwt_decoder.dart';
|
import 'package:jwt_decoder/jwt_decoder.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
@@ -17,10 +19,8 @@ import '../functions/crud.dart';
|
|||||||
import '../functions/encrypt_decrypt.dart';
|
import '../functions/encrypt_decrypt.dart';
|
||||||
|
|
||||||
class OtpHelper extends GetxController {
|
class OtpHelper extends GetxController {
|
||||||
static final String _sendOtpUrl =
|
static final String _sendOtpUrl = '${AppLink.server}/auth/otp/request.php';
|
||||||
'${AppLink.server}/auth/otp/request.php';
|
static final String _verifyOtpUrl = '${AppLink.server}/auth/otp/verify.php';
|
||||||
static final String _verifyOtpUrl =
|
|
||||||
'${AppLink.server}/auth/otp/verify.php';
|
|
||||||
static final String _checkAdminLogin =
|
static final String _checkAdminLogin =
|
||||||
'${AppLink.server}/Admin/auth/login.php';
|
'${AppLink.server}/Admin/auth/login.php';
|
||||||
|
|
||||||
@@ -185,7 +185,13 @@ class OtpHelper extends GetxController {
|
|||||||
await box.write(BoxName.phoneVerified, true);
|
await box.write(BoxName.phoneVerified, true);
|
||||||
await box.write('admin_password', password);
|
await box.write('admin_password', password);
|
||||||
|
|
||||||
FirebaseMessaging.instance.subscribeToTopic('admin_alerts');
|
if (Platform.isAndroid || Platform.isIOS) {
|
||||||
|
try {
|
||||||
|
FirebaseMessaging.instance.subscribeToTopic('admin_alerts');
|
||||||
|
} catch (e) {
|
||||||
|
Log.print('FCM Subscribe error: $e');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
mySnackbarSuccess('تم تسجيل الدخول بنجاح');
|
mySnackbarSuccess('تم تسجيل الدخول بنجاح');
|
||||||
return true;
|
return true;
|
||||||
@@ -241,7 +247,13 @@ class OtpHelper extends GetxController {
|
|||||||
String token = r(rawJwt.toString()).split(AppInformation.addd)[0];
|
String token = r(rawJwt.toString()).split(AppInformation.addd)[0];
|
||||||
if (!JwtDecoder.isExpired(token)) {
|
if (!JwtDecoder.isExpired(token)) {
|
||||||
Log.print('Valid JWT found, skipping login.php (no OTP needed)');
|
Log.print('Valid JWT found, skipping login.php (no OTP needed)');
|
||||||
FirebaseMessaging.instance.subscribeToTopic('admin_alerts');
|
if (Platform.isAndroid || Platform.isIOS) {
|
||||||
|
try {
|
||||||
|
FirebaseMessaging.instance.subscribeToTopic('admin_alerts');
|
||||||
|
} catch (e) {
|
||||||
|
Log.print('FCM Subscribe error: $e');
|
||||||
|
}
|
||||||
|
}
|
||||||
Get.offAll(() => const AdminHomePage());
|
Get.offAll(() => const AdminHomePage());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -279,7 +291,13 @@ class OtpHelper extends GetxController {
|
|||||||
} else if (response['jwt'] != null) {
|
} else if (response['jwt'] != null) {
|
||||||
box.write(BoxName.jwt, c(response['jwt']));
|
box.write(BoxName.jwt, c(response['jwt']));
|
||||||
}
|
}
|
||||||
FirebaseMessaging.instance.subscribeToTopic('admin_alerts');
|
if (Platform.isAndroid || Platform.isIOS) {
|
||||||
|
try {
|
||||||
|
FirebaseMessaging.instance.subscribeToTopic('admin_alerts');
|
||||||
|
} catch (e) {
|
||||||
|
Log.print('FCM Subscribe error: $e');
|
||||||
|
}
|
||||||
|
}
|
||||||
try {
|
try {
|
||||||
if (Get.isRegistered<DashboardController>()) {
|
if (Get.isRegistered<DashboardController>()) {
|
||||||
Get.find<DashboardController>().getDashBoard();
|
Get.find<DashboardController>().getDashBoard();
|
||||||
|
|||||||
@@ -154,15 +154,21 @@ class FirebaseMessagesController extends GetxController {
|
|||||||
driverToken = myList[14].toString();
|
driverToken = myList[14].toString();
|
||||||
Get.put(HomeCaptainController(), permanent: true).changeRideId();
|
Get.put(HomeCaptainController(), permanent: true).changeRideId();
|
||||||
update();
|
update();
|
||||||
Get.toNamed('/OrderRequestPage', arguments: {
|
|
||||||
'myListString': myListString,
|
if (Get.currentRoute != '/OrderRequestPage') {
|
||||||
'DriverList': myList,
|
Log.print("🚀 FCM: Navigating to OrderRequestPage...");
|
||||||
'body': body,
|
Get.toNamed('/OrderRequestPage', arguments: {
|
||||||
'is_destination_match': message.data['is_destination_match'] ?? '0',
|
'myListString': myListString,
|
||||||
// 🆕 "أرباحك أعلى" — يُرسَل فقط عند وجود فرق إيجابي حقيقي
|
'DriverList': myList,
|
||||||
'driver_earnings_extra': message.data['driver_earnings_extra'],
|
'body': body,
|
||||||
'driver_earnings_currency': message.data['driver_earnings_currency'],
|
'is_destination_match': message.data['is_destination_match'] ?? '0',
|
||||||
});
|
// 🆕 "أرباحك أعلى" — يُرسَل فقط عند وجود فرق إيجابي حقيقي
|
||||||
|
'driver_earnings_extra': message.data['driver_earnings_extra'],
|
||||||
|
'driver_earnings_currency': message.data['driver_earnings_currency'],
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
Log.print("⚠️ [FCM] User is already on OrderRequestPage. Skipping navigation.");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|||||||
@@ -232,13 +232,20 @@ Future<void> backgroundMessageHandler(RemoteMessage message) async {
|
|||||||
);
|
);
|
||||||
|
|
||||||
bool isAppInForeground = box.read(BoxName.isAppInForeground) ?? false;
|
bool isAppInForeground = box.read(BoxName.isAppInForeground) ?? false;
|
||||||
|
String? currentRideStatus = box.read(BoxName.rideStatus);
|
||||||
|
bool hasActiveRide = (currentRideStatus == 'Begin' ||
|
||||||
|
currentRideStatus == 'Apply' ||
|
||||||
|
currentRideStatus == 'Arrived');
|
||||||
|
|
||||||
if (!isAppInForeground) {
|
if (!hasActiveRide) {
|
||||||
await TripOverlayPlugin.showOverlay(tripData, autoCloseSeconds: 15);
|
if (!isAppInForeground) {
|
||||||
|
await TripOverlayPlugin.showOverlay(tripData, autoCloseSeconds: 15);
|
||||||
|
}
|
||||||
|
// 🔴 الكتابة على القرص مباشرة بدلاً من الرام لضمان انتقالها للتطبيق 🔴
|
||||||
|
await storage.write(key: 'pending_driver_list', value: myListString);
|
||||||
|
} else {
|
||||||
|
print("⛔ [Background FCM] Ignoring new order overlay - driver is in active ride ($currentRideStatus)");
|
||||||
}
|
}
|
||||||
|
|
||||||
// 🔴 الكتابة على القرص مباشرة بدلاً من الرام لضمان انتقالها للتطبيق 🔴
|
|
||||||
await storage.write(key: 'pending_driver_list', value: myListString);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ class AppLink {
|
|||||||
case 'Egypt':
|
case 'Egypt':
|
||||||
return 'https://location-egypt.siromove.com/siro/ride/location';
|
return 'https://location-egypt.siromove.com/siro/ride/location';
|
||||||
case 'Jordan':
|
case 'Jordan':
|
||||||
return 'https://location.intaleq.xyz/intaleq/ride/location';
|
return 'https://jordan-siro.intaleqapp.com/loction_server/siro/ride/location';
|
||||||
default:
|
default:
|
||||||
return 'https://location.siromove.com/siro/ride/location';
|
return 'https://location.siromove.com/siro/ride/location';
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user