Update: 2026-06-26 17:29:23

This commit is contained in:
Hamza-Ayed
2026-06-26 17:29:23 +03:00
parent a323da29aa
commit 9ded734e38
139 changed files with 1815 additions and 2676 deletions

View File

@@ -300,7 +300,7 @@ class LoginController extends GetxController {
if (decoded is! Map || decoded.isEmpty) return;
if (decoded['status'] == 'failure' || decoded['status'] == 'Failure') {
mySnackeBarError("User does not exist.".tr);
mySnackbarError("User does not exist.".tr);
return;
}
@@ -444,7 +444,7 @@ class LoginController extends GetxController {
Get.offAll(() => const MapPagePassenger());
} catch (e) {
addError('$e', 'loginUsingCredentials');
mySnackeBarError(e.toString());
mySnackbarError(e.toString());
} finally {
isloading = false;
update();

View File

@@ -42,11 +42,11 @@ class PhoneAuthHelper {
mySnackbarSuccess('An OTP has been sent to your number.'.tr);
return true;
} else {
mySnackeBarError(data['message'] ?? 'Failed to send OTP.');
mySnackbarError(data['message'] ?? 'Failed to send OTP.');
return false;
}
} else {
mySnackeBarError('Server error. Please try again.'.tr);
mySnackbarError('Server error. Please try again.'.tr);
return false;
}
} catch (e) {
@@ -87,13 +87,13 @@ class PhoneAuthHelper {
Get.to(() => RegistrationScreen(phoneNumber: phoneNumber));
}
} else {
mySnackeBarError(data['message']);
mySnackbarError(data['message']);
}
} else {
mySnackeBarError('Server error. Please try again.'.tr);
mySnackbarError('Server error. Please try again.'.tr);
}
} catch (e) {
mySnackeBarError('An error occurred: $e');
mySnackbarError('An error occurred: $e');
}
}
@@ -133,12 +133,12 @@ class PhoneAuthHelper {
await _handleSuccessfulLogin(data['message']['data']);
} else {
mySnackeBarError(
mySnackbarError(
"User with this phone number or email already exists.".tr);
}
} catch (e) {
Log.print('e: ${e}');
mySnackeBarError('An error occurred: $e');
mySnackbarError('An error occurred: $e');
}
}

View File

@@ -308,17 +308,17 @@ class RegisterController extends GetxController {
box.read(BoxName.email).toString(),
);
} else {
mySnackeBarError("The email or phone number is already registered.".tr);
mySnackbarError("The email or phone number is already registered.".tr);
}
} else {
mySnackeBarError("phone not verified".tr);
mySnackbarError("phone not verified".tr);
}
} else {
mySnackeBarError("you must insert token code".tr);
mySnackbarError("you must insert token code".tr);
}
} catch (e) {
addError(e.toString(), 'passenger sign up ');
mySnackeBarError("Something went wrong. Please try again.".tr);
mySnackbarError("Something went wrong. Please try again.".tr);
}
}

View File

@@ -69,10 +69,10 @@ class OtpVerificationController extends GetxController {
isLoading.value = true;
// بإمكانك عرض رسالة نجاح هنا
} else {
mySnackeBarError('Failed to send OTP'.tr);
mySnackbarError('Failed to send OTP'.tr);
}
} catch (e) {
mySnackeBarError(e.toString());
mySnackbarError(e.toString());
} finally {
// isLoading.value = false;
}
@@ -108,10 +108,10 @@ class OtpVerificationController extends GetxController {
Get.offAll(() => const MapPagePassenger());
} else {
mySnackeBarError('OTP is incorrect or expired');
mySnackbarError('OTP is incorrect or expired');
}
} catch (e) {
mySnackeBarError(e.toString());
mySnackbarError(e.toString());
} finally {
isVerifying.value = false;
}

View File

