diff --git a/android/app/build.gradle b/android/app/build.gradle index 8e7d2b8..bd94c5d 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -53,8 +53,8 @@ android { applicationId = "com.mobileapp.store.ride" minSdk = 23 targetSdk = flutter.targetSdkVersion // Use flutter.targetSdkVersion - versionCode = 132 - versionName = '2.0.132' + versionCode = 133 + versionName = '2.0.133' multiDexEnabled = true ndk { diff --git a/ios/Runner/Info.plist b/ios/Runner/Info.plist index f353f3b..6cc28d0 100644 --- a/ios/Runner/Info.plist +++ b/ios/Runner/Info.plist @@ -41,11 +41,11 @@ CFBundlePackageType APPL CFBundleShortVersionString - 105 + 106 CFBundleSignature ???? CFBundleVersion - 5.0.995 + 5.0.996 NSHumanReadableCopyright FirebaseAppDelegateProxyEnabled diff --git a/ios/Runner/SecurityChecks.m b/ios/Runner/SecurityChecks.m index 561d88d..752d891 100644 --- a/ios/Runner/SecurityChecks.m +++ b/ios/Runner/SecurityChecks.m @@ -184,9 +184,9 @@ if([SecurityChecks checkProcessName]){ return YES; } - if ([SecurityChecks isDebuggerAttached]) { - return YES; - } +// if ([SecurityChecks isDebuggerAttached]) { +// return YES; +// } // if ([SecurityChecks isFridaDetected]) { // return YES; // } diff --git a/lib/controller/firebase/firbase_messge.dart b/lib/controller/firebase/firbase_messge.dart index ddd9810..5c7dd4f 100644 --- a/lib/controller/firebase/firbase_messge.dart +++ b/lib/controller/firebase/firbase_messge.dart @@ -121,13 +121,13 @@ class FirebaseMessagesController extends GetxController { }); } - void fireBaseTitles(RemoteMessage message) { + Future fireBaseTitles(RemoteMessage message) async { if (message.notification!.title! == 'Order'.tr) { if (Platform.isAndroid) { notificationController.showNotification( 'Order', message.notification!.body!, 'Order'); } - } else if (message.notification!.title! == 'Accepted Ride'.tr) { + } else if (message.notification!.title! == 'Accepted Ride') { if (Platform.isAndroid) { notificationController.showNotification( 'Accepted Ride'.tr, 'Driver Accepted the Ride for You'.tr, 'ding'); @@ -136,13 +136,16 @@ class FirebaseMessagesController extends GetxController { var myList = jsonDecode(passengerList) as List; Log.print('myList: ${myList}'); - driverID = myList[0].toString(); - // Get.find().driverToken = myList[2].toString(); - // Log.print('driverToken: ${myList[2]}'); - Get.find().statusRide = 'Apply'; - Get.find().isSearchingWindow = false; - Get.find().update(); - Get.find().rideAppliedFromDriver(true); + final controller = Get.find(); + controller.driverId = myList[0].toString(); + // assume rideId lives at index 2 in your list: + controller.rideId = myList[3].toString(); + + controller + ..statusRide = 'Apply' + ..isSearchingWindow = false + ..update(); + await controller.rideAppliedFromDriver(true); // driverAppliedTripSnakBar(); } else if (message.notification!.title! == 'Promo'.tr) { @@ -557,7 +560,9 @@ class FirebaseMessagesController extends GetxController { // }); // } // } + late String serviceAccountKeyJson; + @override Future onInit() async { super.onInit(); @@ -565,7 +570,8 @@ class FirebaseMessagesController extends GetxController { var encryptedKey = await storage.read(key: 'FCM_PRIVATE_KEY'); // Log.print('encryptedKey: ${encryptedKey}'); if (encryptedKey != null) { - serviceAccountKeyJson = (encryptedKey); + serviceAccountKeyJson = + EncryptionHelper.instance.decryptData(encryptedKey); // Log.print('serviceAccountKeyJson: ${serviceAccountKeyJson}'); } else { print('🔴 Error: FCM_PRIVATE_KEY not found in Secure Storage'); @@ -647,11 +653,12 @@ class FirebaseMessagesController extends GetxController { // Initialize AccessTokenManager final accessTokenManager = AccessTokenManager(serviceAccountKeyJson); - // Log.print('accessTokenManager: ${accessTokenManager}'); + // Log.print( + // 'accessTokenManager: ${accessTokenManager.serviceAccountJsonKey}'); // Obtain an OAuth 2.0 access token final accessToken = await accessTokenManager.getAccessToken(); - Log.print('accessToken: ${accessToken}'); + // Log.print('accessToken: ${accessToken}'); // Send the notification final response = await http.post( diff --git a/lib/controller/home/map_passenger_controller.dart b/lib/controller/home/map_passenger_controller.dart index f781055..1ffad57 100644 --- a/lib/controller/home/map_passenger_controller.dart +++ b/lib/controller/home/map_passenger_controller.dart @@ -35,6 +35,7 @@ import '../../models/model/painter_copoun.dart'; import '../../print.dart'; import '../../views/home/map_widget.dart/cancel_raide_page.dart'; import '../../views/home/map_widget.dart/car_details_widget_to_go.dart'; +import '../../views/home/map_widget.dart/searching_captain_window.dart'; import '../../views/home/map_widget.dart/select_driver_mishwari.dart'; import '../../views/widgets/elevated_btn.dart'; import '../../views/widgets/error_snakbar.dart'; @@ -79,7 +80,10 @@ class MapPassengerController extends GetxController { List wayPoint2 = []; List wayPoint3 = []; List wayPoint4 = []; - + final firebaseMessagesController = + Get.isRegistered() + ? Get.find() + : Get.put(FirebaseMessagesController()); List> placeListResponseAll = []; List placeListResponse = [ @@ -367,6 +371,8 @@ class MapPassengerController extends GetxController { totalPassenger = double.parse(increasFeeFromPassenger.text); Get.back(); if (rideId != 'yet') { + Log.print('rideId from increase: ${rideId}'); + notifyAvailableDriversAgain(); await CRUD().post(link: AppLink.updateDriverOrder, payload: { "order_id": rideId.toString(), // Convert to String "status": 'waiting' @@ -943,7 +949,7 @@ class MapPassengerController extends GetxController { box.write(BoxName.passengerWalletTotal, '0'); update(); if (box.read(BoxName.parentTripSelected) == true) { - Get.find().sendNotificationToPassengerToken( + firebaseMessagesController.sendNotificationToPassengerToken( "Finish Monitor".tr, "Finish Monitor".tr, box.read(BoxName.tokenParent), @@ -1531,7 +1537,7 @@ class MapPassengerController extends GetxController { // passengerRate.toStringAsFixed(2), // ]; // Log.print('body: ${body}'); - // Get.find().sendNotificationToDriverMAP( + // firebaseMessagesController.sendNotificationToDriverMAP( // 'OrderSpeed', // rideId, // driverData['token'].toString(), @@ -1674,7 +1680,7 @@ class MapPassengerController extends GetxController { // ]; // // Log.print('body: ${body}'); - // Get.find().sendNotificationToDriverMAP( + // firebaseMessagesController.sendNotificationToDriverMAP( // 'OrderSpeed', // rideId.toString(), // dataCarsLocationByPassenger['message'][i]['token'].toString(), @@ -1957,8 +1963,8 @@ class MapPassengerController extends GetxController { Future.delayed(const Duration(microseconds: 10)); final body = constructNotificationBody(driverData); Log.print('body:ww ${body}'); - Get.find().sendNotificationToDriverMAP( - 'Order'.tr, + firebaseMessagesController.sendNotificationToDriverMAP( + 'Order', // without tr since background not valid endNameAddress, (driverData['token'].toString()), body, @@ -1970,6 +1976,53 @@ class MapPassengerController extends GetxController { } } + Future notifyAvailableDriversAgain() async { + Log.print('[DEBUG] Starting notifyAvailableDriversAgain()'); + await getCarsLocationByPassengerAndReloadMarker( + box.read(BoxName.carType), 3000); + Log.print( + '[DEBUG] Found drivers to notify: ${dataCarsLocationByPassenger['message']?.length}'); + if (dataCarsLocationByPassenger != null && + dataCarsLocationByPassenger.containsKey('message') && + dataCarsLocationByPassenger['message'] != null) { + for (var driverData in dataCarsLocationByPassenger['message']) { + String driverId = driverData['driver_id'].toString(); + if (!notifiedDrivers.contains(driverId)) { + notifiedDrivers.add(driverId); + double driverLat = double.parse(driverData['latitude']); + double driverLng = double.parse(driverData['longitude']); + double distanceToDriverInMeters = Geolocator.distanceBetween( + passengerLocation.latitude, + passengerLocation.longitude, + driverLat, + driverLng, + ); + + double distanceToDriverInKm = distanceToDriverInMeters * + 1.25 / //to approximate to stright distance + 1000; + double durationToDriverInHours = + distanceToDriverInKm / 25; // 25 km/h as default speed + double durationToDriverInSeconds = durationToDriverInHours * 3600; + durationToPassenger = durationToDriverInSeconds.toInt(); + distanceByPassenger = + (distanceToDriverInMeters * 1.25).toStringAsFixed(0); + Future.delayed(const Duration(microseconds: 10)); + final body = constructNotificationBody(driverData); + // Log.print('body:ww ${body}'); + Log.print( + '[DEBUG] Sending to driver: ${driverData['driver_id']}, token: ${driverData['token']}'); + firebaseMessagesController.sendNotificationToDriverMAP( + 'Order', // without tr since background not valid + endNameAddress, + (driverData['token'].toString()), + body, + 'order.wav'); + } + } + } + } + List constructNotificationBody(var driverData) { final paymentController = Get.find(); return [ @@ -2019,7 +2072,7 @@ class MapPassengerController extends GetxController { StreamController.broadcast(); Stream get rideStatusStream => _rideStatusStreamController.stream; - int maxAttempts = 15; + int maxAttempts = 28; Future delayAndFetchRideStatusForAllDriverAvailable( String rideId) async { @@ -2039,7 +2092,6 @@ class MapPassengerController extends GetxController { try { var res = await getRideStatus(rideId); - Log.print('res:2047 $res'); String rideStatusDelayed = res.toString(); Log.print('rideStatusDelayed: $rideStatusDelayed'); @@ -2061,15 +2113,33 @@ class MapPassengerController extends GetxController { timer.cancel(); // Close stream after applying } else if (attemptCounter >= maxAttempts || - rideStatusDelayed != 'Cancel') { - timer.cancel(); //todo + rideStatusDelayed == 'waiting') { + // timer.cancel(); //todo // addRideToNotificationDriverString(); // Show dialog to increase fee... - MyDialog().getDialog( - 'Are you want to wait drivers to accept your order'.tr, '', () { - Get.back(); - addRideToNotificationDriverAvailable(); - }); + + // buildTimerForIncrease(); + Get.defaultDialog( + title: 'Are you want to wait drivers to accept your order'.tr, + middleText: '', + onConfirm: () { + Log.print('[DEBUG] User chose to wait again'); + Get.back(); + notifyAvailableDriversAgain(); + delayAndFetchRideStatusForAllDriverAvailable(rideId); + // addRideToNotificationDriverAvailable(); + }, + onCancel: () { + timer.cancel(); + Get.back(); + showCancelRideBottomSheet(); + }, + ); + // MyDialog().getDialog( + // 'Are you want to wait drivers to accept your order'.tr, '', () { + // Get.back(); + // addRideToNotificationDriverAvailable(); + // }); update(); _rideStatusStreamController .close(); // Close stream after max attempts @@ -2083,7 +2153,7 @@ class MapPassengerController extends GetxController { rideAppliedFromDriver(bool isApplied) async { await getUpdatedRideForDriverApply(rideId); NotificationController().showNotification( - 'Order Accepted'.tr, + 'Accepted Ride'.tr, '$driverName ${'accepted your order at price'.tr} ${totalPassenger.toStringAsFixed(1)} ${'with type'.tr} ${box.read(BoxName.carType)}', 'ding'); if (box.read(BoxName.carType) == 'Speed' || @@ -2202,7 +2272,7 @@ class MapPassengerController extends GetxController { } // driversToken.remove(driverToken); // for (var i = 1; i < driversToken.length; i++) { - Get.find().sendNotificationToDriverMAP( + firebaseMessagesController.sendNotificationToDriverMAP( 'Order Accepted'.tr, '$driverName${'Accepted your order'.tr}', driverToken.toString(), @@ -2920,7 +2990,7 @@ class MapPassengerController extends GetxController { var tokenParent = (res1['data'][0]['token']); Get.snackbar("The invitation was sent successfully".tr, '', backgroundColor: AppColor.greenColor); - Get.find().sendNotificationToPassengerToken( + firebaseMessagesController.sendNotificationToPassengerToken( "Trip Monitoring".tr, "Trip Monitoring".tr, tokenParent, @@ -3157,7 +3227,7 @@ class MapPassengerController extends GetxController { changeCancelRidePageShow(); if (rideId != 'yet') { Log.print('cancelRide: 1'); - await Get.find().sendNotificationToDriverMAP( + await firebaseMessagesController.sendNotificationToDriverMAP( 'Cancel Trip'.tr, 'Trip Cancelled'.tr, driverToken.toString(), @@ -5164,33 +5234,32 @@ class MapPassengerController extends GetxController { timeSelected); // Optionally, set up local notification or send a push notification - await Get.find() - .sendNotificationToDriverMAP( - 'OrderVIP', - rideId.toString(), - (driver['token'].toString()), - [ - id, - rideId, - driver['id'], - passengerLocation.latitude.toString(), - startNameAddress.toString(), - passengerLocation.longitude.toString(), - (box.read(BoxName.name).toString().split(' ')[0]).toString(), - box.read(BoxName.passengerID).toString(), - box.read(BoxName.phone).toString(), - box.read(BoxName.email).toString(), - box.read(BoxName.passengerPhotoUrl).toString(), - box.read(BoxName.tokenFCM).toString(), - (driver['token'].toString()), - ], - 'order.wav'); + await firebaseMessagesController.sendNotificationToDriverMAP( + 'OrderVIP', + rideId.toString(), + (driver['token'].toString()), + [ + id, + rideId, + driver['id'], + passengerLocation.latitude.toString(), + startNameAddress.toString(), + passengerLocation.longitude.toString(), + (box.read(BoxName.name).toString().split(' ')[0]).toString(), + box.read(BoxName.passengerID).toString(), + box.read(BoxName.phone).toString(), + box.read(BoxName.email).toString(), + box.read(BoxName.passengerPhotoUrl).toString(), + box.read(BoxName.tokenFCM).toString(), + (driver['token'].toString()), + ], + 'order.wav'); if (response['message'] == "Trip updated successfully") { mySnackbarSuccess("Trip updated successfully".tr); Log.print( 'previous_driver_token: ${response['previous_driver_token']}'); - Get.find().sendNotificationToDriverMAP( + firebaseMessagesController.sendNotificationToDriverMAP( 'Order VIP Canceld'.tr, 'Passenger cancel order'.tr, response['previous_driver_token'].toString(), @@ -5214,7 +5283,7 @@ class MapPassengerController extends GetxController { } cancelVip(String token, tripId) async { - // Get.find().sendNotificationToDriverMAP( + // firebaseMessagesController.sendNotificationToDriverMAP( // 'Order VIP Canceld'.tr, // 'Passenger cancel order'.tr, // token, @@ -5230,7 +5299,7 @@ class MapPassengerController extends GetxController { } sendToDriverAgain(String token) { - Get.find().sendNotificationToDriverMAP( + firebaseMessagesController.sendNotificationToDriverMAP( 'Order VIP Canceld'.tr, 'Passenger cancel order'.tr, token, diff --git a/lib/controller/local/translations.dart b/lib/controller/local/translations.dart index c6751da..da36130 100644 --- a/lib/controller/local/translations.dart +++ b/lib/controller/local/translations.dart @@ -4,6 +4,7 @@ class MyTranslation extends Translations { @override Map> get keys => { "ar": { + "Syria": "‏سوريا", "Order": "طلب", "OrderVIP": "طلب VIP", "Cancel Trip": "إلغاء الرحلة", @@ -1328,6 +1329,7 @@ class MyTranslation extends Translations { "تقدر تغير البلد عشان تحصل على كل المميزات", "Change Country": "تغيير الدولة" }, + "tr": { "Order": "Sipariş", "OrderVIP": "VIP Sipariş", @@ -15346,6 +15348,1241 @@ class MyTranslation extends Translations { "You can change the Country to get all features": "您可以更改国家以获取所有功能", "Change Country": "更改国家" }, + "ar-main": { + "Syria": "سوريا", + "Order": "طلب", + "OrderVIP": "طلب VIP", + "Cancel Trip": "إلغاء الرحلة", + "Passenger Cancel Trip": "الراكب ألغى الرحلة", + "VIP Order": "طلب VIP", + "The driver accepted your trip": "السائق قبل رحلتك", + "message From passenger": "رسالة من الراكب", + "Cancel": "إلغاء", + "Trip Cancelled. The cost of the trip will be added to your wallet.": + "تم إلغاء الرحلة. سيتم إضافة تكلفة الرحلة إلى محفظتك.", + "token change": "تغيير الرمز", + "face detect": "كشف الوجه", + "Face Detection Result": "نتيجة كشف الوجه", + "similar": "مشابه", + "not similar": "غير مشابه", + "Hi ,I will go now": "مرحبًا، سأذهب الآن", + "Passenger come to you": "الراكب قادم إليك", + "Call Income": "مكالمة واردة", + "Call Income from Passenger": "مكالمة واردة من الراكب", + "Criminal Document Required": "مطلوب وثيقة جنائية", + "You should have upload it .": "يجب عليك تحميلها.", + "Call End": "انتهاء المكالمة", + "The order has been accepted by another driver.": + "تم قبول الطلب من قبل سائق آخر.", + "The order Accepted by another Driver": + "تم قبول الطلب من قبل سائق آخر", + "We regret to inform you that another driver has accepted this order.": + "نأسف لإعلامك بأن سائقًا آخر قد قبل هذا الطلب.", + "Driver Applied the Ride for You": "السائق قدم الطلب لك", + "Applied": "تم التقديم", + "Hi ,I Arrive your site": "مرحبًا، لقد وصلت إلى موقعك", + "Please go to Car Driver": "يرجى الذهاب إلى سائق السيارة", + "Ok I will go now.": "حسنًا، سأذهب الآن.", + "Accepted Ride": "تم قبول الرحلة", + "Driver Accepted the Ride for You": "السائق قبل الرحلة لك", + "Promo": "عرض ترويجي", + "Show latest promo": "عرض أحدث عرض ترويجي", + "Trip Monitoring": "مراقبة الرحلة", + "Driver Is Going To Passenger": "السائق في طريقه إليك", + "Please stay on the picked point.": + "يرجى البقاء في نقطة الالتقاط المحددة.", + "message From Driver": "رسالة من السائق", + "Trip is Begin": "بدأت الرحلة", + "Cancel Trip from driver": "إلغاء الرحلة من السائق", + "We will look for a new driver.\nPlease wait.": + "سنبحث عن سائق جديد.\nمن فضلك انتظر.", + "The driver canceled your ride.": "السائق ألغى رحلتك.", + "Driver Finish Trip": "السائق أنهى الرحلة", + "you will pay to Driver": "ستدفع للسائق", + "Don't forget your personal belongings.": "لا تنسى أغراضك الشخصية.", + "Please make sure you have all your personal belongings and that any remaining fare, if applicable, has been added to your wallet before leaving. Thank you for choosing the Tripz app": + "من فضلك تأكد من أن لديك جميع أغراضك الشخصية وأن أي أجر متبقي، إذا كان ينطبق، قد تم إضافته إلى محفظتك قبل المغادرة. شكرًا لاختيارك تطبيق Tripz", + "Finish Monitor": "إنهاء المراقبة", + "Trip finished": "الرحلة انتهت", + "Call Income from Driver": "مكالمة واردة من السائق", + "Driver Cancelled Your Trip": "السائق ألغى رحلتك", + "you will pay to Driver you will be pay the cost of driver time look to your Tripz Wallet": + "ستدفع للسائق، ستقوم بدفع تكلفة وقت السائق، انظر إلى محفظتك في Tripz", + "Order Applied": "تم تطبيق الطلب", + "Share App": "مشاركة التطبيق", + "Wallet": "المحفظة", + "Profile": "الملف الشخصي", + "Contact Support": "اتصل بالدعم", + "Session expired. Please log in again.": + "انتهت الجلسة. يرجى تسجيل الدخول مرة أخرى.", + "Security Warning": "⚠️ تحذير أمني", + "Potential security risks detected. The application may not function correctly.": + "تم اكتشاف مخاطر أمنية محتملة. قد لا يعمل التطبيق بشكل صحيح.", + "please order now": "الرجاء الطلب الآن", + "Where to": "إلى أين", + "Where are you going?": "إلى أين تذهب؟", + "Quick Actions": "إجراءات سريعة", + "My Wallet": "محفظتي", + "Order History": "سجل الطلبات", + "Contact Us": "اتصل بنا", + "Driver": "السائق", + "Complaint": "شكوى", + "Promos": "العروض", + "Recent Places": "الأماكن الأخيرة", + "From": "من", + "WhatsApp Location Extractor": "مستخرج موقع واتساب", + "Location Link": "رابط الموقع", + "Paste location link here": "الصق رابط الموقع هنا", + "Go to this location": "انتقل إلى هذا الموقع", + "Paste WhatsApp location link": "الصق رابط موقع واتساب", + "Select Order Type": "اختر نوع الطلب", + "Choose who this order is for": "اختر لمن هذا الطلب", + "I want to order for myself": "أريد الطلب لنفسي", + "I want to order for someone else": "أريد الطلب لشخص آخر", + "Order for someone else": "اطلب لشخص آخر", + "Order for myself": "اطلب لنفسي", + "Are you want to go this site": "هل تريد الذهاب إلى هذا الموقع؟", + "No": "لا", + "Are you sure to delete this location?": + "هل أنت متأكد من حذف هذا الموقع؟", + "deleted": "تم الحذف", + "To Work": "إلى العمل", + "Work Saved": "تم حفظ مكان العمل", + "To Home": "إلى المنزل", + "Home Saved": "تم حفظ مكان المنزل", + "Destination selected": "تم اختيار الوجهة", + "Now select start pick": "الآن اختر نقطة البداية", + "OK": "موافق", + "Confirm Pick-up Location": "تأكيد موقع الالتقاط", + "Set Location on Map": "حدد الموقع على الخريطة", + "Nearest Car: ~": "أقرب سيارة: ~", + "Nearest Car": "أقرب سيارة", + "No cars nearby": "لا توجد سيارات قريبة", + "Favorite Places": "الأماكن المفضلة", + "No favorite places yet!": "لا توجد أماكن مفضلة بعد!", + "from your favorites": "من مفضلاتك", + "Back": "رجوع", + "Sign in for a seamless experience": "سجل الدخول لتجربة سلسة", + "Sign In with Google": "تسجيل الدخول باستخدام Google", + "Sign in with Apple": "تسجيل الدخول باستخدام Apple", + "Need assistance? Contact us": "تحتاج مساعدة؟ اتصل بنا", + "User not found": "المستخدم غير موجود", + "Email": "البريد الإلكتروني", + "Your email address": "عنوان بريدك الإلكتروني", + "Enter a valid email": "أدخل بريدًا إلكترونيًا صالحًا", + "Password": "كلمة المرور", + "Enter your password": "أدخل كلمة المرور", + "Submit": "إرسال", + "Terms of Use & Privacy Notice": "شروط الاستخدام وإشعار الخصوصية", + "Terms of Use": "شروط الاستخدام", + "Privacy Notice": "إشعار الخصوصية", + "By selecting \"I Agree\" below, I confirm that I have read and agree to the": + "بالنقر على \"أوافق\" أدناه، أؤكد أنني قد قرأت وأوافق على", + "and acknowledge the": "وأعترف بـ", + ". I am at least 18 years old.": ". أنا عمري 18 سنة على الأقل.", + "Continue": "متابعة", + "Enable Location Access": "تمكين الوصول إلى الموقع", + "We need your location to find nearby drivers for pickups and drop-offs.": + "نحتاج إلى موقعك للعثور على سائقيين قريبين للاستلام والتوصيل.", + "Allow Location Access": "السماح بالوصول إلى الموقع", + "You should restart app to change language": + "يجب إعادة تشغيل التطبيق لتغيير اللغة", + "Home Page": "الصفحة الرئيسية", + "To change Language the App": "لتغيير لغة التطبيق", + "Learn more about our app and mission": + "تعرف أكثر على تطبيقنا ومهمتنا", + "Promos For Today": "عروض اليوم", + "Choose your ride": "اختر رحلتك", + "Your Journey Begins Here": "رحلتك تبدأ من هنا", + "Bonus gift": "هدية إضافية", + "Pay": "ادفع", + "Get": "احصل على", + "Send to Driver Again": "إرسال إلى السائق مرة أخرى", + "Driver Name:": "اسم السائق:", + "No trip data available": "لا توجد بيانات رحلة متاحة", + "Car Plate:": "لوحة السيارة:", + "remaining": "متبقي", + "Order Cancelled": "تم إلغاء الطلب", + "You canceled VIP trip": "لقد ألغيت رحلة VIP", + "Passenger cancelled order": "الراكب ألغى الطلب", + "Your trip is scheduled": "رحلتك مجدولة", + "Don't forget your ride!": "لا تنسى رحلتك!", + "Trip updated successfully": "تم تحديث الرحلة بنجاح", + "Car Make:": "ماركة السيارة:", + "Car Model:": "موديل السيارة:", + "Car Color:": "لون السيارة:", + "Driver Phone:": "هاتف السائق:", + "Pre-booking": "حجز مسبق", + "Waiting VIP": "انتظار VIP", + "Driver List": "قائمة السائقين", + "Confirm Trip": "تأكيد الرحلة", + "Select date and time of trip": "اختر تاريخ ووقت الرحلة", + "Date and Time Picker": "اختيار التاريخ والوقت", + "Trip Status:": "حالة الرحلة:", + "pending": "قيد الانتظار", + "accepted": "تم القبول", + "rejected": "تم الرفض", + "Apply": "تطبيق", + "Enter your promo code": "أدخل رمز الترويج الخاص بك", + "Apply Promo Code": "تطبيق رمز الترويج", + "Scheduled Time:": "الوقت المحدد:", + "No drivers available": "لا يوجد سائقون متاحون", + "No drivers available at the moment. Please try again later.": + "لا يوجد سائقون متاحون حاليًا. يرجى المحاولة مرة أخرى لاحقًا.", + "you have a negative balance of": "لديك رصيد سلبي بقيمة", + "Please try again in a few moments": + "يرجى المحاولة مرة أخرى بعد قليل", + "Unknown Driver": "سائق غير معروف", + "in your": "في محفظتك", + "The driver accepted your order for": "قبل السائق طلبك مقابل", + "wallet due to a previous trip.": "بسبب رحلة سابقة.", + "rides": "رحلات", + "Add Work": "إضافة عمل", + "The reason is": "السبب هو", + "User does not have a wallet #1652": "المستخدم ليس لديه محفظة #1652", + "Price of trip": "سعر الرحلة", + "From:": "من:", + "For Tripz and Delivery trips, the price is calculated dynamically. For Comfort trips, the price is based on time and distance": + "لرحلات Tripz والتوصيل، يتم حساب السعر ديناميكيًا. لرحلات الراحة، يعتمد السعر على الوقت والمسافة.", + "Phone Wallet Saved Successfully": "تم حفظ محفظة الهاتف بنجاح", + "Add wallet phone you use": "أضف هاتف المحفظة الذي تستخدمه", + "Update Available": "تحديث متاح", + "Phone number must be exactly 11 digits long": + "يجب أن يكون رقم الهاتف 11 رقمًا بالضبط", + "Insert Wallet phone number": "أدخل رقم هاتف المحفظة", + "Phone number isn't an Egyptian phone number": + "رقم الهاتف ليس رقمًا مصريًا", + "A new version of the app is available. Please update to the latest version.": + "يتوفر إصدار جديد من التطبيق. يرجى التحديث إلى أحدث إصدار.", + "We use location to get accurate and nearest passengers for you": + "نستخدم الموقع للحصول على ركاب دقيقين وأقرب لك", + "This ride is already applied by another driver.": + "هذه الرحلة قد تم التقديم عليها من قبل سائق آخر.", + "We use your precise location to find the nearest available driver and provide accurate pickup and dropoff information. You can manage this in Settings.": + "نستخدم موقعك الدقيق للعثور على أقرب سائق متاح وتقديم معلومات دقيقة عن الاستلام والتوصيل. يمكنك إدارة هذا في الإعدادات.", + "Where are you, sir?": "أين أنت يا سيدي؟", + "I've been trying to reach you but your phone is off.": + "كنت أحاول الوصول إليك ولكن هاتفك مغلق.", + "Please don't be late": "من فضلك لا تتأخر", + "Please don't be late, I'm waiting for you at the specified location.": + "من فضلك لا تتأخر، أنا في انتظارك في الموقع المحدد.", + "My location is correct. You can search for me using the navigation app": + "موقعي صحيح. يمكنك البحث عني باستخدام تطبيق الملاحة", + "Hello, I'm at the agreed-upon location": + "مرحبًا، أنا في الموقع المتفق عليه", + "How much longer will you be?": "كم من الوقت ستبقى؟", + "Phone number is verified before": "تم التحقق من رقم الهاتف من قبل", + "Change Ride": "تغيير الرحلة", + "You can change the destination by long-pressing any point on the map": + "يمكنك تغيير الوجهة بالضغط مطولًا على أي نقطة على الخريطة", + "Pick from map destination": "اختر الوجهة من الخريطة", + "Pick or Tap to confirm": "اختر أو اضغط للتأكيد", + "Accepted your order": "تم قبول طلبك", + "Order Accepted": "تم قبول الطلب", + "with type": "مع النوع", + "accepted your order at price": "قبل طلبك بالسعر", + "you canceled order": "لقد ألغيت الطلب", + "If you want order to another person": "إذا كنت تريد الطلب لشخص آخر", + "upgrade price": "ترقية السعر", + "Please enter a correct phone": "الرجاء إدخال هاتف صحيح", + "airport": "مطار", + "Best choice for a comfortable car with a flexible route and stop points. This airport offers visa entry at this price.": + "أفضل خيار لسيارة مريحة مع مسار مرن ونقاط توقف. هذا المطار يوفر دخول التأشيرة بهذا السعر.", + "You can upgrade price to may driver accept your order": + "يمكنك ترقية السعر حتى يقبل السائق طلبك", + "Change Route": "تغيير المسار", + "No Captain Accepted Your Order": "لم يقبل أي كابتن طلبك", + "We are looking for a captain but the price may increase to let a captain accept": + "نحن نبحث عن كابتن ولكن قد يزيد السعر ليتم قبول الطلب", + "No, I want to cancel this trip": "لا، أريد إلغاء هذه الرحلة", + "Attention": "انتباه", + "Trip Cancelled. The cost of the trip will be deducted from your wallet.": + "تم إلغاء الرحلة. سيتم خصم تكلفة الرحلة من محفظتك.", + "You will be charged for the cost of the driver coming to your location.": + "سيتم تحميلك تكلفة قدوم السائق إلى موقعك.", + "reject your order.": "رفض طلبك.", + "Order Under Review": "الطلب قيد المراجعة", + "is reviewing your order. They may need more information or a higher price.": + "يقوم بمراجعة طلبك. قد يحتاج إلى مزيد من المعلومات أو سعر أعلى.", + "Increase Your Trip Fee (Optional)": "زيادة رسوم رحلتك (اختياري)", + "Vibration": "اهتزاز", + "Resend code": "إعادة إرسال الرمز", + "change device": "تغيير الجهاز", + "Device Change Detected": "تم اكتشاف تغيير الجهاز", + "You can only use one device at a time. This device will now be set as your active device.": + "يمكنك استخدام جهاز واحد فقط في كل مرة. سيتم تعيين هذا الجهاز الآن كجهازك النشط.", + "Click here point": "انقر هنا", + "Are you want to change": "هل تريد التغيير؟", + "by": "بواسطة", + "Enter your complaint here": "أدخل شكواك هنا", + "Please enter your complaint.": "الرجاء إدخال شكواك.", + "Complaint data saved successfully": "تم حفظ بيانات الشكوى بنجاح", + "Trip Monitor": "مراقبة الرحلة", + "Insert SOS Phone": "إدخال هاتف الطوارئ", + "Add SOS Phone": "إضافة هاتف الطوارئ", + "Dear ,\n\n 🚀 I have just started an exciting trip and I would like to share the details of my journey and my current location with you in real-time! Please download the Tripz app. It will allow you to view my trip details and my latest location.\n\n 👉 Download link: \n Android [https://play.google.com/store/apps/details?id=com.mobileapp.store.ride]\n iOS [https://getapp.cc/app/6458734951]\n\n I look forward to keeping you close during my adventure!\n\n Tripz ,": + "عزيزي،\n\n🚀 لقد بدأت للتو رحلة مثيرة وأود مشاركة تفاصيل رحلتي وموقعي الحالي معك في الوقت الفعلي! يرجى تنزيل تطبيق Tripz. سيسمح لك بمشاهدة تفاصيل رحلتي وموقعي الأخير.\n\n👉 رابط التحميل:\nAndroid [https://play.google.com/store/apps/details?id=com.mobileapp.store.ride]\niOS [https://getapp.cc/app/6458734951]\n\nأتطلع إلى إبقائك قريبًا خلال مغامرتي!\n\nTripz،", + "Send Tripz app to him": "إرسال تطبيق Tripz إليه", + "No passenger found for the given phone number": + "لم يتم العثور على راكب لرقم الهاتف المحدد", + "No user found for the given phone number": + "لم يتم العثور على مستخدم لرقم الهاتف المحدد", + "This price is": "هذا السعر هو", + "Work": "عمل", + "Add Home": "إضافة منزل", + "Notifications": "الإشعارات", + "💳 Pay with Credit Card": "💳 الدفع ببطاقة الائتمان", + "⚠️ You need to choose an amount!": "⚠️ تحتاج إلى اختيار مبلغ!", + "💰 Pay with Wallet": "💰 الدفع بالمحفظة", + "You must restart the app to change the language.": + "يجب إعادة تشغيل التطبيق لتغيير اللغة.", + "joined": "انضم", + "Driver joined the channel": "انضم السائق إلى القناة", + "Driver left the channel": "غادر السائق القناة", + "Call Page": "صفحة الاتصال", + "Call Left": "مكالمات متبقية", + "\$ Next as Cash \$!": "!التالي نقدًا\$", + "To use Wallet charge it": "لاستخدام المحفظة، قم بشحنها", + "We are searching for the nearest driver to you": + "نحن نبحث عن أقرب سائق لك", + "Best choice for cities": "أفضل خيار للمدن", + "Rayeh Gai: Round trip service for convenient travel between cities, easy and reliable.": + "رايح جاي: خدمة الذهاب والعودة لرحلة مريحة بين المدن، سهلة وموثوقة.", + "Rayeh Gai": "رايح جاي", + "This trip is for women only": "هذه الرحلة للنساء فقط", + "Total budgets on month": "إجمالي الميزانية الشهرية", + "You have call from driver": "لديك مكالمة من السائق", + "Comfort": "راحة", + "Tripz": "Tripz", + "Driver already has 2 trips within the specified period.": + "لدى السائق بالفعل رحلتين خلال الفترة المحددة.", + "The invitation was sent successfully": "تم إرسال الدعوة بنجاح", + "Lady": "سيدة", + "You should select your country": "يجب عليك اختيار بلدك", + "Scooter": "سكوتر", + "A trip with a prior reservation, allowing you to choose the best captains and cars.": + "رحلة مع حجز مسبق، تتيح لك اختيار أفضل الكابتنات والسيارات.", + "Mishwar Vip": "مشوار VIP", + "The driver waiting you in picked location .": + "السائق في انتظارك في الموقع المحدد.", + "About Us": "معلومات عنا", + "You can change the vibration feedback for all buttons": + "يمكنك تغيير ردود الاهتزاز لجميع الأزرار", + "Most Secure Methods": "أكثر الطرق أمانًا", + "In-App VOIP Calls": "مكالمات VOIP داخل التطبيق", + "Recorded Trips for Safety": "رحلات مسجلة للأمان", + "\nWe also prioritize affordability, offering competitive pricing to make your rides accessible.": + "\nنحن نولي أيضًا القدرة على تحمل التكاليف أولوية، ونقدم أسعارًا تنافسية لجعل رحلاتك في متناول الجميع.", + "Tripz is a ride-sharing app designed with your safety and affordability in mind. We connect you with reliable drivers in your area, ensuring a convenient and stress-free travel experience.\n\nHere are some of the key features that set us apart:": + "Tripz هو تطبيق لمشاركة الرحلات مصمم مع مراعاة سلامتك وقدرتك على تحمل التكاليف. نحن نوصلك بسائقين موثوقين في منطقتك، مما يضمن تجربة سفر مريحة وخالية من التوتر.\n\nإليك بعض الميزات الرئيسية التي تميزنا:", + "Sign In by Apple": "تسجيل الدخول باستخدام Apple", + "Sign In by Google": "تسجيل الدخول باستخدام Google", + "How do I request a ride?": "كيف يمكنني طلب رحلة؟", + "Step-by-step instructions on how to request a ride through the Tripz app.": + "تعليمات خطوة بخطوة حول كيفية طلب رحلة من خلال تطبيق Tripz.", + "What types of vehicles are available?": "ما أنواع المركبات المتاحة؟", + "Tripz offers a variety of vehicle options to suit your needs, including economy, comfort, and luxury. Choose the option that best fits your budget and passenger count.": + "يقدم Tripz مجموعة متنوعة من خيارات المركبات لتلبية احتياجاتك، بما في ذلك الاقتصادية والراحة والفاخرة. اختر الخيار الذي يناسب ميزانيتك وعدد الركاب.", + "How can I pay for my ride?": "كيف يمكنني الدفع مقابل رحلتي؟", + "Tripz offers multiple payment methods for your convenience. Choose between cash payment or credit/debit card payment during ride confirmation.": + "يقدم Tripz طرق دفع متعددة لراحتك. اختر بين الدفع نقدًا أو ببطاقة الائتمان/الخصم أثناء تأكيد الرحلة.", + "Can I cancel my ride?": "هل يمكنني إلغاء رحلتي؟", + "Yes, you can cancel your ride under certain conditions (e.g., before driver is assigned). See the Tripz cancellation policy for details.": + "نعم، يمكنك إلغاء رحلتك تحت ظروف معينة (مثلًا، قبل تعيين السائق). راجع سياسة إلغاء Tripz للحصول على التفاصيل.", + "Driver Registration & Requirements": "تسجيل السائق والمتطلبات", + "How can I register as a driver?": "كيف يمكنني التسجيل كسائق؟", + "What are the requirements to become a driver?": + "ما هي متطلبات أن تصبح سائقًا؟", + "Visit our website or contact Tripz support for information on driver registration and requirements.": + "قم بزيارة موقعنا على الإنترنت أو اتصل بدعم Tripz للحصول على معلومات حول تسجيل السائق والمتطلبات.", + "Tripz provides in-app chat functionality to allow you to communicate with your driver or passenger during your ride.": + "يوفر Tripz وظيفة الدردشة داخل التطبيق للسماح لك بالتواصل مع سائقك أو راكبك أثناء رحلتك.", + "Tripz prioritizes your safety. We offer features like driver verification, in-app trip tracking, and emergency contact options.": + "Tripz يعطي الأولوية لسلامتك. نحن نقدم ميزات مثل التحقق من السائق، وتتبع الرحلة داخل التطبيق، وخيارات الاتصال في حالات الطوارئ.", + "Frequently Questions": "أسئلة متكررة", + "User does not exist.": "المستخدم غير موجود.", + "We need your phone number to contact you and to help you.": + "نحتاج إلى رقم هاتفك للاتصال بك ومساعدتك.", + "You will recieve code in sms message": + "سوف تتلقى رمزًا في رسالة SMS", + "Please enter": "الرجاء إدخال", + "We need your phone number to contact you and to help you receive orders.": + "نحتاج إلى رقم هاتفك للاتصال بك ومساعدتك في استلام الطلبات.", + "The full name on your criminal record does not match the one on your driver's license. Please verify and provide the correct documents.": + "الاسم الكامل في سجلك الجنائي لا يتطابق مع الاسم الموجود في رخصة القيادة الخاصة بك. يرجى التحقق وتقديم الوثائق الصحيحة.", + "The national number on your driver's license does not match the one on your ID document. Please verify and provide the correct documents.": + "الرقم الوطني على رخصة القيادة الخاصة بك لا يتطابق مع الرقم الموجود على وثيقة هويتك. يرجى التحقق وتقديم الوثائق الصحيحة.", + "Capture an Image of Your Criminal Record": + "التقاط صورة لسجلك الجنائي", + "IssueDate": "تاريخ الإصدار", + "Capture an Image of Your car license front": + "التقاط صورة للوجه الأمامي لرخصة سيارتك", + "Capture an Image of Your ID Document front": + "التقاط صورة للوجه الأمامي لوثيقة هويتك", + "NationalID": "الرقم القومي", + "You can share the Tripz App with your friends and earn rewards for rides they take using your code": + "يمكنك مشاركة تطبيق Tripz مع أصدقائك وكسب مكافآت عن الرحلات التي يقومون بها باستخدام رمزك.", + "FullName": "الاسم الكامل", + "No invitation found yet!": "لم يتم العثور على دعوات بعد!", + "InspectionResult": "نتيجة الفحص", + "Criminal Record": "السجل الجنائي", + "Share App": "مشاركة التطبيق", + "The email or phone number is already registered.": + "البريد الإلكتروني أو رقم الهاتف مسجل بالفعل.", + "To become a ride-sharing driver on the Tripz app, you need to upload your driver's license, ID document, and car registration document. Our AI system will instantly review and verify their authenticity in just 2-3 minutes. If your documents are approved, you can start working as a driver on the Tripz app. Please note, submitting fraudulent documents is a serious offense and may result in immediate termination and legal consequences.": + "لتصبح سائق مشاركة رحلات على تطبيق Tripz، تحتاج إلى تحميل رخصة القيادة الخاصة بك، وثيقة الهوية، ووثيقة تسجيل السيارة. سيقوم نظام الذكاء الاصطناعي الخاص بنا بمراجعة وتأكيد صحتها على الفور في غضون 2-3 دقائق فقط. إذا تمت الموافقة على وثائقك، يمكنك البدء في العمل كسائق على تطبيق Tripz. يرجى ملاحظة أن تقديم وثائق مزورة جريمة خطيرة وقد يؤدي إلى إنهاء فوري وعواقب قانونية.", + "Documents check": "فحص الوثائق", + "Driver's License": "رخصة القيادة", + "for your first registration!": "لتسجيلك الأول!", + "Get it Now!": "احصل عليه الآن!", + "before": "قبل", + "Code not approved": "الرمز غير معتمد", + "3000 LE": "3000 جنيه", + "Do you have an invitation code from another driver?": + "هل لديك رمز دعوة من سائق آخر؟", + "Paste the code here": "الصق الرمز هنا", + "No, I don't have a code": "لا، ليس لدي رمز", + "Code approved": "تمت الموافقة على الرمز", + "Install our app:": "قم بتثبيت تطبيقنا:", + "Invite another driver and both get a gift after he completes 100 trips!": + "ادعُ سائقًا آخر واحصلا على هدية بعد إكماله 100 رحلة!", + "Invite": "دعوة", + "Are you sure?": "هل أنت متأكد؟", + "This will delete all recorded files from your device.": + "سيؤدي هذا إلى حذف جميع الملفات المسجلة من جهازك.", + "Select a file": "اختر ملفًا", + "Select a File": "اختر ملفًا", + "Delete": "حذف", + "attach audio of complain": "إرفاق صوت للشكوى", + "Phone Number Check": "فحص رقم الهاتف", + "Drivers received orders": "استلم السائقون الطلبات", + "No audio files recorded.": "لا توجد ملفات صوتية مسجلة.", + "This is for delivery or a motorcycle.": + "هذا للتوصيل أو للدراجة النارية.", + "Tripz Reminder": "تذكير Tripz", + "It's time to check the Tripz app!": + "حان الوقت للتحقق من تطبيق Tripz!", + "you must insert token code": "يجب عليك إدخال رمز الرمز المميز", + "Something went wrong. Please try again.": + "حدث خطأ ما. يرجى المحاولة مرة أخرى.", + "Trip Details": "تفاصيل الرحلة", + "The context does not provide any complaint details, so I cannot provide a solution to this issue. Please provide the necessary information, and I will be happy to assist you.": + "لا يوفر السياق أي تفاصيل عن الشكوى، لذا لا يمكنني تقديم حل لهذه المشكلة. يرجى تقديم المعلومات اللازمة، وسأكون سعيدًا بمساعدتك.", + "Submit Your Complaint": "تقديم شكواك", + "Date": "التاريخ", + "Price": "السعر", + "Status": "الحالة", + "Choose from contact": "اختر من جهات الاتصال", + "attach correct audio": "إرفاق صوت صحيح", + "be sure": "كن متأكدًا", + "Audio uploaded successfully.": "تم تحميل الصوت بنجاح.", + "Perfect for passengers seeking the latest car models with the freedom to choose any route they desire": + "مثالي للركاب الذين يبحثون عن أحدث طرازات السيارات مع حرية اختيار أي مسار يرغبون فيه", + "Share this code with your friends and earn rewards when they use it!": + "شارك هذا الرمز مع أصدقائك واكسب مكافآت عندما يستخدمونه!", + "Enter phone": "أدخل الهاتف", + "You deserve the gift": "أنت تستحق الهدية", + "complete, you can claim your gift": "اكتمل، يمكنك المطالبة بهديتك", + "When": "عندما", + "Enter driver's phone": "أدخل هاتف السائق", + "Send Invite": "إرسال دعوة", + "Show Invitations": "عرض الدعوات", + "License Type": "نوع الرخصة", + "National Number": "الرقم الوطني", + "Name (Arabic)": "الاسم (عربي)", + "Name (English)": "الاسم (إنجليزي)", + "Address": "العنوان", + "Issue Date": "تاريخ الإصدار", + "Expiry Date": "تاريخ الانتهاء", + "License Categories": "فئات الرخصة", + "driver_license": "رخصة القيادة", + "Capture an Image of Your Driver License": + "التقاط صورة لرخصة القيادة الخاصة بك", + "ID Documents Back": "الوجه الخلفي لوثائق الهوية", + "National ID": "الهوية الوطنية", + "Occupation": "المهنة", + "Gender": "الجنس", + "Religion": "الدين", + "Marital Status": "الحالة الاجتماعية", + "Full Name (Marital)": "الاسم الكامل (حسب الحالة الاجتماعية)", + "Expiration Date": "تاريخ الانتهاء", + "Capture an Image of Your ID Document Back": + "التقاط صورة للوجه الخلفي لوثيقة هويتك", + "ID Documents Front": "الوجه الأمامي لوثائق الهوية", + "First Name": "الاسم الأول", + "CardID": "رقم البطاقة", + "Vehicle Details Front": "تفاصيل المركبة (الوجه الأمامي)", + "Plate Number": "رقم اللوحة", + "Owner Name": "اسم المالك", + "Vehicle Details Back": "تفاصيل المركبة (الوجه الخلفي)", + "Make": "الصنع", + "Model": "الموديل", + "Year": "السنة", + "Chassis": "الشاسيه", + "Color": "اللون", + "Displacement": "السعة", + "Fuel": "الوقود", + "Tax Expiry Date": "تاريخ انتهاء الضريبة", + "Inspection Date": "تاريخ الفحص", + "Capture an Image of Your car license back": + "التقاط صورة للوجه الخلفي لرخصة سيارتك", + "Capture an Image of Your Driver's License": + "التقاط صورة لرخصة القيادة الخاصة بك", + "Sign in with Google for easier email and name entry": + "تسجيل الدخول باستخدام Google لتسهيل إدخال البريد الإلكتروني والاسم", + "You will choose allow all the time to be ready receive orders": + "ستختار السماح طوال الوقت لتكون جاهزًا لاستلام الطلبات", + "Welcome to Tripz!": "مرحبًا بكم في Tripz!", + "Get to your destination quickly and easily.": + "الوصول إلى وجهتك بسرعة وسهولة.", + "Enjoy a safe and comfortable ride.": "استمتع برحلة آمنة ومريحة.", + "Choose Language": "اختر اللغة", + "Login": "تسجيل الدخول", + "Pay with Wallet": "الدفع بالمحفظة", + "Invalid MPIN": "MPIN غير صالح", + "Invalid OTP": "OTP غير صالح", + "Enter your email address": "أدخل عنوان بريدك الإلكتروني", + "Please enter Your Email.": "الرجاء إدخال بريدك الإلكتروني.", + "Enter your phone number": "أدخل رقم هاتفك", + "Please enter your phone number.": "الرجاء إدخال رقم هاتفك.", + "Please enter Your Password.": "الرجاء إدخال كلمة المرور الخاصة بك.", + "if you dont have account": "إذا لم يكن لديك حساب", + "Register": "تسجيل", + "Accept Ride's Terms & Review Privacy Notice": + "قبول شروط الرحلة ومراجعة إشعار الخصوصية", + "By selecting 'I Agree' below, I have reviewed and agree to the Terms of Use and acknowledge the Privacy Notice. I am at least 18 years of age.": + "بالنقر على 'أوافق' أدناه، أكدت أنني قد راجعت وأوافق على شروط الاستخدام وأعترف بإشعار الخصوصية. أنا عمري 18 سنة على الأقل.", + "I Agree": "أوافق", + "First name": "الاسم الأول", + "Enter your first name": "أدخل اسمك الأول", + "Please enter your first name.": "الرجاء إدخال اسمك الأول.", + "Last name": "الاسم الأخير", + "Enter your last name": "أدخل اسمك الأخير", + "Please enter your last name.": "الرجاء إدخال اسمك الأخير.", + "City": "المدينة", + "Please enter your City.": "الرجاء إدخال مدينتك.", + "Male": "ذكر", + "Female": "أنثى", + "Verify Email": "التحقق من البريد الإلكتروني", + "We sent 5 digit to your Email provided": + "أرسلنا 5 أرقام إلى بريدك الإلكتروني المقدم", + "5 digit": "5 أرقام", + "Send Verification Code": "إرسال رمز التحقق", + "Your Ride Duration is ": "مدة رحلتك هي ", + "You will be thier in": "ستكون هناك في", + "You trip distance is": "مسافة رحلتك هي", + "Fee is": "الرسوم هي", + "From : ": "من: ", + "To : ": "إلى: ", + "Add Promo": "إضافة عرض ترويجي", + "Confirm Selection": "تأكيد الاختيار", + "distance is": "المسافة هي", + "Tripz LLC": "شركة Tripz", + "Egypt's pioneering ride-sharing service, proudly developed by Arabian and local owners. We prioritize being near you – both our valued passengers and our dedicated captains.": + "خدمة مشاركة الرحلات الرائدة في مصر، تم تطويرها بفخر من قبل مالكين عرب ومحليين. نولي الأولوية لكوننا قريبين منك - سواء كنت راكبًا عزيزًا أو كابتنًا مخلصًا.", + "Why Choose Tripz?": "لماذا تختار Tripz؟", + "Closest to You": "الأقرب إليك", + "We connect you with the nearest drivers for faster pickups and quicker journeys.": + "نحن نوصلك بأقرب السائقين لعمليات استلام أسرع ورحلات أسرع.", + "Uncompromising Security": "أمان لا هوادة فيه", + "Lady Captains Available": "كابتنات سيدات متاحات", + "Recorded Trips (Voice & AI Analysis)": + "رحلات مسجلة (تحليل صوتي وذكاء اصطناعي)", + "Fastest Complaint Response": "أسرع استجابة للشكاوى", + "Our dedicated customer service team ensures swift resolution of any issues.": + "يضمن فريق خدمة العملاء المخصص لدينا حلًا سريعًا لأي مشكلات.", + "Affordable for Everyone": "بأسعار معقولة للجميع", + "Frequently Asked Questions": "أسئلة شائعة", + "Getting Started": "البدء", + "Simply open the Tripz app, enter your destination, and tap \"Request Ride\". The app will connect you with a nearby driver.": + "ببساطة افتح تطبيق Tripz، أدخل وجهتك، واضغط على \"طلب رحلة\". سيتصل التطبيق بسائق قريب.", + "Vehicle Options": "خيارات المركبات", + "Tripz offers a variety of options including Economy, Comfort, and Luxury to suit your needs and budget.": + "يقدم Tripz مجموعة متنوعة من الخيارات بما في ذلك الاقتصادية والراحة والفاخرة لتلبية احتياجاتك وميزانيتك.", + "Payments": "المدفوعات", + "You can pay for your ride using cash or credit/debit card. You can select your preferred payment method before confirming your ride.": + "يمكنك الدفع مقابل رحلتك نقدًا أو ببطاقة الائتمان/الخصم. يمكنك اختيار طريقة الدفع المفضلة لديك قبل تأكيد رحلتك.", + "Ride Management": "إدارة الرحلات", + "Yes, you can cancel your ride, but please note that cancellation fees may apply depending on how far in advance you cancel.": + "نعم، يمكنك إلغاء رحلتك، ولكن يرجى ملاحظة أن رسوم الإلغاء قد تنطبق اعتمادًا على مدى تقدمك في الإلغاء.", + "For Drivers": "للسائقين", + "Driver Registration": "تسجيل السائق", + "To register as a driver or learn about the requirements, please visit our website or contact Tripz support directly.": + "لتسجيل كسائق أو معرفة المتطلبات، يرجى زيارة موقعنا على الإنترنت أو الاتصال بدعم Tripz مباشرة.", + "Visit Website/Contact Support": "زيارة الموقع/الاتصال بالدعم", + "Close": "إغلاق", + "We are searching for the nearest driver": "نحن نبحث عن أقرب سائق", + "Communication": "الاتصال", + "How do I communicate with the other party (passenger/driver)?": + "كيف يمكنني التواصل مع الطرف الآخر (الراكب/السائق)؟", + "You can communicate with your driver or passenger through the in-app chat feature once a ride is confirmed.": + "يمكنك التواصل مع سائقك أو راكبك من خلال ميزة الدردشة داخل التطبيق بمجرد تأكيد الرحلة.", + "Safety & Security": "السلامة والأمان", + "What safety measures does Tripz offer?": + "ما هي إجراءات السلامة التي يقدمها Tripz؟", + "Tripz offers various safety features including driver verification, in-app trip tracking, emergency contact options, and the ability to share your trip status with trusted contacts.": + "يقدم Tripz ميزات أمان متنوعة بما في ذلك التحقق من السائق، وتتبع الرحلة داخل التطبيق، وخيارات الاتصال في حالات الطوارئ، والقدرة على مشاركة حالة رحلتك مع جهات اتصال موثوقة.", + "Enjoy competitive prices across all trip options, making travel accessible.": + "استمتع بأسعار تنافسية عبر جميع خيارات الرحلات، مما يجعل السفر في متناول الجميع.", + "Variety of Trip Choices": "تنوع خيارات الرحلات", + "Choose the trip option that perfectly suits your needs and preferences.": + "اختر خيار الرحلة الذي يناسب احتياجاتك وتفضيلاتك تمامًا.", + "Your Choice, Our Priority": "اختيارك هو أولويتنا", + "Because we are near, you have the flexibility to choose the ride that works best for you.": + "لأننا قريبون، لديك المرونة لاختيار الرحلة التي تناسبك أفضل.", + "duration is": "المدة هي", + "Setting": "الإعدادات", + "Find answers to common questions": "ابحث عن إجابات للأسئلة الشائعة", + "I don't need a ride anymore": "لم أعد بحاجة إلى رحلة", + "I was just trying the application": "كنت أجرب التطبيق فقط", + "No driver accepted my request": "لم يقبل أي سائق طلبي", + "I added the wrong pick-up/drop-off location": + "أضفت موقع الاستلام/التوصيل الخاطئ", + "I don't have a reason": "ليس لدي سبب", + "Other": "أخرى", + "Can we know why you want to cancel Ride ?": + "هل يمكننا معرفة سبب رغبتك في إلغاء الرحلة؟", + "Cancel Ride": "إلغاء الرحلة", + "Add Payment Method": "إضافة طريقة دفع", + "Your Wallet balance is ": "رصيد محفظتك هو ", + "Ride Wallet": "محفظة الرحلة", + "Payment Method": "طريقة الدفع", + "Type here Place": "اكتب هنا المكان", + "Are You sure to ride to": "هل أنت متأكد من الركوب إلى", + "Confirm": "تأكيد", + "You are Delete": "أنت تحذف", + "Deleted": "تم الحذف", + "You Dont Have Any places yet !": "ليس لديك أي أماكن بعد!", + "From : Current Location": "من: الموقع الحالي", + "My Cared": "بطاقاتي", + "Add Card": "إضافة بطاقة", + "Add Credit Card": "إضافة بطاقة ائتمان", + "Please enter the cardholder name": "الرجاء إدخال اسم حامل البطاقة", + "Please enter the expiry date": "الرجاء إدخال تاريخ الانتهاء", + "Please enter the CVV code": "الرجاء إدخال رمز CVV", + "Go To Favorite Places": "الذهاب إلى الأماكن المفضلة", + "Go to this Target": "الذهاب إلى هذا الهدف", + "My Profile": "ملفي الشخصي", + "Sign Out": "تسجيل الخروج", + "Are you want to go to this site": "هل تريد الذهاب إلى هذا الموقع؟", + "MyLocation": "موقعي", + "my location": "موقعي", + "Target": "هدف", + "Update": "تحديث", + "You Should choose rate figure": "يجب عليك اختيار رقم التقييم", + "Login Captin": "تسجيل دخول الكابتن", + "Register Captin": "تسجيل الكابتن", + "Send Verfication Code": "إرسال رمز التحقق", + "KM": "كم", + "End Ride": "إنهاء الرحلة", + "Minute": "دقيقة", + "Go to passenger Location now": "اذهب إلى موقع الراكب الآن", + "Duration of the Ride is ": "مدة الرحلة هي ", + "Distance of the Ride is ": "مسافة الرحلة هي ", + "Name of the Passenger is ": "اسم الراكب هو ", + "Hello this is Captain": "مرحبًا، هذا الكابتن", + "Start the Ride": "بدء الرحلة", + "Please Wait If passenger want To Cancel!": + "الرجاء الانتظار إذا أراد الراكب الإلغاء!", + "Total Duration:": "المدة الإجمالية:", + "Active Duration:": "المدة النشطة:", + "Waiting for Captin ...": "في انتظار الكابتن ...", + "Age is ": "العمر هو ", + "Rating is ": "التقييم هو ", + " to arrive you.": "للوصول إليك.", + "Tariff": "التعريفة", + "Settings": "الإعدادات", + "Feed Back": "ردود الفعل", + "Please enter a valid 16-digit card number": + "الرجاء إدخال رقم بطاقة صالح مكون من 16 رقمًا", + "Add Phone": "إضافة هاتف", + "Please enter a phone number": "الرجاء إدخال رقم هاتف", + "You dont Add Emergency Phone Yet!": + "لم تقم بإضافة هاتف الطوارئ بعد!", + "You will arrive to your destination after ": "ستصل إلى وجهتك بعد ", + "You can cancel Ride now": "يمكنك إلغاء الرحلة الآن", + "You Can cancel Ride After Captain did not come in the time": + "يمكنك إلغاء الرحلة بعد أن لم يأت الكابتن في الوقت المحدد", + "If you in Car Now. Press Start The Ride": + "إذا كنت في السيارة الآن. اضغط على بدء الرحلة", + "You Dont Have Any amount in": "ليس لديك أي مبلغ في", + "Wallet!": "المحفظة!", + "You Have": "لديك", + "Save Credit Card": "حفظ بطاقة الائتمان", + "Show Promos": "عرض العروض الترويجية", + "10 and get 4% discount": "10 واحصل على خصم 4%", + "20 and get 6% discount": "20 واحصل على خصم 6%", + "40 and get 8% discount": "40 واحصل على خصم 8%", + "100 and get 11% discount": "100 واحصل على خصم 11%", + "Pay with Your PayPal": "الدفع باستخدام PayPal", + "You will choose one of above !": "ستختار أحد الخيارات أعلاه!", + "Delete My Account": "حذف حسابي", + "Edit Profile": "تعديل الملف الشخصي", + "Name": "الاسم", + "Update Gender": "تحديث الجنس", + "Education": "التعليم", + "Update Education": "تحديث التعليم", + "Employment Type": "نوع التوظيف", + "SOS Phone": "هاتف الطوارئ", + "High School Diploma": "دبلوم المدرسة الثانوية", + "Associate Degree": "درجة الزمالة", + "Bachelor's Degree": "درجة البكالوريوس", + "Master's Degree": "درجة الماجستير", + "Doctoral Degree": "درجة الدكتوراه", + "Copy this Promo to use it in your Ride!": + "انسخ هذا العرض الترويجي لاستخدامه في رحلتك!", + "To change some Settings": "لتغيير بعض الإعدادات", + "Order Request Page": "صفحة طلب الطلب", + "Rouats of Trip": "طرق الرحلة", + "Passenger Name is ": "اسم الراكب هو ", + "Total From Passenger is ": "المجموع من الراكب هو ", + "Duration To Passenger is ": "المدة للراكب هي ", + "Distance To Passenger is ": "المسافة للراكب هي ", + "Total For You is ": "المجموع لك هو ", + "Distance is ": "المسافة هي ", + " KM": " كم", + "Duration of Trip is ": "مدة الرحلة هي ", + " Minutes": " دقائق", + "Apply Order": "تطبيق الطلب", + "Refuse Order": "رفض الطلب", + "Rate Captain": "تقييم الكابتن", + "Enter your Note": "أدخل ملاحظتك", + "Type something...": "اكتب شيئًا...", + "Submit rating": "إرسال التقييم", + "Rate Passenger": "تقييم الراكب", + "Ride Summary": "ملخص الرحلة", + "welcome_message": "مرحبًا بك في Tripz!", + "app_description": + "Tripz هو تطبيق مشاركة ركوب موثوق وآمن وسهل الوصول إليه.", + "get_to_destination": "اذهب إلى وجهتك بسرعة وسهولة.", + "get_a_ride": "مع Tripz، يمكنك الحصول على رحلة إلى وجهتك في دقائق.", + "safe_and_comfortable": "استمتع برحلة آمنة ومريحة.", + "committed_to_safety": + "Tripz ملتزمة بالسلامة، وكل كابتناتنا يتم فحصهم بعناية والتحقق من خلفيتهم.", + "your ride is Accepted": "تم قبول رحلتك", + "Driver is waiting at pickup.": + "السائق في انتظارك عند نقطة الاستلام.", + "Driver is on the way": "السائق في الطريق", + "Contact Options": "خيارات الاتصال", + "Send a custom message": "إرسال رسالة مخصصة", + "Type your message": "اكتب رسالتك", + "I will go now": "سأذهب الآن", + "You Have Tips": "لديك بقشيش", + " tips\nTotal is": " بقشيش\nالمجموع هو", + "Your fee is ": "أجرتك هي ", + "Do you want to pay Tips for this Driver": + "هل تريد دفع بقشيش لهذا السائق؟", + "Tip is ": "البقشيش هو ", + "Are you want to wait drivers to accept your order": + "هل تريد الانتظار حتى يقبل السائقون طلبك؟", + "This price is fixed even if the route changes for the driver.": + "هذا السعر ثابت حتى لو تغير المسار للسائق.", + "The price may increase if the route changes.": + "قد يزيد السعر إذا تغير المسار.", + "The captain is responsible for the route.": + "الكابتن مسؤول عن المسار.", + "We are search for nearst driver": "نحن نبحث عن أقرب سائق", + "Your order is being prepared": "يتم تحضير طلبك", + "The drivers are reviewing your request": "السائقون يراجعون طلبك", + "Your order sent to drivers": "تم إرسال طلبك إلى السائقين", + "You can call or record audio of this trip": + "يمكنك الاتصال أو تسجيل صوت لهذه الرحلة", + "The trip has started! Feel free to contact emergency numbers, share your trip, or activate voice recording for the journey": + "بدأت الرحلة! لا تتردد في الاتصال بأرقام الطوارئ، مشاركة رحلتك، أو تفعيل التسجيل الصوتي للرحلة.", + "Camera Access Denied.": "تم رفض الوصول إلى الكاميرا.", + "Open Settings": "فتح الإعدادات", + "GPS Required Allow !.": "يجب السماح بـ GPS!", + "Your Account is Deleted": "تم حذف حسابك", + "Are you sure to delete your account?": "هل أنت متأكد من حذف حسابك؟", + "Your data will be erased after 2 weeks\nAnd you will can't return to use app after 1 month ": + "سيتم حذف بياناتك بعد أسبوعين\nولن تتمكن من العودة لاستخدام التطبيق بعد شهر", + "Enter Your First Name": "أدخل اسمك الأول", + "Are you Sure to LogOut?": "هل أنت متأكد من تسجيل الخروج؟", + "Email Wrong": "البريد الإلكتروني خاطئ", + "Email you inserted is Wrong.": "البريد الإلكتروني الذي أدخلته خاطئ.", + "You have finished all times ": "لقد انتهيت من كل المحاولات", + "if you want help you can email us here": + "إذا كنت تريد المساعدة يمكنك مراسلتنا هنا", + "Thanks": "شكرًا", + "Email Us": "راسلنا عبر البريد الإلكتروني", + "I cant register in your app in face detection ": + "لا يمكنني التسجيل في تطبيقك في كشف الوجه", + "Hi": "مرحبًا", + "No face detected": "لم يتم اكتشاف أي وجه", + "Image detecting result is ": "نتيجة اكتشاف الصورة هي ", + "from 3 times Take Attention": "من 3 مرات انتبه", + "Be sure for take accurate images please\nYou have": + "كن متأكدًا من التقاط صور دقيقة من فضلك\nلديك", + "image verified": "تم التحقق من الصورة", + "Next": "التالي", + "There is no help Question here": "لا يوجد سؤال مساعدة هنا", + "You dont have Points": "ليس لديك نقاط", + "You Are Stopped For this Day !": "تم إيقافك لهذا اليوم!", + "You must be charge your Account": "يجب عليك شحن حسابك", + "You Refused 3 Rides this Day that is the reason \nSee you Tomorrow!": + "لقد رفضت 3 رحلات هذا اليوم وهذا هو السبب\nنراكم غدًا!", + "Recharge my Account": "إعادة شحن حسابي", + "Ok , See you Tomorrow": "حسنًا، أراك غدًا", + "You are Stopped": "تم إيقافك", + "Connected": "متصل", + "Not Connected": "غير متصل", + "Your are far from passenger location": "أنت بعيد عن موقع الراكب", + "go to your passenger location before\nPassenger cancel trip": + "اذهب إلى موقع الراكب قبل\nأن يلغي الراكب الرحلة", + "You will get cost of your work for this trip": + "ستحصل على تكلفة عملك لهذه الرحلة", + " in your wallet": "في محفظتك", + "you gain": "لقد ربحت", + "Order Cancelled by Passenger": "تم إلغاء الطلب من قبل الراكب", + "Success": "نجاح", + "Feedback data saved successfully": "تم حفظ بيانات التعليقات بنجاح", + "No Promo for today .": "لا يوجد عرض ترويجي لهذا اليوم.", + "Select your destination": "اختر وجهتك", + "Search for your Start point": "ابحث عن نقطة البداية", + "Search for waypoint": "ابحث عن النقطة الوسيطة", + "Current Location": "الموقع الحالي", + "Add Location 1": "إضافة الموقع 1", + "You must Verify email !.": "يجب عليك التحقق من البريد الإلكتروني!", + "Cropper": "القاطع", + "Saved Sucssefully": "تم الحفظ بنجاح", + "Select Date": "اختر التاريخ", + "Birth Date": "تاريخ الميلاد", + "Ok": "موافق", + "the 500 points equal 30 JOD": "500 نقطة تساوي 30 دينار أردني", + "the 500 points equal 30 JOD for you \nSo go and gain your money": + "500 نقطة تساوي 30 دينار أردني لك\nلذا اذهب واكسب أموالك", + "token updated": "تم تحديث الرمز المميز", + "Add Location 2": "إضافة الموقع 2", + "Add Location 3": "إضافة الموقع 3", + "Add Location 4": "إضافة الموقع 4", + "Waiting for your location": "في انتظار موقعك", + "Search for your destination": "ابحث عن وجهتك", + "Hi! This is": "مرحبًا! هذا هو", + " I am using": " أنا أستخدم", + " to ride with": " للركوب مع", + " as the driver.": " كسائق.", + "is driving a ": "يقود ", + " with license plate ": " بلوحة ترخيص ", + " I am currently located at ": " أنا حاليًا في ", + "Please go to Car now ": "الرجاء الذهاب إلى السيارة الآن", + "You will receive a code in WhatsApp Messenger": + "سوف تتلقى رمزًا في WhatsApp Messenger", + "If you need assistance, contact us": + "إذا كنت بحاجة إلى مساعدة، اتصل بنا", + "Promo Ended": "انتهى العرض الترويجي", + "Enter the promo code and get": "أدخل رمز العرض الترويجي واحصل على", + "DISCOUNT": "خصم", + "No wallet record found": "لم يتم العثور على سجل محفظة", + "for": "لمدة", + "Tripz is the safest ride-sharing app that introduces many features for both captains and passengers. We offer the lowest commission rate of just 8%, ensuring you get the best value for your rides. Our app includes insurance for the best captains, regular maintenance of cars with top engineers, and on-road services to ensure a respectful and high-quality experience for all users.": + "Tripz هو تطبيق مشاركة ركوب الأكثر أمانًا الذي يقدم العديد من الميزات لكل من الكابتنات والركاب. نقدم أقل معدل عمولة بنسبة 8٪ فقط، مما يضمن لك الحصول على أفضل قيمة مقابل رحلاتك. يتضمن تطبيقنا تأمينًا لأفضل الكابتنات، وصيانة دورية للسيارات مع كبار المهندسين، وخدمات على الطريق لضمان تجربة محترمة وعالية الجودة لجميع المستخدمين.", + "You can contact us during working hours from 12:00 - 19:00.": + "يمكنك الاتصال بنا خلال ساعات العمل من 12:00 إلى 19:00.", + "Choose a contact option": "اختر خيار الاتصال", + "Work time is from 12:00 - 19:00.\nYou can send a WhatsApp message or email.": + "ساعات العمل من 12:00 إلى 19:00.\nيمكنك إرسال رسالة WhatsApp أو بريد إلكتروني.", + "Promo code copied to clipboard!": + "تم نسخ رمز العرض الترويجي إلى الحافظة!", + "Copy Code": "نسخ الرمز", + "Your invite code was successfully applied!": + "تم تطبيق رمز الدعوة الخاص بك بنجاح!", + "Payment Options": "خيارات الدفع", + "wait 1 minute to receive message": + "انتظر دقيقة واحدة لاستلام الرسالة", + "Promo Copied!": "تم نسخ العرض الترويجي!", + "You have copied the promo code.": "لقد نسخت رمز العرض الترويجي.", + "Valid Until:": "صالح حتى:", + "Select Payment Amount": "اختر مبلغ الدفع", + "The promotion period has ended.": "انتهت فترة الترويج.", + "Promo Code Accepted": "تم قبول رمز العرض الترويجي", + "Tap on the promo code to copy it!": + "اضغط على رمز العرض الترويجي لنسخه!", + "Lowest Price Achieved": "تم تحقيق أقل سعر", + "Cannot apply further discounts.": + "لا يمكن تطبيق المزيد من الخصومات.", + "Promo Already Used": "تم استخدام العرض الترويجي بالفعل", + "Invitation Used": "تم استخدام الدعوة", + "You have already used this promo code.": + "لقد استخدمت رمز العرض الترويجي هذا بالفعل.", + "Insert Your Promo Code": "أدخل رمز العرض الترويجي الخاص بك", + "Enter promo code here": "أدخل رمز العرض الترويجي هنا", + "Please enter a valid promo code": "الرجاء إدخال رمز عرض ترويجي صالح", + "Awfar Car": "سيارة أوفر", + "Old and affordable, perfect for budget rides.": + "قديمة وبأسعار معقولة، مثالية للرحلات المحدودة الميزانية.", + " If you need to reach me, please contact the driver directly at": + "إذا كنت بحاجة إلى الوصول إلي، يرجى الاتصال بالسائق مباشرة على", + "No Car or Driver Found in your area.": + "لم يتم العثور على سيارة أو سائق في منطقتك.", + "Please Try anther time ": "الرجاء المحاولة في وقت آخر", + "There no Driver Aplly your order sorry for that ": + "لا يوجد سائق ينفذ طلبك، نأسف لذلك", + "Trip Cancelled": "تم إلغاء الرحلة", + "The Driver Will be in your location soon .": + "سيكون السائق في موقعك قريبًا.", + "The distance less than 500 meter.": "المسافة أقل من 500 متر.", + "Promo End !": "انتهى العرض الترويجي!", + "There is no notification yet": "لا توجد إشعارات بعد", + "Use Touch ID or Face ID to confirm payment": + "استخدم Touch ID أو Face ID لتأكيد الدفع", + "Contact us for any questions on your order.": + "اتصل بنا لأي أسئلة حول طلبك.", + "Pyament Cancelled .": "تم إلغاء الدفع.", + "type here": "اكتب هنا", + "Scan Driver License": "مسح رخصة القيادة", + "Please put your licence in these border": + "الرجاء وضع رخصتك داخل هذه الحدود", + "Camera not initialized yet": "لم يتم تهيئة الكاميرا بعد", + "Take Image": "التقاط صورة", + "AI Page": "صفحة الذكاء الاصطناعي", + "Take Picture Of ID Card": "التقاط صورة لبطاقة الهوية", + "Take Picture Of Driver License Card": + "التقاط صورة لبطاقة رخصة القيادة", + "We are process picture please wait ": + "نحن نعالج الصورة، يرجى الانتظار", + "There is no data yet.": "لا توجد بيانات بعد.", + "Name :": "الاسم:", + "Drivers License Class: ": "فئة رخصة القيادة: ", + "Document Number: ": "رقم المستند: ", + "Address: ": "العنوان: ", + "Height: ": "الطول: ", + "Expiry Date: ": "تاريخ الانتهاء: ", + "Date of Birth: ": "تاريخ الميلاد: ", + "You can't continue with us .\nYou should renew Driver license": + "لا يمكنك الاستمرار معنا.\nيجب عليك تجديد رخصة القيادة", + "Detect Your Face ": "اكتشف وجهك", + "Go to next step\nscan Car License.": + "انتقل إلى الخطوة التالية\nمسح رخصة السيارة.", + "Name in arabic": "الاسم بالعربية", + "Drivers License Class": "فئة رخصة القيادة", + "Selected Date": "التاريخ المحدد", + "Select Time": "اختر الوقت", + "Selected Time": "الوقت المحدد", + "Selected Date and Time": "التاريخ والوقت المحددين", + "Lets check Car license ": "دعونا نتحقق من رخصة السيارة", + "Car": "السيارة", + "Plate": "اللوحة", + "Rides": "الرحلات", + "Selected driver": "السائق المحدد", + "Lets check License Back Face": "دعونا نتحقق من الوجه الخلفي للرخصة", + "Car License Card": "بطاقة رخصة السيارة", + "No image selected yet": "لم يتم اختيار أي صورة بعد", + "Made :": "الصنع:", + "model :": "الموديل:", + "VIN :": "VIN:", + "year :": "السنة:", + "ُExpire Date": "تاريخ الانتهاء", + "Login Driver": "تسجيل دخول السائق", + "Password must br at least 6 character.": + "يجب أن تكون كلمة المرور مكونة من 6 أحرف على الأقل.", + "if you don't have account": "إذا لم يكن لديك حساب", + "Here recorded trips audio": "هنا تسجيلات صوتية للرحلات", + "Register as Driver": "التسجيل كسائق", + "By selecting \"I Agree\" below, I have reviewed and agree to the Terms of Use and acknowledge the ": + "بالنقر على \"أوافق\" أدناه، أكدت أنني قد راجعت وأوافق على شروط الاستخدام وأعترف بـ ", + "Log Out Page": "صفحة تسجيل الخروج", + "Log Off": "تسجيل الخروج", + "Register Driver": "تسجيل السائق", + "Verify Email For Driver": "التحقق من البريد الإلكتروني للسائق", + "Admin DashBoard": "لوحة تحكم المدير", + "Your name": "اسمك", + "your ride is applied": "تم تطبيق رحلتك", + "Your password": "كلمة المرور الخاصة بك", + "H and": "ساعة و", + "LE": "جنيه", + "JOD": "دينار", + "m": "دقيقة", + "We search nearst Driver to you": "نحن نبحث عن أقرب سائق لك", + "please wait till driver accept your order": + "الرجاء الانتظار حتى يقبل السائق طلبك", + "No accepted orders? Try raising your trip fee to attract riders.": + "لا توجد طلبات مقبولة؟ حاول زيادة رسوم رحلتك لجذب الركاب.", + "You should select one": "يجب عليك اختيار واحد", + "The driver accept your order for": "قبل السائق طلبك مقابل", + "Increase Fee": "زيادة الرسوم", + "No, thanks": "لا، شكرًا", + "The driver on your way": "السائق في طريقه إليك", + "Total price from ": "السعر الإجمالي من ", + "Order Details Tripz": "تفاصيل الطلب Tripz", + "accepted your order": "قبل طلبك", + "Selected file:": "الملف المحدد:", + "Your trip cost is": "تكلفة رحلتك هي", + "this will delete all files from your device": + "سيؤدي هذا إلى حذف جميع الملفات من جهازك", + "Exclusive offers and discounts always with the Tripz app": + "عروض وخصومات حصرية دائمًا مع تطبيق Tripz", + "Submit Question": "إرسال سؤال", + "Please enter your Question.": "الرجاء إدخال سؤالك.", + "Help Details": "تفاصيل المساعدة", + "No trip yet found": "لم يتم العثور على رحلة بعد", + "No Response yet.": "لا توجد استجابة بعد.", + " You Earn today is ": "ما كسبته اليوم هو ", + " You Have in": " لديك في", + "Total points is ": "إجمالي النقاط هو ", + "Total Connection Duration:": "إجمالي مدة الاتصال:", + "Passenger name : ": "اسم الراكب: ", + "Cost Of Trip IS ": "تكلفة الرحلة هي ", + "Arrival time": "وقت الوصول", + "arrival time to reach your point": "وقت الوصول إلى وجهتك", + "For Tripz and scooter trips, the price is calculated dynamically. For Comfort trips, the price is based on time and distance": + "لرحلات Tripz والدراجات البخارية، يتم حساب السعر ديناميكيًا. لرحلات الراحة، يعتمد السعر على الوقت والمسافة.", + "Hello this is Driver": "مرحبًا، هذا هو السائق", + "Is the Passenger in your Car ?": "هل الراكب في سيارتك؟", + "Please wait for the passenger to enter the car before starting the trip.": + "الرجاء الانتظار حتى يدخل الراكب السيارة قبل بدء الرحلة.", + "No ,still Waiting.": "لا، ما زال في الانتظار.", + "I arrive you": "وصلت إليك", + "I Arrive your site": "وصلت إلى موقعك", + "You are not in near to passenger location": + "أنت لست قريبًا من موقع الراكب", + "please go to picker location exactly": + "الرجاء الذهاب إلى موقع المنتقي بالضبط", + "You Can Cancel Trip And get Cost of Trip From": + "يمكنك إلغاء الرحلة والحصول على تكلفة الرحلة من", + "Are you sure to cancel?": "هل أنت متأكد من الإلغاء؟", + "Insert Emergincy Number": "إدخال رقم الطوارئ", + "Best choice for comfort car and flexible route and stops point": + "أفضل خيار لسيارة مريحة ومسار مرن ونقاط توقف", + "Insert": "إدراج", + "This is for scooter or a motorcycle.": + "هذا للدراجة البخارية أو الدراجة النارية.", + "This trip goes directly from your starting point to your destination for a fixed price. The driver must follow the planned route": + "تذهب هذه الرحلة مباشرة من نقطة البداية إلى وجهتك بسعر ثابت. يجب على السائق اتباع المسار المخطط.", + "You can decline a request without any cost": + "يمكنك رفض طلب بدون أي تكلفة", + "Perfect for adventure seekers who want to experience something new and exciting": + "مثالي لطالبي المغامرة الذين يريدون تجربة شيء جديد ومثير", + "My current location is:": "موقعي الحالي هو:", + "and I have a trip on": "ولدي رحلة على", + "App with Passenger": "التطبيق مع الراكب", + "You will be pay the cost to driver or we will get it from you on next trip": + "ستدفع التكلفة للسائق أو سنحصل عليها منك في الرحلة التالية", + "Trip has Steps": "الرحلة لديها خطوات", + "Distance from Passenger to destination is ": + "المسافة من الراكب إلى الوجهة هي ", + "price is": "السعر هو", + "This ride type does not allow changes to the destination or additional stops": + "هذا النوع من الرحلة لا يسمح بتغيير الوجهة أو إيقافات إضافية", + "This price may be changed": "قد يتغير هذا السعر", + "No SIM card, no problem! Call your driver directly through our app. We use advanced technology to ensure your privacy.": + "لا توجد بطاقة SIM، لا مشكلة! اتصل بسائقك مباشرة من خلال تطبيقنا. نستخدم تقنية متقدمة لضمان خصوصيتك.", + "This ride type allows changes, but the price may increase": + "هذا النوع من الرحلة يسمح بالتغييرات، ولكن قد يزيد السعر", + "Select one message": "اختر رسالة واحدة", + "I'm waiting for you": "أنا في انتظارك", + "We noticed the Tripz is exceeding 100 km/h. Please slow down for your safety. If you feel unsafe, you can share your trip details with a contact or call the police using the red SOS button.": + "لاحظنا أن Tripz يتجاوز 100 كم/ساعة. يرجى التباطؤ لسلامتك. إذا شعرت بعدم الأمان، يمكنك مشاركة تفاصيل رحلتك مع جهة اتصال أو الاتصال بالشرطة باستخدام زر SOS الأحمر.", + "Warning: Tripzing detected!": "تحذير: تم اكتشاف Tripzing!", + "Please help! Contact me as soon as possible.": + "من فضلك ساعد! اتصل بي في أقرب وقت ممكن.", + "Share Trip Details": "مشاركة تفاصيل الرحلة", + "Car Plate is ": "لوحة السيارة هي ", + "the 300 points equal 300 L.E for you \nSo go and gain your money": + "300 نقطة تساوي 300 جنيه لك\nلذا اذهب واكسب أموالك", + "the 300 points equal 300 L.E": "300 نقطة تساوي 300 جنيه", + "The payment was not approved. Please try again.": + "لم يتم الموافقة على الدفع. يرجى المحاولة مرة أخرى.", + "Payment Failed": "فشل الدفع", + "Error": "خطأ", + "This is a scheduled notification.": "هذا إشعار مجدول.", + "An error occurred during the payment process.": + "حدث خطأ أثناء عملية الدفع.", + "The payment was approved.": "تمت الموافقة على الدفع.", + "Payment Successful": "نجاح الدفع", + "No ride found yet": "لم يتم العثور على رحلة بعد", + "Accept Order": "قبول الطلب", + "Bottom Bar Example": "مثال الشريط السفلي", + "Driver phone": "هاتف السائق", + "Statistics": "الإحصائيات", + "Origin": "الأصل", + "Destination": "الوجهة", + "Driver Name": "اسم السائق", + "Driver Car Plate": "لوحة سيارة السائق", + "Available for rides": "متاح للرحلات", + "Scan Id": "مسح الهوية", + "Camera not initilaized yet": "لم يتم تهيئة الكاميرا بعد", + "Scan ID MklGoogle": "مسح هوية MklGoogle", + "Language": "اللغة", + "Jordan": "الأردن", + "USA": "الولايات المتحدة الأمريكية", + "Egypt": "مصر", + "Turkey": "تركيا", + "Saudi Arabia": "المملكة العربية السعودية", + "Qatar": "قطر", + "Bahrain": "البحرين", + "Kuwait": "الكويت", + "But you have a negative salary of": "لكن لديك راتب سلبي بقيمة", + "Promo Code": "رمز الترويج", + "Your trip distance is": "مسافة رحلتك هي", + "Enter promo code": "أدخل رمز الترويج", + "You have promo!": "لديك عرض ترويجي!", + "Cost Duration": "تكلفة المدة", + "Duration is": "المدة هي", + "Leave": "مغادرة", + "Join": "انضمام", + "Heading your way now. Please be ready.": + "في طريقي إليك الآن. يرجى الاستعداد.", + "Approaching your area. Should be there in 3 minutes.": + "أقترب من منطقتك. يجب أن أكون هناك في 3 دقائق.", + "There's heavy traffic here. Can you suggest an alternate pickup point?": + "هناك زحمة مرورية شديدة هنا. هل يمكنك اقتراح نقطة استلام بديلة؟", + "This ride is already taken by another driver.": + "هذه الرحلة قد تم أخذها من قبل سائق آخر.", + "You Should be select reason.": "يجب عليك اختيار السبب.", + " \$": " \$", + "Waiting for Driver ...": "في انتظار السائق ...", + "Latest Recent Trip": "آخر رحلة حديثة", + "from your list": "من قائمتك", + "Do you want to change Work location": "هل تريد تغيير موقع العمل؟", + "Do you want to change Home location": "هل تريد تغيير موقع المنزل؟", + "We Are Sorry That we dont have cars in your Location!": + "نحن آسفون لأنه لا توجد سيارات في موقعك!", + "Choose from Map": "اختر من الخريطة", + "Pick your ride location on the map - Tap to confirm": + "اختر موقع رحلتك على الخريطة - اضغط للتأكيد", + "Closest & Cheapest": "الأقرب والأرخص", + "Tripz is the ride-hailing app that is safe, reliable, and accessible.": + "Tripz هو تطبيق طلب الركوب الآمن والموثوق والمتاح.", + "With Tripz, you can get a ride to your destination in minutes.": + "مع Tripz، يمكنك الحصول على رحلة إلى وجهتك في دقائق.", + "Tripz is committed to safety, and all of our captains are carefully screened and background checked.": + "Tripz ملتزم بالسلامة، وجميع كابتناتنا يتم فحصهم بعناية والتحقق من خلفيتهم.", + "Pick from map": "اختر من الخريطة", + "No Car in your site. Sorry!": "لا توجد سيارة في موقعك. آسف!", + "Nearest Car for you about ": "أقرب سيارة لك حوالي ", + "From :": "من:", + "Get Details of Trip": "الحصول على تفاصيل الرحلة", + "If you want add stop click here": "إذا كنت تريد إضافة توقف اضغط هنا", + "Where you want go ": "إلى أين تريد الذهاب ", + "My Card": "بطاقتي", + "Start Record": "بدء التسجيل", + "History of Trip": "سجل الرحلة", + "Helping Center": "مركز المساعدة", + "Record saved": "تم حفظ التسجيل", + "Trips recorded": "رحلات مسجلة", + "Select Your Country": "اختر بلدك", + "To ensure you receive the most accurate information for your location, please select your country below. This will help tailor the app experience and content to your country.": + "لضمان حصولك على المعلومات الأكثر دقة لموقعك، يرجى اختيار بلدك أدناه. سيساعد هذا في تخصيص تجربة التطبيق والمحتوى لبلدك.", + "Are you sure to delete recorded files": + "هل أنت متأكد من حذف الملفات المسجلة؟", + "Select recorded trip": "اختر رحلة مسجلة", + "Card Number": "رقم البطاقة", + "Hi, Where to ": "مرحبًا، إلى أين ", + "Pick your destination from Map": "اختر وجهتك من الخريطة", + "Add Stops": "إضافة توقفات", + "Get Direction": "الحصول على الاتجاه", + "Add Location": "إضافة موقع", + "Switch Rider": "تبديل الراكب", + "You will arrive to your destination after timer end.": + "ستصل إلى وجهتك بعد انتهاء المؤقت.", + "You can cancel trip": "يمكنك إلغاء الرحلة", + "The driver waitting you in picked location .": + "السائق في انتظارك في الموقع المحدد.", + "10\$ and get 3% discount": "10\$ واحصل على خصم 3%", + "20\$ and get 4% discount": "20\$ واحصل على خصم 4%", + "40\$ and get 6% discount": "40\$ واحصل على خصم 6%", + "100\$ and get 9% discount": "100\$ واحصل على خصم 9%", + "Pay with Your": "الدفع باستخدام", + "Pay with Credit Card": "الدفع ببطاقة الائتمان", + "Payment History": "سجل الدفع", + "Show Promos to Charge": "عرض العروض الترويجية للشحن", + "Point": "نقطة", + "How many hours would you like to wait?": "كم ساعة تريد الانتظار؟", + "Driver Wallet": "محفظة السائق", + "Choose between those Type Cars": "اختر بين تلك الأنواع من السيارات", + "hour": "ساعة", + "Select Waiting Hours": "اختر ساعات الانتظار", + "Total Points is": "إجمالي النقاط هو", + "You will receive a code in SMS message": + "سوف تتلقى رمزًا في رسالة SMS", + "Done": "تم", + "Total Budget from trips is ": "إجمالي الميزانية من الرحلات هو ", + "Total Amount:": "المبلغ الإجمالي:", + "Total Budget from trips by\nCredit card is ": + "إجمالي الميزانية من الرحلات بواسطة\nبطاقة الائتمان هو ", + "This amount for all trip I get from Passengers": + "هذا المبلغ لجميع الرحلات التي أحصل عليها من الركاب", + "Pay from my budget": "الدفع من ميزانيتي", + "This amount for all trip I get from Passengers and Collected For me in": + "هذا المبلغ لجميع الرحلات التي أحصل عليها من الركاب والمجمعة لي في", + "You can buy points from your budget": + "يمكنك شراء النقاط من ميزانيتك", + "insert amount": "إدراج المبلغ", + "You can buy Points to let you online\nby this list below": + "يمكنك شراء النقاط للسماح لك بالاتصال\nمن خلال هذه القائمة أدناه", + "Create Wallet to receive your money": "إنشاء محفظة لاستلام أموالك", + "Enter your feedback here": "أدخل ملاحظاتك هنا", + "Please enter your feedback.": "الرجاء إدخال ملاحظاتك.", + "Feedback": "ملاحظات", + "Submit ": "إرسال ", + "Click here to Show it in Map": "انقر هنا لعرضه على الخريطة", + "Canceled": "تم الإلغاء", + "Type your Email": "اكتب بريدك الإلكتروني", + "No I want": "لا أريد", + "Email is": "البريد الإلكتروني هو", + "Phone Number is": "رقم الهاتف هو", + "Date of Birth is": "تاريخ الميلاد هو", + "Sex is ": "الجنس هو ", + "Car Details": "تفاصيل السيارة", + "VIN is": "VIN هو", + "Color is ": "اللون هو ", + "Make is ": "الصنع هو ", + "Model is": "الموديل هو", + "Year is": "السنة هي", + "Expiration Date ": "تاريخ الانتهاء ", + "Edit Your data": "تعديل بياناتك", + "write vin for your car": "اكتب VIN لسيارتك", + "VIN": "VIN", + "write Color for your car": "اكتب لون سيارتك", + "write Make for your car": "اكتب صنع سيارتك", + "write Model for your car": "اكتب موديل سيارتك", + "write Year for your car": "اكتب سنة سيارتك", + "write Expiration Date for your car": + "اكتب تاريخ انتهاء صلاحية سيارتك", + "Tariffs": "التعريفات", + "Minimum fare": "الحد الأدنى للأجرة", + "Maximum fare": "الحد الأقصى للأجرة", + "Flag-down fee": "رسوم العلم", + "Including Tax": "بما في ذلك الضريبة", + "BookingFee": "رسوم الحجز", + "Morning": "الصباح", + "from 07:30 till 10:30 (Thursday, Friday, Saturday, Monday)": + "من 07:30 حتى 10:30 (الخميس، الجمعة، السبت، الاثنين)", + "Evening": "المساء", + "from 12:00 till 15:00 (Thursday, Friday, Saturday, Monday)": + "من 12:00 حتى 15:00 (الخميس، الجمعة، السبت، الاثنين)", + "Night": "الليل", + "You have in account": "لديك في الحساب", + "Select Country": "اختر البلد", + "Ride Today : ": "الرحلة اليوم: ", + "After this period\nYou can't cancel!": + "بعد هذه الفترة\nلا يمكنك الإلغاء!", + "from 23:59 till 05:30": "من 23:59 حتى 05:30", + "Rate Driver": "تقييم السائق", + "Total Cost is ": "التكلفة الإجمالية هي ", + "Write note": "اكتب ملاحظة", + "Time to arrive": "وقت الوصول", + "Ride Summaries": "ملخصات الرحلات", + "Total Cost": "التكلفة الإجمالية", + "Average of Hours of": "متوسط ساعات", + " is ON for this month": "يعمل هذا الشهر", + "Days": "أيام", + "Total Hours on month": "إجمالي الساعات في الشهر", + "Counts of Hours on days": "عدد ساعات الأيام", + "OrderId": "معرف الطلب", + "created time": "وقت الإنشاء", + "Tripz Over": "انتهت Tripz", + "I will slow down": "سوف أبطئ", + "Map Passenger": "خريطة الراكب", + "Be Slowly": "كن بطيئًا", + "If you want to make Google Map App run directly when you apply order": + "إذا كنت تريد تشغيل تطبيق خرائط Google مباشرة عند تقديم الطلب", + "You can change the language of the app": "يمكنك تغيير لغة التطبيق", + "Your Budget less than needed": "ميزانيتك أقل من المطلوب", + "You can change the Country to get all features": + "يمكنك تغيير البلد للحصول على جميع الميزات", + "Change Country": "تغيير البلد" + }, "ar-gulf": { "Order": "طلب", diff --git a/lib/views/home/map_page_passenger.dart b/lib/views/home/map_page_passenger.dart index b9281c3..4860313 100644 --- a/lib/views/home/map_page_passenger.dart +++ b/lib/views/home/map_page_passenger.dart @@ -55,7 +55,7 @@ class MapPagePassenger extends StatelessWidget { // const HeaderDestination(), const BurcMoney(), const PromoCode(), - const ApplyOrderWidget(), + ApplyOrderWidget(), const MapMenuWidget(), // hexagonClipper(), const CancelRidePageShow(), diff --git a/lib/views/home/map_widget.dart/apply_order_widget.dart b/lib/views/home/map_widget.dart/apply_order_widget.dart index 1aca3ec..2c81ee1 100644 --- a/lib/views/home/map_widget.dart/apply_order_widget.dart +++ b/lib/views/home/map_widget.dart/apply_order_widget.dart @@ -13,8 +13,11 @@ import '../../../controller/functions/launch.dart'; import '../../widgets/my_textField.dart'; class ApplyOrderWidget extends StatelessWidget { - const ApplyOrderWidget({super.key}); - + ApplyOrderWidget({super.key}); + final firebaseMessagesController = + Get.isRegistered() + ? Get.find() + : Get.put(FirebaseMessagesController()); @override Widget build(BuildContext context) { Color _parseColor(String colorHex) { @@ -26,6 +29,8 @@ class ApplyOrderWidget extends StatelessWidget { } return GetBuilder(builder: (controller) { + Get.put( + FirebaseMessagesController()); // Ensure FirebaseMessagesController is initialized if (controller.statusRide == 'Apply' && !controller.isSearchingWindow) { return Positioned( bottom: 0, @@ -257,8 +262,7 @@ class ApplyOrderWidget extends StatelessWidget { padding: const EdgeInsets.only(bottom: 8.0), child: ElevatedButton( onPressed: () { - Get.find() - .sendNotificationToDriverMAP( + firebaseMessagesController.sendNotificationToDriverMAP( 'message From passenger', message.tr, controller.driverToken.toString(), @@ -291,8 +295,7 @@ class ApplyOrderWidget extends StatelessWidget { IconButton( onPressed: () { if (controller.messagesFormKey.currentState!.validate()) { - Get.find() - .sendNotificationToDriverMAP( + firebaseMessagesController.sendNotificationToDriverMAP( 'message From passenger', controller.messageToDriver.text, controller.driverToken, diff --git a/lib/views/home/map_widget.dart/left_main_menu_icons.dart b/lib/views/home/map_widget.dart/left_main_menu_icons.dart index d79efe4..83d238e 100644 --- a/lib/views/home/map_widget.dart/left_main_menu_icons.dart +++ b/lib/views/home/map_widget.dart/left_main_menu_icons.dart @@ -1,3 +1,5 @@ +import 'package:Tripz/controller/firebase/firbase_messge.dart'; +import 'package:Tripz/controller/functions/encrypt_decrypt.dart'; import 'package:Tripz/views/auth/sms_verfy_page.dart'; import 'package:flutter/services.dart'; import 'package:flutter/material.dart'; @@ -5,9 +7,13 @@ import 'package:flutter_font_icons/flutter_font_icons.dart'; import 'package:get/get.dart'; import 'package:google_maps_flutter/google_maps_flutter.dart'; import '../../../constant/colors.dart'; +import '../../../constant/table_names.dart'; +import '../../../controller/functions/secure_storage.dart'; import '../../../controller/functions/tts.dart'; import '../../../controller/home/map_passenger_controller.dart'; import '../../../controller/home/vip_waitting_page.dart'; +import '../../../main.dart'; +import '../../../print.dart'; GetBuilder leftMainMenuIcons() { Get.put(TextToSpeechController()); @@ -77,12 +83,60 @@ class TestPage extends StatelessWidget { @override Widget build(BuildContext context) { + final firebaseMessagesController = + Get.isRegistered() + ? Get.find() + : Get.put(FirebaseMessagesController()); return Scaffold( appBar: AppBar(), body: Center( child: TextButton( onPressed: () async { - Get.to(SmsSignupEgypt()); + firebaseMessagesController.sendNotificationToDriverMAP( + 'Order', + 'body', + 'c2tXiuBJQCSg4CU4IfqYOL:APA91bFA0f8R3QMnPQnPEEdNyjY-jcoKt4nLBHxcLLsmDSuJn5yd4jSvwq7qDIZpkkPkjfjdwdKsGL0-G0aHpPyjfiBvbCwFmlRMCUKftNMNT7MJx2Bp16Y', + [ + "32.1117875", + "36.0669891", + "32.1364001", + "36.0707479", + "24.84", + "7.56", + "436", + "4.38", + "109270481246447459618", + "113172279072358305645", + "hamza", + "e4QWqe7K607luM7qUMOPCL:APA91bFjX4XBM4I5COJl9fyxCTKJ1ZQpT3vzY7iEbOTuT4uo0-OSCAt5zgVhlhw4aC33s-VhyucDnP1tQGFd9svaazQ8A_SKgolPk3owzug8dCsiXoPeJ0k", + "+201010101010", + "6", + "43", + "true", + "c2tXiuBJQCSg4CU4IfqYOL:APA91bFA0f8R3QMnPQnPEEdNyjY-jcoKt4nLBHxcLLsmDSuJn5yd4jSvwq7qDIZpkkPkjfjdwdKsGL0-G0aHpPyjfiBvbCwFmlRMCUKftNMNT7MJx2Bp16Y", + "6", + "1188", + "false", + "109270481246447459618", + "436", + "startEnd", + "32.12404505187645", + "36.06566168367863", + "", + "", + "", + "", + "5.42", + "0", + "hamzaayedflutter@gmail.com", + "4368+PPP، السخنة، الأردن", + "43PC+C4G، السخنة، الأردن", + "Speed", + "8", + "5.00" + ], + 'ding.wav'); + // await AppInitializer().getAIKey(Pasenger.FCM_PRIVATE_KEY); }, child: Text( "Text Button", diff --git a/lib/views/home/map_widget.dart/searching_captain_window.dart b/lib/views/home/map_widget.dart/searching_captain_window.dart index 8197fbb..4755a09 100644 --- a/lib/views/home/map_widget.dart/searching_captain_window.dart +++ b/lib/views/home/map_widget.dart/searching_captain_window.dart @@ -17,7 +17,7 @@ class SearchingCaptainWindow extends StatelessWidget { builder: (mapPassengerController) { return mapPassengerController.isSearchingWindow ? Positioned( - bottom: 0, + bottom: 34, left: 0, right: 0, child: Container( @@ -78,7 +78,7 @@ class SearchingCaptainWindow extends StatelessWidget { const Icon(Icons.timer_outlined, size: 16, color: Colors.grey), const SizedBox(width: 4), - _buildTimer(mapPassengerController), + buildTimerForIncrease(mapPassengerController), ], ), // const SizedBox(height: 8), @@ -124,7 +124,7 @@ class SearchingCaptainWindow extends StatelessWidget { // }); // } -Widget _buildTimer(MapPassengerController mapPassengerController) { +Widget buildTimerForIncrease(MapPassengerController mapPassengerController) { // Start timer at 0 Timer? timer; diff --git a/lib/views/home/profile/passenger_profile_page.dart b/lib/views/home/profile/passenger_profile_page.dart index 93ace2e..45f3d7d 100644 --- a/lib/views/home/profile/passenger_profile_page.dart +++ b/lib/views/home/profile/passenger_profile_page.dart @@ -311,13 +311,14 @@ class CountryPicker extends StatelessWidget { final List countryOptions = [ 'Jordan', - 'USA', + 'Syria', 'Egypt', 'Turkey', 'Saudi Arabia', 'Qatar', 'Bahrain', 'Kuwait', + 'USA' ]; CountryPicker({Key? key}) : super(key: key);