25-7-1/1
This commit is contained in:
@@ -53,8 +53,8 @@ android {
|
|||||||
applicationId = "com.mobileapp.store.ride"
|
applicationId = "com.mobileapp.store.ride"
|
||||||
minSdk = 23
|
minSdk = 23
|
||||||
targetSdk = flutter.targetSdkVersion // Use flutter.targetSdkVersion
|
targetSdk = flutter.targetSdkVersion // Use flutter.targetSdkVersion
|
||||||
versionCode = 132
|
versionCode = 133
|
||||||
versionName = '2.0.132'
|
versionName = '2.0.133'
|
||||||
multiDexEnabled = true
|
multiDexEnabled = true
|
||||||
|
|
||||||
ndk {
|
ndk {
|
||||||
|
|||||||
@@ -41,11 +41,11 @@
|
|||||||
<key>CFBundlePackageType</key>
|
<key>CFBundlePackageType</key>
|
||||||
<string>APPL</string>
|
<string>APPL</string>
|
||||||
<key>CFBundleShortVersionString</key>
|
<key>CFBundleShortVersionString</key>
|
||||||
<string>105</string>
|
<string>106</string>
|
||||||
<key>CFBundleSignature</key>
|
<key>CFBundleSignature</key>
|
||||||
<string>????</string>
|
<string>????</string>
|
||||||
<key>CFBundleVersion</key>
|
<key>CFBundleVersion</key>
|
||||||
<string>5.0.995</string>
|
<string>5.0.996</string>
|
||||||
<key>NSHumanReadableCopyright</key>
|
<key>NSHumanReadableCopyright</key>
|
||||||
<string></string>
|
<string></string>
|
||||||
<key>FirebaseAppDelegateProxyEnabled</key>
|
<key>FirebaseAppDelegateProxyEnabled</key>
|
||||||
|
|||||||
@@ -184,9 +184,9 @@
|
|||||||
if([SecurityChecks checkProcessName]){
|
if([SecurityChecks checkProcessName]){
|
||||||
return YES;
|
return YES;
|
||||||
}
|
}
|
||||||
if ([SecurityChecks isDebuggerAttached]) {
|
// if ([SecurityChecks isDebuggerAttached]) {
|
||||||
return YES;
|
// return YES;
|
||||||
}
|
// }
|
||||||
// if ([SecurityChecks isFridaDetected]) {
|
// if ([SecurityChecks isFridaDetected]) {
|
||||||
// return YES;
|
// return YES;
|
||||||
// }
|
// }
|
||||||
|
|||||||
@@ -121,13 +121,13 @@ class FirebaseMessagesController extends GetxController {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
void fireBaseTitles(RemoteMessage message) {
|
Future<void> fireBaseTitles(RemoteMessage message) async {
|
||||||
if (message.notification!.title! == 'Order'.tr) {
|
if (message.notification!.title! == 'Order'.tr) {
|
||||||
if (Platform.isAndroid) {
|
if (Platform.isAndroid) {
|
||||||
notificationController.showNotification(
|
notificationController.showNotification(
|
||||||
'Order', message.notification!.body!, 'Order');
|
'Order', message.notification!.body!, 'Order');
|
||||||
}
|
}
|
||||||
} else if (message.notification!.title! == 'Accepted Ride'.tr) {
|
} else if (message.notification!.title! == 'Accepted Ride') {
|
||||||
if (Platform.isAndroid) {
|
if (Platform.isAndroid) {
|
||||||
notificationController.showNotification(
|
notificationController.showNotification(
|
||||||
'Accepted Ride'.tr, 'Driver Accepted the Ride for You'.tr, 'ding');
|
'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<dynamic>;
|
var myList = jsonDecode(passengerList) as List<dynamic>;
|
||||||
Log.print('myList: ${myList}');
|
Log.print('myList: ${myList}');
|
||||||
driverID = myList[0].toString();
|
final controller = Get.find<MapPassengerController>();
|
||||||
// Get.find<MapPassengerController>().driverToken = myList[2].toString();
|
controller.driverId = myList[0].toString();
|
||||||
// Log.print('driverToken: ${myList[2]}');
|
// assume rideId lives at index 2 in your list:
|
||||||
Get.find<MapPassengerController>().statusRide = 'Apply';
|
controller.rideId = myList[3].toString();
|
||||||
Get.find<MapPassengerController>().isSearchingWindow = false;
|
|
||||||
Get.find<MapPassengerController>().update();
|
controller
|
||||||
Get.find<MapPassengerController>().rideAppliedFromDriver(true);
|
..statusRide = 'Apply'
|
||||||
|
..isSearchingWindow = false
|
||||||
|
..update();
|
||||||
|
await controller.rideAppliedFromDriver(true);
|
||||||
|
|
||||||
// driverAppliedTripSnakBar();
|
// driverAppliedTripSnakBar();
|
||||||
} else if (message.notification!.title! == 'Promo'.tr) {
|
} else if (message.notification!.title! == 'Promo'.tr) {
|
||||||
@@ -557,7 +560,9 @@ class FirebaseMessagesController extends GetxController {
|
|||||||
// });
|
// });
|
||||||
// }
|
// }
|
||||||
// }
|
// }
|
||||||
|
|
||||||
late String serviceAccountKeyJson;
|
late String serviceAccountKeyJson;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<void> onInit() async {
|
Future<void> onInit() async {
|
||||||
super.onInit();
|
super.onInit();
|
||||||
@@ -565,7 +570,8 @@ class FirebaseMessagesController extends GetxController {
|
|||||||
var encryptedKey = await storage.read(key: 'FCM_PRIVATE_KEY');
|
var encryptedKey = await storage.read(key: 'FCM_PRIVATE_KEY');
|
||||||
// Log.print('encryptedKey: ${encryptedKey}');
|
// Log.print('encryptedKey: ${encryptedKey}');
|
||||||
if (encryptedKey != null) {
|
if (encryptedKey != null) {
|
||||||
serviceAccountKeyJson = (encryptedKey);
|
serviceAccountKeyJson =
|
||||||
|
EncryptionHelper.instance.decryptData(encryptedKey);
|
||||||
// Log.print('serviceAccountKeyJson: ${serviceAccountKeyJson}');
|
// Log.print('serviceAccountKeyJson: ${serviceAccountKeyJson}');
|
||||||
} else {
|
} else {
|
||||||
print('🔴 Error: FCM_PRIVATE_KEY not found in Secure Storage');
|
print('🔴 Error: FCM_PRIVATE_KEY not found in Secure Storage');
|
||||||
@@ -647,11 +653,12 @@ class FirebaseMessagesController extends GetxController {
|
|||||||
|
|
||||||
// Initialize AccessTokenManager
|
// Initialize AccessTokenManager
|
||||||
final accessTokenManager = AccessTokenManager(serviceAccountKeyJson);
|
final accessTokenManager = AccessTokenManager(serviceAccountKeyJson);
|
||||||
// Log.print('accessTokenManager: ${accessTokenManager}');
|
// Log.print(
|
||||||
|
// 'accessTokenManager: ${accessTokenManager.serviceAccountJsonKey}');
|
||||||
|
|
||||||
// Obtain an OAuth 2.0 access token
|
// Obtain an OAuth 2.0 access token
|
||||||
final accessToken = await accessTokenManager.getAccessToken();
|
final accessToken = await accessTokenManager.getAccessToken();
|
||||||
Log.print('accessToken: ${accessToken}');
|
// Log.print('accessToken: ${accessToken}');
|
||||||
|
|
||||||
// Send the notification
|
// Send the notification
|
||||||
final response = await http.post(
|
final response = await http.post(
|
||||||
|
|||||||
@@ -35,6 +35,7 @@ import '../../models/model/painter_copoun.dart';
|
|||||||
import '../../print.dart';
|
import '../../print.dart';
|
||||||
import '../../views/home/map_widget.dart/cancel_raide_page.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/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/home/map_widget.dart/select_driver_mishwari.dart';
|
||||||
import '../../views/widgets/elevated_btn.dart';
|
import '../../views/widgets/elevated_btn.dart';
|
||||||
import '../../views/widgets/error_snakbar.dart';
|
import '../../views/widgets/error_snakbar.dart';
|
||||||
@@ -79,7 +80,10 @@ class MapPassengerController extends GetxController {
|
|||||||
List wayPoint2 = [];
|
List wayPoint2 = [];
|
||||||
List wayPoint3 = [];
|
List wayPoint3 = [];
|
||||||
List wayPoint4 = [];
|
List wayPoint4 = [];
|
||||||
|
final firebaseMessagesController =
|
||||||
|
Get.isRegistered<FirebaseMessagesController>()
|
||||||
|
? Get.find<FirebaseMessagesController>()
|
||||||
|
: Get.put(FirebaseMessagesController());
|
||||||
List<List<dynamic>> placeListResponseAll = [];
|
List<List<dynamic>> placeListResponseAll = [];
|
||||||
|
|
||||||
List<Widget> placeListResponse = [
|
List<Widget> placeListResponse = [
|
||||||
@@ -367,6 +371,8 @@ class MapPassengerController extends GetxController {
|
|||||||
totalPassenger = double.parse(increasFeeFromPassenger.text);
|
totalPassenger = double.parse(increasFeeFromPassenger.text);
|
||||||
Get.back();
|
Get.back();
|
||||||
if (rideId != 'yet') {
|
if (rideId != 'yet') {
|
||||||
|
Log.print('rideId from increase: ${rideId}');
|
||||||
|
notifyAvailableDriversAgain();
|
||||||
await CRUD().post(link: AppLink.updateDriverOrder, payload: {
|
await CRUD().post(link: AppLink.updateDriverOrder, payload: {
|
||||||
"order_id": rideId.toString(), // Convert to String
|
"order_id": rideId.toString(), // Convert to String
|
||||||
"status": 'waiting'
|
"status": 'waiting'
|
||||||
@@ -943,7 +949,7 @@ class MapPassengerController extends GetxController {
|
|||||||
box.write(BoxName.passengerWalletTotal, '0');
|
box.write(BoxName.passengerWalletTotal, '0');
|
||||||
update();
|
update();
|
||||||
if (box.read(BoxName.parentTripSelected) == true) {
|
if (box.read(BoxName.parentTripSelected) == true) {
|
||||||
Get.find<FirebaseMessagesController>().sendNotificationToPassengerToken(
|
firebaseMessagesController.sendNotificationToPassengerToken(
|
||||||
"Finish Monitor".tr,
|
"Finish Monitor".tr,
|
||||||
"Finish Monitor".tr,
|
"Finish Monitor".tr,
|
||||||
box.read(BoxName.tokenParent),
|
box.read(BoxName.tokenParent),
|
||||||
@@ -1531,7 +1537,7 @@ class MapPassengerController extends GetxController {
|
|||||||
// passengerRate.toStringAsFixed(2),
|
// passengerRate.toStringAsFixed(2),
|
||||||
// ];
|
// ];
|
||||||
// Log.print('body: ${body}');
|
// Log.print('body: ${body}');
|
||||||
// Get.find<FirebaseMessagesController>().sendNotificationToDriverMAP(
|
// firebaseMessagesController.sendNotificationToDriverMAP(
|
||||||
// 'OrderSpeed',
|
// 'OrderSpeed',
|
||||||
// rideId,
|
// rideId,
|
||||||
// driverData['token'].toString(),
|
// driverData['token'].toString(),
|
||||||
@@ -1674,7 +1680,7 @@ class MapPassengerController extends GetxController {
|
|||||||
// ];
|
// ];
|
||||||
// // Log.print('body: ${body}');
|
// // Log.print('body: ${body}');
|
||||||
|
|
||||||
// Get.find<FirebaseMessagesController>().sendNotificationToDriverMAP(
|
// firebaseMessagesController.sendNotificationToDriverMAP(
|
||||||
// 'OrderSpeed',
|
// 'OrderSpeed',
|
||||||
// rideId.toString(),
|
// rideId.toString(),
|
||||||
// dataCarsLocationByPassenger['message'][i]['token'].toString(),
|
// dataCarsLocationByPassenger['message'][i]['token'].toString(),
|
||||||
@@ -1957,8 +1963,8 @@ class MapPassengerController extends GetxController {
|
|||||||
Future.delayed(const Duration(microseconds: 10));
|
Future.delayed(const Duration(microseconds: 10));
|
||||||
final body = constructNotificationBody(driverData);
|
final body = constructNotificationBody(driverData);
|
||||||
Log.print('body:ww ${body}');
|
Log.print('body:ww ${body}');
|
||||||
Get.find<FirebaseMessagesController>().sendNotificationToDriverMAP(
|
firebaseMessagesController.sendNotificationToDriverMAP(
|
||||||
'Order'.tr,
|
'Order', // without tr since background not valid
|
||||||
endNameAddress,
|
endNameAddress,
|
||||||
(driverData['token'].toString()),
|
(driverData['token'].toString()),
|
||||||
body,
|
body,
|
||||||
@@ -1970,6 +1976,53 @@ class MapPassengerController extends GetxController {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Future<void> 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<String> constructNotificationBody(var driverData) {
|
List<String> constructNotificationBody(var driverData) {
|
||||||
final paymentController = Get.find<PaymentController>();
|
final paymentController = Get.find<PaymentController>();
|
||||||
return [
|
return [
|
||||||
@@ -2019,7 +2072,7 @@ class MapPassengerController extends GetxController {
|
|||||||
StreamController<String>.broadcast();
|
StreamController<String>.broadcast();
|
||||||
Stream<String> get rideStatusStream => _rideStatusStreamController.stream;
|
Stream<String> get rideStatusStream => _rideStatusStreamController.stream;
|
||||||
|
|
||||||
int maxAttempts = 15;
|
int maxAttempts = 28;
|
||||||
|
|
||||||
Future<void> delayAndFetchRideStatusForAllDriverAvailable(
|
Future<void> delayAndFetchRideStatusForAllDriverAvailable(
|
||||||
String rideId) async {
|
String rideId) async {
|
||||||
@@ -2039,7 +2092,6 @@ class MapPassengerController extends GetxController {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
var res = await getRideStatus(rideId);
|
var res = await getRideStatus(rideId);
|
||||||
Log.print('res:2047 $res');
|
|
||||||
String rideStatusDelayed = res.toString();
|
String rideStatusDelayed = res.toString();
|
||||||
Log.print('rideStatusDelayed: $rideStatusDelayed');
|
Log.print('rideStatusDelayed: $rideStatusDelayed');
|
||||||
|
|
||||||
@@ -2061,15 +2113,33 @@ class MapPassengerController extends GetxController {
|
|||||||
timer.cancel();
|
timer.cancel();
|
||||||
// Close stream after applying
|
// Close stream after applying
|
||||||
} else if (attemptCounter >= maxAttempts ||
|
} else if (attemptCounter >= maxAttempts ||
|
||||||
rideStatusDelayed != 'Cancel') {
|
rideStatusDelayed == 'waiting') {
|
||||||
timer.cancel(); //todo
|
// timer.cancel(); //todo
|
||||||
// addRideToNotificationDriverString();
|
// addRideToNotificationDriverString();
|
||||||
// Show dialog to increase fee...
|
// Show dialog to increase fee...
|
||||||
MyDialog().getDialog(
|
|
||||||
'Are you want to wait drivers to accept your order'.tr, '', () {
|
// buildTimerForIncrease();
|
||||||
Get.back();
|
Get.defaultDialog(
|
||||||
addRideToNotificationDriverAvailable();
|
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();
|
update();
|
||||||
_rideStatusStreamController
|
_rideStatusStreamController
|
||||||
.close(); // Close stream after max attempts
|
.close(); // Close stream after max attempts
|
||||||
@@ -2083,7 +2153,7 @@ class MapPassengerController extends GetxController {
|
|||||||
rideAppliedFromDriver(bool isApplied) async {
|
rideAppliedFromDriver(bool isApplied) async {
|
||||||
await getUpdatedRideForDriverApply(rideId);
|
await getUpdatedRideForDriverApply(rideId);
|
||||||
NotificationController().showNotification(
|
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)}',
|
'$driverName ${'accepted your order at price'.tr} ${totalPassenger.toStringAsFixed(1)} ${'with type'.tr} ${box.read(BoxName.carType)}',
|
||||||
'ding');
|
'ding');
|
||||||
if (box.read(BoxName.carType) == 'Speed' ||
|
if (box.read(BoxName.carType) == 'Speed' ||
|
||||||
@@ -2202,7 +2272,7 @@ class MapPassengerController extends GetxController {
|
|||||||
}
|
}
|
||||||
// driversToken.remove(driverToken);
|
// driversToken.remove(driverToken);
|
||||||
// for (var i = 1; i < driversToken.length; i++) {
|
// for (var i = 1; i < driversToken.length; i++) {
|
||||||
Get.find<FirebaseMessagesController>().sendNotificationToDriverMAP(
|
firebaseMessagesController.sendNotificationToDriverMAP(
|
||||||
'Order Accepted'.tr,
|
'Order Accepted'.tr,
|
||||||
'$driverName${'Accepted your order'.tr}',
|
'$driverName${'Accepted your order'.tr}',
|
||||||
driverToken.toString(),
|
driverToken.toString(),
|
||||||
@@ -2920,7 +2990,7 @@ class MapPassengerController extends GetxController {
|
|||||||
var tokenParent = (res1['data'][0]['token']);
|
var tokenParent = (res1['data'][0]['token']);
|
||||||
Get.snackbar("The invitation was sent successfully".tr, '',
|
Get.snackbar("The invitation was sent successfully".tr, '',
|
||||||
backgroundColor: AppColor.greenColor);
|
backgroundColor: AppColor.greenColor);
|
||||||
Get.find<FirebaseMessagesController>().sendNotificationToPassengerToken(
|
firebaseMessagesController.sendNotificationToPassengerToken(
|
||||||
"Trip Monitoring".tr,
|
"Trip Monitoring".tr,
|
||||||
"Trip Monitoring".tr,
|
"Trip Monitoring".tr,
|
||||||
tokenParent,
|
tokenParent,
|
||||||
@@ -3157,7 +3227,7 @@ class MapPassengerController extends GetxController {
|
|||||||
changeCancelRidePageShow();
|
changeCancelRidePageShow();
|
||||||
if (rideId != 'yet') {
|
if (rideId != 'yet') {
|
||||||
Log.print('cancelRide: 1');
|
Log.print('cancelRide: 1');
|
||||||
await Get.find<FirebaseMessagesController>().sendNotificationToDriverMAP(
|
await firebaseMessagesController.sendNotificationToDriverMAP(
|
||||||
'Cancel Trip'.tr,
|
'Cancel Trip'.tr,
|
||||||
'Trip Cancelled'.tr,
|
'Trip Cancelled'.tr,
|
||||||
driverToken.toString(),
|
driverToken.toString(),
|
||||||
@@ -5164,33 +5234,32 @@ class MapPassengerController extends GetxController {
|
|||||||
timeSelected);
|
timeSelected);
|
||||||
// Optionally, set up local notification or send a push notification
|
// Optionally, set up local notification or send a push notification
|
||||||
|
|
||||||
await Get.find<FirebaseMessagesController>()
|
await firebaseMessagesController.sendNotificationToDriverMAP(
|
||||||
.sendNotificationToDriverMAP(
|
'OrderVIP',
|
||||||
'OrderVIP',
|
rideId.toString(),
|
||||||
rideId.toString(),
|
(driver['token'].toString()),
|
||||||
(driver['token'].toString()),
|
[
|
||||||
[
|
id,
|
||||||
id,
|
rideId,
|
||||||
rideId,
|
driver['id'],
|
||||||
driver['id'],
|
passengerLocation.latitude.toString(),
|
||||||
passengerLocation.latitude.toString(),
|
startNameAddress.toString(),
|
||||||
startNameAddress.toString(),
|
passengerLocation.longitude.toString(),
|
||||||
passengerLocation.longitude.toString(),
|
(box.read(BoxName.name).toString().split(' ')[0]).toString(),
|
||||||
(box.read(BoxName.name).toString().split(' ')[0]).toString(),
|
box.read(BoxName.passengerID).toString(),
|
||||||
box.read(BoxName.passengerID).toString(),
|
box.read(BoxName.phone).toString(),
|
||||||
box.read(BoxName.phone).toString(),
|
box.read(BoxName.email).toString(),
|
||||||
box.read(BoxName.email).toString(),
|
box.read(BoxName.passengerPhotoUrl).toString(),
|
||||||
box.read(BoxName.passengerPhotoUrl).toString(),
|
box.read(BoxName.tokenFCM).toString(),
|
||||||
box.read(BoxName.tokenFCM).toString(),
|
(driver['token'].toString()),
|
||||||
(driver['token'].toString()),
|
],
|
||||||
],
|
'order.wav');
|
||||||
'order.wav');
|
|
||||||
if (response['message'] == "Trip updated successfully") {
|
if (response['message'] == "Trip updated successfully") {
|
||||||
mySnackbarSuccess("Trip updated successfully".tr);
|
mySnackbarSuccess("Trip updated successfully".tr);
|
||||||
Log.print(
|
Log.print(
|
||||||
'previous_driver_token: ${response['previous_driver_token']}');
|
'previous_driver_token: ${response['previous_driver_token']}');
|
||||||
|
|
||||||
Get.find<FirebaseMessagesController>().sendNotificationToDriverMAP(
|
firebaseMessagesController.sendNotificationToDriverMAP(
|
||||||
'Order VIP Canceld'.tr,
|
'Order VIP Canceld'.tr,
|
||||||
'Passenger cancel order'.tr,
|
'Passenger cancel order'.tr,
|
||||||
response['previous_driver_token'].toString(),
|
response['previous_driver_token'].toString(),
|
||||||
@@ -5214,7 +5283,7 @@ class MapPassengerController extends GetxController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
cancelVip(String token, tripId) async {
|
cancelVip(String token, tripId) async {
|
||||||
// Get.find<FirebaseMessagesController>().sendNotificationToDriverMAP(
|
// firebaseMessagesController.sendNotificationToDriverMAP(
|
||||||
// 'Order VIP Canceld'.tr,
|
// 'Order VIP Canceld'.tr,
|
||||||
// 'Passenger cancel order'.tr,
|
// 'Passenger cancel order'.tr,
|
||||||
// token,
|
// token,
|
||||||
@@ -5230,7 +5299,7 @@ class MapPassengerController extends GetxController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
sendToDriverAgain(String token) {
|
sendToDriverAgain(String token) {
|
||||||
Get.find<FirebaseMessagesController>().sendNotificationToDriverMAP(
|
firebaseMessagesController.sendNotificationToDriverMAP(
|
||||||
'Order VIP Canceld'.tr,
|
'Order VIP Canceld'.tr,
|
||||||
'Passenger cancel order'.tr,
|
'Passenger cancel order'.tr,
|
||||||
token,
|
token,
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -55,7 +55,7 @@ class MapPagePassenger extends StatelessWidget {
|
|||||||
// const HeaderDestination(),
|
// const HeaderDestination(),
|
||||||
const BurcMoney(),
|
const BurcMoney(),
|
||||||
const PromoCode(),
|
const PromoCode(),
|
||||||
const ApplyOrderWidget(),
|
ApplyOrderWidget(),
|
||||||
const MapMenuWidget(),
|
const MapMenuWidget(),
|
||||||
// hexagonClipper(),
|
// hexagonClipper(),
|
||||||
const CancelRidePageShow(),
|
const CancelRidePageShow(),
|
||||||
|
|||||||
@@ -13,8 +13,11 @@ import '../../../controller/functions/launch.dart';
|
|||||||
import '../../widgets/my_textField.dart';
|
import '../../widgets/my_textField.dart';
|
||||||
|
|
||||||
class ApplyOrderWidget extends StatelessWidget {
|
class ApplyOrderWidget extends StatelessWidget {
|
||||||
const ApplyOrderWidget({super.key});
|
ApplyOrderWidget({super.key});
|
||||||
|
final firebaseMessagesController =
|
||||||
|
Get.isRegistered<FirebaseMessagesController>()
|
||||||
|
? Get.find<FirebaseMessagesController>()
|
||||||
|
: Get.put(FirebaseMessagesController());
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
Color _parseColor(String colorHex) {
|
Color _parseColor(String colorHex) {
|
||||||
@@ -26,6 +29,8 @@ class ApplyOrderWidget extends StatelessWidget {
|
|||||||
}
|
}
|
||||||
|
|
||||||
return GetBuilder<MapPassengerController>(builder: (controller) {
|
return GetBuilder<MapPassengerController>(builder: (controller) {
|
||||||
|
Get.put(
|
||||||
|
FirebaseMessagesController()); // Ensure FirebaseMessagesController is initialized
|
||||||
if (controller.statusRide == 'Apply' && !controller.isSearchingWindow) {
|
if (controller.statusRide == 'Apply' && !controller.isSearchingWindow) {
|
||||||
return Positioned(
|
return Positioned(
|
||||||
bottom: 0,
|
bottom: 0,
|
||||||
@@ -257,8 +262,7 @@ class ApplyOrderWidget extends StatelessWidget {
|
|||||||
padding: const EdgeInsets.only(bottom: 8.0),
|
padding: const EdgeInsets.only(bottom: 8.0),
|
||||||
child: ElevatedButton(
|
child: ElevatedButton(
|
||||||
onPressed: () {
|
onPressed: () {
|
||||||
Get.find<FirebaseMessagesController>()
|
firebaseMessagesController.sendNotificationToDriverMAP(
|
||||||
.sendNotificationToDriverMAP(
|
|
||||||
'message From passenger',
|
'message From passenger',
|
||||||
message.tr,
|
message.tr,
|
||||||
controller.driverToken.toString(),
|
controller.driverToken.toString(),
|
||||||
@@ -291,8 +295,7 @@ class ApplyOrderWidget extends StatelessWidget {
|
|||||||
IconButton(
|
IconButton(
|
||||||
onPressed: () {
|
onPressed: () {
|
||||||
if (controller.messagesFormKey.currentState!.validate()) {
|
if (controller.messagesFormKey.currentState!.validate()) {
|
||||||
Get.find<FirebaseMessagesController>()
|
firebaseMessagesController.sendNotificationToDriverMAP(
|
||||||
.sendNotificationToDriverMAP(
|
|
||||||
'message From passenger',
|
'message From passenger',
|
||||||
controller.messageToDriver.text,
|
controller.messageToDriver.text,
|
||||||
controller.driverToken,
|
controller.driverToken,
|
||||||
|
|||||||
@@ -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:Tripz/views/auth/sms_verfy_page.dart';
|
||||||
import 'package:flutter/services.dart';
|
import 'package:flutter/services.dart';
|
||||||
import 'package:flutter/material.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:get/get.dart';
|
||||||
import 'package:google_maps_flutter/google_maps_flutter.dart';
|
import 'package:google_maps_flutter/google_maps_flutter.dart';
|
||||||
import '../../../constant/colors.dart';
|
import '../../../constant/colors.dart';
|
||||||
|
import '../../../constant/table_names.dart';
|
||||||
|
import '../../../controller/functions/secure_storage.dart';
|
||||||
import '../../../controller/functions/tts.dart';
|
import '../../../controller/functions/tts.dart';
|
||||||
import '../../../controller/home/map_passenger_controller.dart';
|
import '../../../controller/home/map_passenger_controller.dart';
|
||||||
import '../../../controller/home/vip_waitting_page.dart';
|
import '../../../controller/home/vip_waitting_page.dart';
|
||||||
|
import '../../../main.dart';
|
||||||
|
import '../../../print.dart';
|
||||||
|
|
||||||
GetBuilder<MapPassengerController> leftMainMenuIcons() {
|
GetBuilder<MapPassengerController> leftMainMenuIcons() {
|
||||||
Get.put(TextToSpeechController());
|
Get.put(TextToSpeechController());
|
||||||
@@ -77,12 +83,60 @@ class TestPage extends StatelessWidget {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
|
final firebaseMessagesController =
|
||||||
|
Get.isRegistered<FirebaseMessagesController>()
|
||||||
|
? Get.find<FirebaseMessagesController>()
|
||||||
|
: Get.put(FirebaseMessagesController());
|
||||||
return Scaffold(
|
return Scaffold(
|
||||||
appBar: AppBar(),
|
appBar: AppBar(),
|
||||||
body: Center(
|
body: Center(
|
||||||
child: TextButton(
|
child: TextButton(
|
||||||
onPressed: () async {
|
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(
|
child: Text(
|
||||||
"Text Button",
|
"Text Button",
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ class SearchingCaptainWindow extends StatelessWidget {
|
|||||||
builder: (mapPassengerController) {
|
builder: (mapPassengerController) {
|
||||||
return mapPassengerController.isSearchingWindow
|
return mapPassengerController.isSearchingWindow
|
||||||
? Positioned(
|
? Positioned(
|
||||||
bottom: 0,
|
bottom: 34,
|
||||||
left: 0,
|
left: 0,
|
||||||
right: 0,
|
right: 0,
|
||||||
child: Container(
|
child: Container(
|
||||||
@@ -78,7 +78,7 @@ class SearchingCaptainWindow extends StatelessWidget {
|
|||||||
const Icon(Icons.timer_outlined,
|
const Icon(Icons.timer_outlined,
|
||||||
size: 16, color: Colors.grey),
|
size: 16, color: Colors.grey),
|
||||||
const SizedBox(width: 4),
|
const SizedBox(width: 4),
|
||||||
_buildTimer(mapPassengerController),
|
buildTimerForIncrease(mapPassengerController),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
// const SizedBox(height: 8),
|
// const SizedBox(height: 8),
|
||||||
@@ -124,7 +124,7 @@ class SearchingCaptainWindow extends StatelessWidget {
|
|||||||
// });
|
// });
|
||||||
// }
|
// }
|
||||||
|
|
||||||
Widget _buildTimer(MapPassengerController mapPassengerController) {
|
Widget buildTimerForIncrease(MapPassengerController mapPassengerController) {
|
||||||
// Start timer at 0
|
// Start timer at 0
|
||||||
Timer? timer;
|
Timer? timer;
|
||||||
|
|
||||||
|
|||||||
@@ -311,13 +311,14 @@ class CountryPicker extends StatelessWidget {
|
|||||||
|
|
||||||
final List<String> countryOptions = [
|
final List<String> countryOptions = [
|
||||||
'Jordan',
|
'Jordan',
|
||||||
'USA',
|
'Syria',
|
||||||
'Egypt',
|
'Egypt',
|
||||||
'Turkey',
|
'Turkey',
|
||||||
'Saudi Arabia',
|
'Saudi Arabia',
|
||||||
'Qatar',
|
'Qatar',
|
||||||
'Bahrain',
|
'Bahrain',
|
||||||
'Kuwait',
|
'Kuwait',
|
||||||
|
'USA'
|
||||||
];
|
];
|
||||||
|
|
||||||
CountryPicker({Key? key}) : super(key: key);
|
CountryPicker({Key? key}) : super(key: key);
|
||||||
|
|||||||
Reference in New Issue
Block a user