@@ -144,7 +144,7 @@ class CRUD {
} on SocketException catch (_) {
Log.print('⚠️ SocketException attempt $attempts$link');
if (attempts >= 3) {
_netGuard.notifyOnce((title, msg) => mySnackeBarError(msg));
_netGuard.notifyOnce((title, msg) => mySnackbarError(msg));
return 'no_internet';
}
await Future.delayed(Duration(seconds: attempts));

View File

@@ -198,7 +198,7 @@ class LogOutController extends GetxController {
'email': box.read(BoxName.email),
});
} else {
mySnackeBarError('Email you inserted is Wrong.'.tr);
mySnackbarError('Email you inserted is Wrong.'.tr);
}
}
}

View File

@@ -55,7 +55,7 @@ class ImageController extends GetxController {
link,
);
} catch (e) {
mySnackeBarError(e.toString());
mySnackbarError(e.toString());
} finally {
isloading = false;
update();

View File

@@ -28,6 +28,7 @@ class MapEngineController extends GetxController {
Set<Marker> markers = {};
Set<Polyline> polyLines = {};
int markerRevision = 0;
List<LatLng> polylineCoordinates = [];
Set<Polygon> polygons = {};
Set<Circle> circles = {};

View File

@@ -1935,7 +1935,7 @@ class RideLifecycleController extends GetxController {
Get.back();
await Future.delayed(const Duration(milliseconds: 120));
} catch (e) {
mySnackeBarError(e.toString());
mySnackbarError(e.toString());
}
}
@@ -2734,7 +2734,7 @@ class RideLifecycleController extends GetxController {
throw Exception('Failed to save trip');
}
} catch (e) {
mySnackeBarError('Failed to book trip: $e'.tr);
mySnackbarError('Failed to book trip: $e'.tr);
}
}
@@ -3494,20 +3494,13 @@ class RideLifecycleController extends GetxController {
minutes = (durationToAdd.inMinutes % 60).round();
if (polyLines.isNotEmpty) {
mapEngine.clearPolyline();
await Future<void>.delayed(Duration.zero);
mapEngine.polyLines.clear();
}
rideConfirm = false;
isMarkersShown = true;
update();
await bottomSheet();
await mapEngine.playRouteAnimation(
mapEngine.polylineCoordinates, mapEngine.lastComputedBounds);
// بناء Set كاملة دفعة واحدة ثم تعيينها
// بناء الـ markers أولاً ثم وضعها معاً مع polylines في تحديث واحد
final Set<Marker> newMarkers = {
Marker(
markerId: const MarkerId('start'),
@@ -3542,11 +3535,33 @@ class RideLifecycleController extends GetxController {
}
}
// تعيين الـ markers مباشرة في mapEngine (بدون setter لتجنب update() مضاعف)
mapEngine.markers = newMarkers;
mapEngine.markerRevision++;
Log.print(
'✅ FIX P1 v2: ${newMarkers.length} markers placed — start: $startLoc, end: $endLoc');
mapEngine.update();
// إضافة الـ markers مباشرة عبر الـ controller لضمان ظهورها
try {
final ctrl = mapEngine.mapController;
if (ctrl != null) {
for (final m in newMarkers) {
await ctrl.addMarker(m);
}
Log.print('✅ Added ${newMarkers.length} markers via controller.addMarker()');
} else {
Log.print('⚠️ mapController is null, relying on declarative markers');
}
} catch (e) {
Log.print('⚠️ addMarker via controller failed: $e');
}
await bottomSheet();
await mapEngine.playRouteAnimation(
mapEngine.polylineCoordinates, mapEngine.lastComputedBounds);
update();
} catch (e, stackTrace) {
if (isDrawingRoute) {
isDrawingRoute = false;

View File

@@ -41,7 +41,7 @@ class ComplaintController extends GetxController {
void _showCustomSnackbar(String title, String message,
{bool isError = false}) {
if (isError) {
mySnackeBarError(message.tr);
mySnackbarError(message.tr);
} else {
mySnackbarSuccess(message.tr);
}

View File

@@ -171,7 +171,7 @@ ${AppLink.inviteRedirectUrl}?code=$couponCode&app=rider
}
} catch (e) {
Log.print('Error picking contacts: $e');
mySnackeBarError('An error occurred while picking contacts: $e'.tr);
mySnackbarError('An error occurred while picking contacts: $e'.tr);
}
}
@@ -189,7 +189,7 @@ ${AppLink.inviteRedirectUrl}?code=$couponCode&app=rider
void sendInviteToPassenger() async {
if (invitePhoneController.text.isEmpty ||
invitePhoneController.text.length < 9) {
mySnackeBarError('Please enter a correct phone'.tr);
mySnackbarError('Please enter a correct phone'.tr);
return;
}
@@ -234,7 +234,7 @@ ${AppLink.inviteRedirectUrl}?code=$couponCode&app=rider
}
} catch (e) {
Log.print("Error sending invite: $e");
mySnackeBarError('An unexpected error occurred. Please try again.'.tr);
mySnackbarError('An unexpected error occurred. Please try again.'.tr);
}
}
@@ -290,7 +290,7 @@ ${AppLink.inviteRedirectUrl}?code=$couponCode&app=rider
);
fetchDriverStatsPassengers(); // Refresh list
} else {
mySnackeBarError(response['message'] ?? 'Claim failed'.tr);
mySnackbarError(response['message'] ?? 'Claim failed'.tr);
}
}
},

View File

@@ -80,11 +80,11 @@ class InvitesRewardsController extends GetxController {
mySnackbarWarning(response['message'] ?? "Could not add invite".tr);
}
} else {
mySnackeBarError("Network error occurred".tr);
mySnackbarError("Network error occurred".tr);
}
} catch (e) {
Navigator.maybeOf(Get.context!)?.pop(); // close loading dialog only
mySnackeBarError("Network error occurred".tr);
mySnackbarError("Network error occurred".tr);
}
}
}

View File

@@ -57,15 +57,15 @@ class VipOrderController extends GetxController {
tripData.value = res['message'];
} else {
tripData.clear(); // Ensure empty list if no data
// mySnackeBarError('No trip data found');
// mySnackbarError('No trip data found');
}
} else {
tripData.clear();
// mySnackeBarError('Failed to fetch trip data');
// mySnackbarError('Failed to fetch trip data');
}
} catch (e) {
tripData.clear();
// mySnackeBarError('An error occurred: $e');
// mySnackbarError('An error occurred: $e');
} finally {
isLoading.value = false;
}

View File

@@ -431,7 +431,7 @@ class PaymentController extends GetxController {
try {
final phone = box.read(BoxName.phoneWallet) ?? walletphoneController.text.trim();
if (phone.isEmpty) {
mySnackeBarError('Please enter a phone number'.tr);
mySnackbarError('Please enter a phone number'.tr);
return;
}
@@ -465,11 +465,11 @@ class PaymentController extends GetxController {
amount: double.parse(amount),
));
} else {
mySnackeBarError(resMap['message']?.toString() ?? 'Failed to create invoice'.tr);
mySnackbarError(resMap['message']?.toString() ?? 'Failed to create invoice'.tr);
}
} catch (e) {
if (Get.isDialogOpen ?? false) Get.back();
mySnackeBarError(e.toString());
mySnackbarError(e.toString());
}
}

View File

@@ -259,7 +259,7 @@ class VoiceCallController extends GetxController with WidgetsBindingObserver {
final permissionStatus = await Permission.microphone.request();
if (!permissionStatus.isGranted) {
_endCallInternal("permission_denied");
mySnackeBarError("Microphone permission is required for voice calls".tr);
mySnackbarError("Microphone permission is required for voice calls".tr);
return;
}
@@ -274,7 +274,7 @@ class VoiceCallController extends GetxController with WidgetsBindingObserver {
response == 'failure' ||
response['status'] != 'success') {
_endCallInternal("session_creation_failed");
mySnackeBarError("Microphone permission is required for voice calls".tr);
mySnackbarError("Microphone permission is required for voice calls".tr);
return;
}
@@ -353,7 +353,7 @@ class VoiceCallController extends GetxController with WidgetsBindingObserver {
final permissionStatus = await Permission.microphone.request();
if (!permissionStatus.isGranted) {
declineCall();
mySnackeBarError("Microphone permission is required for voice calls".tr);
mySnackbarError("Microphone permission is required for voice calls".tr);
return;
}