25-5-30/1

This commit is contained in:
Hamza-Ayed
2025-05-30 16:58:17 +03:00
parent bdf380b925
commit cf8966ea29
41 changed files with 538 additions and 904 deletions

View File

@@ -23,8 +23,8 @@ class AppLink {
// static final String server = endPoint;
// static final String server = Env.serverPHP;
static final String endPoint =
box.read(BoxName.serverChosen) ?? box.read(BoxName.basicLink);
static final String endPoint = 'https://api.tripz-egypt.com/tripz';
// box.read(BoxName.serverChosen) ?? box.read(BoxName.basicLink);
// 'https://server.sefer.click/sefer.click/sefer';
static final String server = endPoint;
static String tripzCairoServer = endPoint;
@@ -220,7 +220,7 @@ class AppLink {
static String addRateToPassenger = "$ride/rate/add.php";
static String savePlacesServer = "$ride/places/add.php";
static String getapiKey =
"https://server.sefer.click/sefer.click/sefer/ride/apiKey/get.php";
"https://api.tripz-egypt.com/tripz/ride/apiKey/get.php";
static String addRateToDriver = "$ride/rate/addRateToDriver.php";
static String getDriverRate = "$ride/rate/getDriverRate.php";
static String getPassengerRate = "$ride/rate/getPassengerRate.php";
@@ -244,7 +244,8 @@ class AppLink {
static String location = '${box.read(BoxName.serverChosen)}/ride/location';
static String getCarsLocationByPassenger = "$location/get.php";
static String getLocationAreaLinks = Env.getLocationAreaLinks;
static String getLocationAreaLinks =
'$ride/location/get_location_area_links.php';
static String addpassengerLocation = "$location/addpassengerLocation.php";
static String getCarsLocationByPassengerSpeed = "$location/getSpeed.php";
static String getCarsLocationByPassengerComfort = "$location/getComfort.php";
@@ -280,7 +281,7 @@ class AppLink {
static String loginJwtRider = "$server/login.php";
static String loginJwtWalletRider = "$seferPaymentServer/loginWallet.php";
static String loginFirstTime =
"https://server.sefer.click/sefer.click/sefer/loginFirstTime.php";
"https://api.tripz-egypt.com/tripz/loginFirstTime.php";
static String getTesterApp = "$auth/Tester/getTesterApp.php";
static String updateTesterApp = "$auth/Tester/updateTesterApp.php";
static String signUp = "$auth/signup.php";

View File

@@ -167,11 +167,9 @@ class GoogleSignInHelper {
// Store driver information
box.write(BoxName.passengerID, user.id);
box.write(BoxName.email, EncryptionHelper.instance.encryptData(user.email));
box.write(BoxName.name,
EncryptionHelper.instance.encryptData(user.displayName.toString()));
box.write(BoxName.passengerPhotoUrl,
EncryptionHelper.instance.encryptData(user.photoUrl.toString()));
box.write(BoxName.email, (user.email));
box.write(BoxName.name, (user.displayName.toString()));
box.write(BoxName.passengerPhotoUrl, (user.photoUrl.toString()));
// Perform any additional sign-up tasks or API calls here
// For example, you can send the user data to your server for registration

View File

@@ -196,10 +196,8 @@ class LoginController extends GetxController {
var res =
await CRUD().get(link: AppLink.loginFromGooglePassenger, payload: {
'email': email.toString().contains('@')
? EncryptionHelper.instance.encryptData(email)
: email,
'id': passengerID,
'email': email.toString(),
'id': passengerID.toString(),
"platform": Platform.isAndroid ? 'android' : 'ios',
"appName": AppInformation.appName,
});
@@ -229,59 +227,112 @@ class LoginController extends GetxController {
box.write(BoxName.firstTimeLoadKey, 'false');
d['inviteCode'] != null
? box.write(
BoxName.inviteCode,
EncryptionHelper.instance
.decryptData(d['inviteCode'].toString()) ??
'none')
BoxName.inviteCode, (d['inviteCode'].toString()) ?? 'none')
: null;
var token = await CRUD().get(link: AppLink.getTokens, payload: {
'passengerID': box.read(BoxName.passengerID).toString()
});
var fingerPrint = DeviceHelper.getDeviceFingerprint().toString();
var fingerPrint = await DeviceHelper.getDeviceFingerprint();
Log.print('fingerPrint 0: ${fingerPrint}');
await storage.write(key: BoxName.fingerPrint, value: fingerPrint);
if (token != 'failure') {
if ((jsonDecode(token)['data'][0]['token'].toString()) !=
box.read(BoxName.tokenFCM)) {
MyDialog().getDialog('change device'.tr, 'token change'.tr,
() async {
List<Future> updatetoken = [
CRUD().post(
link: "${AppLink.server}/ride/firebase/add.php",
payload: {
'token': box.read(BoxName.tokenFCM),
'passengerID': box.read(BoxName.passengerID).toString(),
'fingerPrint': (fingerPrint).toString()
}),
CRUD().post(
link:
"${AppLink.tripzAlexandriaServer}/ride/firebase/add.php",
payload: {
'token': box.read(BoxName.tokenFCM),
'passengerID': box.read(BoxName.passengerID).toString(),
'fingerPrint': (fingerPrint).toString()
}),
CRUD().post(
link: "${AppLink.tripzGizaServer}/ride/firebase/add.php",
payload: {
'token': box.read(BoxName.tokenFCM),
'passengerID': box.read(BoxName.passengerID).toString(),
'fingerPrint': (fingerPrint).toString()
}),
];
// cameras = await availableCameras();
await Future.wait(updatetoken);
Get.put(FirebaseMessagesController())
.sendNotificationToDriverMAP(
'token change'.tr,
'change device'.tr,
EncryptionHelper.instance.decryptData(
jsonDecode(token)['data'][0]['token'].toString()),
[],
'cancel.wav',
);
});
if (token != 'failure') {
if ((jsonDecode(token)['message']['token'].toString()) !=
box.read(BoxName.tokenFCM)) {
// MyDialog().getDialog('change device'.tr, 'token change'.tr,
// () async {
// List<Future> updatetoken = [
// CRUD().post(
// link: "${AppLink.server}/ride/firebase/add.php",
// payload: {
// 'token': box.read(BoxName.tokenFCM),
// 'passengerID': box.read(BoxName.passengerID).toString(),
// 'fingerPrint': (fingerPrint).toString()
// }),
// CRUD().post(
// link:
// "${AppLink.tripzAlexandriaServer}/ride/firebase/add.php",
// payload: {
// 'token': box.read(BoxName.tokenFCM),
// 'passengerID': box.read(BoxName.passengerID).toString(),
// 'fingerPrint': (fingerPrint).toString()
// }),
// CRUD().post(
// link: "${AppLink.tripzGizaServer}/ride/firebase/add.php",
// payload: {
// 'token': box.read(BoxName.tokenFCM),
// 'passengerID': box.read(BoxName.passengerID).toString(),
// 'fingerPrint': (fingerPrint).toString()
// }),
// ];
// // cameras = await availableCameras();
// await Future.wait(updatetoken);
// Get.put(FirebaseMessagesController())
// .sendNotificationToDriverMAP(
// 'token change'.tr,
// 'change device'.tr,
// (jsonDecode(token)['data'][0]['token'].toString()),
// [],
// 'cancel.wav',
// );
// });
await Get.defaultDialog(
title: 'Device Change Detected'.tr,
middleText:
'You can only use one device at a time. This device will now be set as your active device.'
.tr,
textConfirm: 'OK'.tr,
confirmTextColor: Colors.white,
onConfirm: () async {
Get.back(); // Close dialog
/// تحديث التوكين في السيرفرات
List<Future> updatetoken = [
CRUD().post(
link: "${AppLink.server}/ride/firebase/add.php",
payload: {
'token': box.read(BoxName.tokenFCM),
'passengerID':
box.read(BoxName.passengerID).toString(),
'fingerPrint': fingerPrint
}),
CRUD().post(
link:
"${AppLink.tripzAlexandriaServer}/ride/firebase/add.php",
payload: {
'token': box.read(BoxName.tokenFCM),
'passengerID':
box.read(BoxName.passengerID).toString(),
'fingerPrint': fingerPrint
}),
CRUD().post(
link:
"${AppLink.tripzGizaServer}/ride/firebase/add.php",
payload: {
'token': box.read(BoxName.tokenFCM),
'passengerID':
box.read(BoxName.passengerID).toString(),
'fingerPrint': fingerPrint
}),
];
await Future.wait(updatetoken);
/// إشعار للسائق بأنه تم تغيير الجهاز
await Get.put(FirebaseMessagesController())
.sendNotificationToDriverMAP(
'token change'.tr,
'change device'.tr,
jsonDecode(token)['message']['token'].toString(),
[],
'cancel.wav',
);
/// التوجه للصفحة الرئيسية
Get.offAll(() => const MapPagePassenger());
},
);
Future.delayed(const Duration(seconds: 1));
Get.defaultDialog(
@@ -305,8 +356,7 @@ class LoginController extends GetxController {
box.read(BoxName.isInstall).toString() != '1') {
await CRUD()
.post(link: AppLink.updatePassengersInvitation, payload: {
"inviteCode": EncryptionHelper.instance
.encryptData(box.read(BoxName.inviteCode).toString()),
"inviteCode": (box.read(BoxName.inviteCode).toString()),
"passengerID": box.read(BoxName.passengerID).toString(),
});
Get.defaultDialog(
@@ -318,7 +368,7 @@ class LoginController extends GetxController {
try {
CRUD().post(link: AppLink.addPassengersPromo, payload: {
"promoCode":
'S-${EncryptionHelper.instance.decryptData(box.read(BoxName.name)).toString().split(' ')[0]}',
'S-${(box.read(BoxName.name)).toString().split(' ')[0]}',
"amount": '25',
"passengerID": box.read(BoxName.passengerID).toString(),
"description": 'promo first'
@@ -354,11 +404,12 @@ class LoginController extends GetxController {
void login() async {
isloading = true;
update();
var res =
await CRUD().get(link: AppLink.loginFromGooglePassenger, payload: {
'email': EncryptionHelper.instance.encryptData(emailController.text),
'id': passwordController.text
});
var res = await CRUD().get(
link: AppLink.loginFromGooglePassenger,
payload: {
'email': (emailController.text),
'id': passwordController.text
});
isloading = false;
update();

View File

@@ -32,7 +32,7 @@ class RegisterController extends GetxController {
TextEditingController phoneController = TextEditingController();
TextEditingController passwordController = TextEditingController();
TextEditingController siteController = TextEditingController();
TextEditingController verfyCode = TextEditingController();
// TextEditingController verfyCode = TextEditingController();
TextEditingController verifyCode = TextEditingController();
int remainingTime = 300; // 5 minutes in seconds
bool isSent = false;
@@ -125,9 +125,6 @@ class RegisterController extends GetxController {
// Initialize SmsEgyptController
smsEgyptController = Get.put(SmsEgyptController());
// Generate a random OTP
int randomNumber = Random().nextInt(100000) + 1;
isLoading = true;
update();
@@ -143,8 +140,7 @@ class RegisterController extends GetxController {
var responseChecker = await CRUD().post(
link: AppLink.checkPhoneNumberISVerfiedPassenger,
payload: {
'phone_number':
EncryptionHelper.instance.encryptData(phoneNumber),
'phone_number': (phoneNumber),
'email': box.read(BoxName.email),
},
);
@@ -157,20 +153,16 @@ class RegisterController extends GetxController {
Get.snackbar('Phone number is verified before'.tr, '',
backgroundColor: AppColor.greenColor);
box.write(BoxName.isVerified, '1');
box.write(BoxName.phone,
EncryptionHelper.instance.encryptData(phoneNumber));
box.write(BoxName.phone, (phoneNumber));
Get.offAll(const MapPagePassenger());
} else {
await sendOtp(phoneNumber, randomNumber, isEgyptianNumber,
smsEgyptController);
await sendOtp(phoneNumber, isEgyptianNumber, smsEgyptController);
}
} else {
await sendOtp(phoneNumber, randomNumber, isEgyptianNumber,
smsEgyptController);
await sendOtp(phoneNumber, isEgyptianNumber, smsEgyptController);
}
} else if (phoneNumber.length > 9) {
sendOtp(
phoneNumber, randomNumber, isEgyptianNumber, smsEgyptController);
sendOtp(phoneNumber, isEgyptianNumber, smsEgyptController);
}
} else {
MyDialog().getDialog(
@@ -189,44 +181,38 @@ class RegisterController extends GetxController {
}
// Helper function to send OTP or WhatsApp message based on phone number location
Future<void> sendOtp(String phoneNumber, int otp, bool isEgyptian,
Future<void> sendOtp(String phoneNumber, bool isEgyptian,
SmsEgyptController controller) async {
// Trim any leading or trailing whitespace from the phone number
phoneNumber = phoneNumber.trim();
var dd = await CRUD().post(link: AppLink.sendVerifyOtpMessage, payload: {
'phone_number': EncryptionHelper.instance.encryptData(phoneNumber),
'token': EncryptionHelper.instance.encryptData(otp.toString()),
'phone_number': (phoneNumber),
});
Log.print('dd: ${dd}');
// Common Registration Logic (extracted for reuse)
Future<void> registerUser() async {
await CRUD().post(link: AppLink.updatePhoneInvalidSMSPassenger, payload: {
"phone_number": EncryptionHelper.instance
.encryptData(Get.find<RegisterController>().phoneController.text)
"phone_number": (Get.find<RegisterController>().phoneController.text)
});
box.write(BoxName.phone,
EncryptionHelper.instance.encryptData(phoneController.text));
box.write(BoxName.phone, (phoneController.text));
var nameParts = EncryptionHelper.instance
.decryptData(box.read(BoxName.name))
.toString()
.split(' ');
var nameParts = (box.read(BoxName.name)).toString().split(' ');
var firstName = nameParts.isNotEmpty ? nameParts[0] : 'unknown';
var lastName = nameParts.length > 1 ? nameParts[1] : 'unknown';
var payload = {
'id': box.read(BoxName.passengerID),
'phone': EncryptionHelper.instance.encryptData(phoneController.text),
'phone': (phoneController.text),
'email': box.read(BoxName.email),
'password': EncryptionHelper.instance.encryptData(
'unknown'), //Consider if you *really* want to store 'unknown' passwords
'gender': EncryptionHelper.instance.encryptData('unknown'),
'birthdate': EncryptionHelper.instance.encryptData('2002-01-01'),
'password':
('unknown'), //Consider if you *really* want to store 'unknown' passwords
'gender': ('unknown'),
'birthdate': ('2002-01-01'),
'site': box.read(BoxName.passengerPhotoUrl) ?? 'unknown',
'first_name': EncryptionHelper.instance.encryptData(firstName),
'last_name': EncryptionHelper.instance.encryptData(lastName),
'first_name': (firstName),
'last_name': (lastName),
};
var res1 = await CRUD().post(
@@ -253,8 +239,7 @@ class RegisterController extends GetxController {
box.write(BoxName.isVerified, '1');
box.write(
BoxName.isFirstTime, '0'); //Double-check the logic for isFirstTime
box.write(BoxName.phone,
EncryptionHelper.instance.encryptData(phoneController.text));
box.write(BoxName.phone, (phoneController.text));
Get.put(LoginController()).loginUsingCredentials(
box.read(BoxName.passengerID).toString(),
@@ -264,7 +249,8 @@ class RegisterController extends GetxController {
}
if (isEgyptian) {
await registerUser(); // Use the common registration logic
// verifySMSCode();
// await registerUser(); // Use the common registration logic
// await controller.sendSmsEgypt(phoneNumber, otp.toString()); // Optional: Send SMS if Egyptian
} else if (phoneController.text.toString().length >= 10) {
await registerUser(); // Use the common registration logic for non-Egyptian users as well.
@@ -283,24 +269,19 @@ class RegisterController extends GetxController {
try {
if (formKey3.currentState!.validate()) {
var res = await CRUD().post(link: AppLink.verifyOtpPassenger, payload: {
'phone_number': "201023248456",
'token': ("74787"),
'phone_number': phoneController.text,
'token': verifyCode.text,
});
if (res != 'failure') {
box.write(BoxName.phone,
EncryptionHelper.instance.encryptData(phoneController.text));
var nameParts = EncryptionHelper.instance
.decryptData(box.read(BoxName.name))
.toString()
.split(' ');
box.write(BoxName.phone, (phoneController.text));
var nameParts = (box.read(BoxName.name)).toString().split(' ');
var firstName = nameParts.isNotEmpty ? nameParts[0] : 'unknown';
var lastName = nameParts.length > 1 ? nameParts[1] : 'unknown';
var payload = {
'id': box.read(BoxName.passengerID),
'phone':
EncryptionHelper.instance.decryptData(phoneController.text),
'phone': (phoneController.text),
'email': box.read(BoxName.email),
'password': 'unknown',
'gender': 'unknown',
@@ -332,8 +313,7 @@ class RegisterController extends GetxController {
box.write(BoxName.isVerified, '1');
box.write(BoxName.isFirstTime, '0');
box.write(BoxName.phone,
EncryptionHelper.instance.decryptData(phoneController.text));
box.write(BoxName.phone, (phoneController.text));
Get.put(LoginController()).loginUsingCredentials(
box.read(BoxName.passengerID).toString(),
@@ -362,7 +342,7 @@ class RegisterController extends GetxController {
sendVerifications() async {
var res = await CRUD().post(link: AppLink.verifyEmail, payload: {
'email': emailController.text,
'token': verfyCode.text,
'token': verifyCode.text,
});
var dec = jsonDecode(res);
if (dec['status'] == 'success') {

View File

@@ -94,8 +94,8 @@ class FirebaseMessagesController extends GetxController {
Future getToken() async {
fcmToken.getToken().then((token) {
box.write(BoxName.tokenFCM,
EncryptionHelper.instance.encryptData(token.toString()));
Log.print('fcmToken: ${token}');
box.write(BoxName.tokenFCM, (token.toString()));
});
FirebaseMessaging.onMessage.listen((RemoteMessage message) {
@@ -565,8 +565,7 @@ class FirebaseMessagesController extends GetxController {
var encryptedKey = await storage.read(key: 'FCM_PRIVATE_KEY');
// Log.print('encryptedKey: ${encryptedKey}');
if (encryptedKey != null) {
serviceAccountKeyJson =
EncryptionHelper.instance.decryptData(encryptedKey);
serviceAccountKeyJson = (encryptedKey);
// Log.print('serviceAccountKeyJson: ${serviceAccountKeyJson}');
} else {
print('🔴 Error: FCM_PRIVATE_KEY not found in Secure Storage');
@@ -652,7 +651,7 @@ class FirebaseMessagesController extends GetxController {
// 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(

View File

@@ -229,15 +229,15 @@ class SecurityHelper {
await box.write('isTampered', isTampered); // Use await
await box.write('isJailBroken', isJailBroken); // Use await
// debugPrint("Security Check Results:");
// debugPrint("isNotTrust: $isNotTrust");
// debugPrint("isJailBroken: $isJailBroken");
// debugPrint("isRealDevice: $isRealDevice");
// debugPrint("isOnExternalStorage: $isOnExternalStorage");
// debugPrint("checkForIssues: $checkForIssues");
// debugPrint("isDevMode: $isDevMode");
// debugPrint("isTampered: $isTampered");
// debugPrint("Bundle ID: $bundleId"); // Print the bundle ID
debugPrint("Security Check Results:");
debugPrint("isNotTrust: $isNotTrust");
debugPrint("isJailBroken: $isJailBroken");
debugPrint("isRealDevice: $isRealDevice");
debugPrint("isOnExternalStorage: $isOnExternalStorage");
debugPrint("checkForIssues: $checkForIssues");
debugPrint("isDevMode: $isDevMode");
debugPrint("isTampered: $isTampered");
debugPrint("Bundle ID: $bundleId"); // Print the bundle ID
// Check for security risks and potentially show a warning
if (isJailBroken || isRealDevice == false || isTampered) {

View File

@@ -74,16 +74,11 @@ class AppInitializer {
await box.remove(links[1]['name']);
await box.remove(links[2]['name']);
await box.write(BoxName.locationName, links);
await box.write(BoxName.basicLink,
EncryptionHelper.instance.decryptData(links[0]['server_link']));
await box.write(links[2]['name'],
EncryptionHelper.instance.decryptData(links[2]['server_link']));
await box.write(links[1]['name'],
EncryptionHelper.instance.decryptData(links[3]['server_link']));
await box.write(links[3]['name'],
EncryptionHelper.instance.decryptData(links[1]['server_link']));
await box.write(BoxName.paymentLink,
EncryptionHelper.instance.decryptData(links[4]['server_link']));
await box.write(BoxName.basicLink, (links[0]['server_link']));
await box.write(links[2]['name'], (links[2]['server_link']));
await box.write(links[1]['name'], (links[3]['server_link']));
await box.write(links[3]['name'], (links[1]['server_link']));
await box.write(BoxName.paymentLink, (links[4]['server_link']));
}
} catch (e) {}
}

View File

@@ -544,12 +544,12 @@ class MapPassengerController extends GetxController {
void sendSMS(String to) async {
// Get the driver's phone number.
String driverPhone = EncryptionHelper.instance.decryptData(
dataCarsLocationByPassenger['message'][carsOrder]['phone'].toString());
String driverPhone =
(dataCarsLocationByPassenger['message'][carsOrder]['phone'].toString());
// Format the message.
String message =
'Hi! This is ${EncryptionHelper.instance.decryptData(box.read(BoxName.name).toString().split(' ')[0]).toString()}.\n I am using ${box.read(AppInformation.appName)} to ride with $passengerName as the driver. $passengerName \nis driving a $model\n with license plate $licensePlate.\n I am currently located at $passengerLocation.\n If you need to reach me, please contact the driver directly at\n\n $driverPhone.';
'Hi! This is ${(box.read(BoxName.name).toString().split(' ')[0]).toString()}.\n I am using ${box.read(AppInformation.appName)} to ride with $passengerName as the driver. $passengerName \nis driving a $model\n with license plate $licensePlate.\n I am currently located at $passengerLocation.\n If you need to reach me, please contact the driver directly at\n\n $driverPhone.';
// Launch the URL to send the SMS.
launchCommunication('sms', to, message);
@@ -561,7 +561,7 @@ class MapPassengerController extends GetxController {
// Format the message.
String message =
'${'${'Hi! This is'.tr} ${EncryptionHelper.instance.decryptData(box.read(BoxName.name).toString().split(' ')[0]).toString()}.\n${' I am using'.tr}'} ${AppInformation.appName}${' to ride with'.tr} $passengerName${' as the driver.'.tr} $passengerName \n${'is driving a '.tr}$model\n${' with license plate '.tr}$licensePlate.\n${' I am currently located at '.tr} https://www.google.com/maps/place/${passengerLocation.latitude},${passengerLocation.longitude}.\n${' If you need to reach me, please contact the driver directly at'.tr}\n\n $driverPhone.';
'${'${'Hi! This is'.tr} ${(box.read(BoxName.name).toString().split(' ')[0]).toString()}.\n${' I am using'.tr}'} ${AppInformation.appName}${' to ride with'.tr} $passengerName${' as the driver.'.tr} $passengerName \n${'is driving a '.tr}$model\n${' with license plate '.tr}$licensePlate.\n${' I am currently located at '.tr} https://www.google.com/maps/place/${passengerLocation.latitude},${passengerLocation.longitude}.\n${' If you need to reach me, please contact the driver directly at'.tr}\n\n $driverPhone.';
// Launch the URL to send the WhatsApp message.
launchCommunication('whatsapp', to, message);
@@ -1956,12 +1956,11 @@ class MapPassengerController extends GetxController {
(distanceToDriverInMeters * 1.25).toStringAsFixed(0);
Future.delayed(const Duration(microseconds: 10));
final body = constructNotificationBody(driverData);
// Log.print('body:ww ${body}');
Log.print('body:ww ${body}');
Get.find<FirebaseMessagesController>().sendNotificationToDriverMAP(
'Order'.tr,
endNameAddress,
EncryptionHelper.instance
.decryptData(driverData['token'].toString()),
(driverData['token'].toString()),
body,
'order.wav');
}
@@ -1982,16 +1981,13 @@ class MapPassengerController extends GetxController {
distance.toStringAsFixed(2),
driverData['driver_id'].toString(),
box.read(BoxName.passengerID).toString(),
EncryptionHelper.instance
.decryptData(box.read(BoxName.name).toString().split(' ')[0])
.toString(),
EncryptionHelper.instance
.decryptData(box.read(BoxName.tokenFCM).toString()),
EncryptionHelper.instance.decryptData(box.read(BoxName.phone).toString()),
(box.read(BoxName.name).toString().split(' ')[0]).toString(),
(box.read(BoxName.tokenFCM).toString()),
(box.read(BoxName.phone).toString()),
durationToPassenger.toStringAsFixed(0) ?? '120',
distanceByPassenger.toString() ?? '2000',
paymentController.isWalletChecked.toString(),
EncryptionHelper.instance.decryptData(driverData['token'].toString()),
(driverData['token'].toString()),
durationToPassenger.toString(),
rideId.toString(),
rideTimerBegin.toString(),
@@ -2023,9 +2019,10 @@ class MapPassengerController extends GetxController {
StreamController<String>.broadcast();
Stream<String> get rideStatusStream => _rideStatusStreamController.stream;
int maxAttempts = 15;
Future<void> delayAndFetchRideStatusForAllDriverAvailable(
String rideId) async {
const int maxAttempts = 15;
int attemptCounter = 0;
bool isApplied = false;
tick = 0;
@@ -2042,7 +2039,7 @@ class MapPassengerController extends GetxController {
try {
var res = await getRideStatus(rideId);
Log.print('res:2022 $res');
Log.print('res:2047 $res');
String rideStatusDelayed = res.toString();
Log.print('rideStatusDelayed: $rideStatusDelayed');
@@ -2068,11 +2065,11 @@ class MapPassengerController extends GetxController {
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();
// });
MyDialog().getDialog(
'Are you want to wait drivers to accept your order'.tr, '', () {
Get.back();
addRideToNotificationDriverAvailable();
});
update();
_rideStatusStreamController
.close(); // Close stream after max attempts
@@ -2172,7 +2169,7 @@ class MapPassengerController extends GetxController {
link: "${AppLink.endPoint}/ride/rides/getRideStatus.php",
payload: {'id': rideId});
print(response);
print('2140');
print('2176');
return jsonDecode(response)['data'];
}
@@ -2189,21 +2186,16 @@ class MapPassengerController extends GetxController {
var response = jsonDecode(res);
Log.print('getUpdatedRideForDriverApply: $response');
driverId = response['data']['driver_id'];
driverPhone =
EncryptionHelper.instance.decryptData(response['data']['phone']);
driverPhone = (response['data']['phone']);
driverCarMake = response['data']['make'];
model = response['data']['model'];
colorHex = response['data']['color_hex'];
carColor = response['data']['color'];
make = response['data']['make'];
licensePlate =
EncryptionHelper.instance.decryptData(response['data']['car_plate']);
passengerName = EncryptionHelper.instance
.decryptData(response['data']['passengerName']);
driverName = EncryptionHelper.instance
.decryptData(response['data']['driverName'].toString());
driverToken =
EncryptionHelper.instance.decryptData(response['data']['token']);
licensePlate = (response['data']['car_plate']);
passengerName = (response['data']['passengerName']);
driverName = (response['data']['driverName'].toString());
driverToken = (response['data']['token']);
// Log.print('driverToken updated: $driverToken');
carYear = response['data']['year'];
driverRate = response['data']['ratingDriver'].toString();
@@ -2456,10 +2448,9 @@ class MapPassengerController extends GetxController {
latitude <= maxLatitude &&
longitude >= minLongitude &&
longitude <= maxLongitude) {
box.write(BoxName.serverChosen,
EncryptionHelper.instance.decryptData(locationData['server_link']));
box.write(BoxName.serverChosen, (locationData['server_link']));
// Log.print(
// 'locationData----server_link: ${EncryptionHelper.instance.decryptData(locationData['server_link'])}');
// 'locationData----server_link: ${(locationData['server_link'])}');
return locationData['name'];
}
}
@@ -2614,7 +2605,7 @@ class MapPassengerController extends GetxController {
_getIconForCar(json),
);
driversToken.add(EncryptionHelper.instance.decryptData(json['token']));
driversToken.add((json['token']));
}
// Add fake car markers
@@ -2926,8 +2917,7 @@ class MapPassengerController extends GetxController {
Get.back();
}));
} else if (res1['status'] == 'success') {
var tokenParent =
EncryptionHelper.instance.decryptData(res1['data'][0]['token']);
var tokenParent = (res1['data'][0]['token']);
Get.snackbar("The invitation was sent successfully".tr, '',
backgroundColor: AppColor.greenColor);
Get.find<FirebaseMessagesController>().sendNotificationToPassengerToken(
@@ -5178,8 +5168,7 @@ class MapPassengerController extends GetxController {
.sendNotificationToDriverMAP(
'OrderVIP',
rideId.toString(),
EncryptionHelper.instance
.decryptData(driver['token'].toString()),
(driver['token'].toString()),
[
id,
rideId,
@@ -5187,17 +5176,13 @@ class MapPassengerController extends GetxController {
passengerLocation.latitude.toString(),
startNameAddress.toString(),
passengerLocation.longitude.toString(),
EncryptionHelper.instance
.decryptData(
box.read(BoxName.name).toString().split(' ')[0])
.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(),
EncryptionHelper.instance
.decryptData(driver['token'].toString()),
(driver['token'].toString()),
],
'order.wav');
if (response['message'] == "Trip updated successfully") {

View File

@@ -179,9 +179,9 @@ Download the Tripz app now and enjoy your ride!
int.parse(driverInvitationDataToPassengers[index]['countOfInvitDriver']
.toString()) <
2
? '${'When'.tr} ${EncryptionHelper.instance.decryptData(driverInvitationDataToPassengers[index]['passengerName'].toString())} ${"complete, you can claim your gift".tr} '
? '${'When'.tr} ${(driverInvitationDataToPassengers[index]['passengerName'].toString())} ${"complete, you can claim your gift".tr} '
: 'You deserve the gift'.tr,
'${EncryptionHelper.instance.decryptData(driverInvitationDataToPassengers[index]['passengerName'].toString())} ${driverInvitationDataToPassengers[index]['countOfInvitDriver'].toString()} / 2 ${'Trip'.tr}',
'${(driverInvitationDataToPassengers[index]['passengerName'].toString())} ${driverInvitationDataToPassengers[index]['countOfInvitDriver'].toString()} / 2 ${'Trip'.tr}',
() async {
if (int.parse(driverInvitationDataToPassengers[index]
['countOfInvitDriver']
@@ -270,8 +270,7 @@ Download the Tripz app now and enjoy your ride!
var response =
await CRUD().post(link: AppLink.addInvitationPassenger, payload: {
"driverId": box.read(BoxName.passengerID),
"inviterPassengerPhone":
EncryptionHelper.instance.encryptData('+2$phoneNumber')
"inviterPassengerPhone": ('+2$phoneNumber')
});
if (response != 'failure') {

View File

@@ -287,11 +287,7 @@ class VipWaittingPage extends StatelessWidget {
? MyElevatedButton(
title: "Click here to begin your trip\n\nGood luck, "
.tr +
EncryptionHelper.instance
.decryptData(box
.read(BoxName.name)
.toString()
.split(' ')[0])
(box.read(BoxName.name).toString().split(' ')[0])
.toString(),
kolor: AppColor.greenColor,
onPressed: () {

View File

@@ -263,10 +263,7 @@ class PaymentController extends GetxController {
merchantDisplayName: AppInformation.appName,
billingDetails: BillingDetails(
name: box.read(BoxName.nameDriver) == null
? EncryptionHelper.instance
.decryptData(
box.read(BoxName.name).toString().split(' ')[0])
.toString()
? (box.read(BoxName.name).toString().split(' ')[0]).toString()
: box.read(BoxName.nameDriver).toString(),
email: box.read(BoxName.emailDriver) == null
? box.read(BoxName.email).toString()
@@ -561,16 +558,11 @@ class PaymentController extends GetxController {
"amount": newAmount,
"email":
box.read(BoxName.email) ?? box.read(BoxName.emailDriver),
"first_name": EncryptionHelper.instance
.decryptData(
box.read(BoxName.name).toString().split(' ')[0])
"first_name": (box.read(BoxName.name).toString().split(' ')[0])
.toString(),
"last_name": EncryptionHelper.instance
.decryptData(
box.read(BoxName.name).toString().split(' ')[1])
"last_name": (box.read(BoxName.name).toString().split(' ')[1])
.toString(),
"phone_number": EncryptionHelper.instance
.decryptData(box.read(BoxName.phone)),
"phone_number": (box.read(BoxName.phone)),
});
// var d = jsonDecode(res);
Navigator.push(
@@ -611,13 +603,9 @@ class PaymentController extends GetxController {
payload: {
"amount": newAmount,
"email": box.read(BoxName.email),
"first_name": EncryptionHelper.instance
.decryptData(
box.read(BoxName.name).toString().split(' ')[0])
"first_name": (box.read(BoxName.name).toString().split(' ')[0])
.toString(),
"last_name": EncryptionHelper.instance
.decryptData(
box.read(BoxName.name).toString().split(' ')[1])
"last_name": (box.read(BoxName.name).toString().split(' ')[1])
.toString(),
"phone_number": (box.read(BoxName.phoneWallet)),
});

View File

@@ -135,15 +135,12 @@ class PaymobManager extends GetxController {
"amount_cents": amount,
"currency": currency,
"billing_data": {
"first_name": EncryptionHelper.instance
.decryptData(box.read(BoxName.name).toString().split(' ')[0])
.toString(),
"last_name": EncryptionHelper.instance
.decryptData(box.read(BoxName.name).toString().split(' ')[1])
.toString(),
"email": EncryptionHelper.instance.decryptData(box.read(BoxName.email)),
"phone_number":
EncryptionHelper.instance.decryptData(box.read(BoxName.phone)),
"first_name":
(box.read(BoxName.name).toString().split(' ')[0]).toString(),
"last_name":
(box.read(BoxName.name).toString().split(' ')[1]).toString(),
"email": (box.read(BoxName.email)),
"phone_number": (box.read(BoxName.phone)),
"apartment": "NA",
"floor": "NA",
"street": "NA",

View File

@@ -232,14 +232,10 @@ class PaymobBillingData {
Map<String, dynamic> toJson() {
return {
"email": box.read(BoxName.email) ?? box.read(BoxName.emailDriver),
"first_name": EncryptionHelper.instance
.decryptData(box.read(BoxName.name).toString().split(' ')[0])
.toString(),
"last_name": EncryptionHelper.instance
.decryptData(box.read(BoxName.name).toString().split(' ')[1])
.toString(),
"phone_number":
EncryptionHelper.instance.decryptData(box.read(BoxName.phone)),
"first_name":
(box.read(BoxName.name).toString().split(' ')[0]).toString(),
"last_name": (box.read(BoxName.name).toString().split(' ')[1]).toString(),
"phone_number": (box.read(BoxName.phone)),
"apartment": apartment ?? "NA",
"floor": floor ?? "NA",
"building": building ?? "NA",
@@ -373,8 +369,7 @@ class _PaymentScreenState extends State<PaymentScreen> {
// ✅ استدعاء الويب هوك بعد انتهاء الدفع
Future<void> _fetchPaymentStatus() async {
final String userId = EncryptionHelper.instance
.decryptData(box.read(BoxName.phoneWallet)); // ضع user_id الحقيقي
final String userId = (box.read(BoxName.phoneWallet)); // ضع user_id الحقيقي
final String apiUrl = AppLink.paymetVerifyPassenger;
try {

View File

@@ -267,14 +267,12 @@ class PaymobBillingDataWallet {
Map<String, dynamic> toJson() {
return {
"email": EncryptionHelper.instance.decryptData(box.read(BoxName.email)),
"first_name": EncryptionHelper.instance
.decryptData(box.read(BoxName.name).toString().split(' ')[0])
.toString(),
"last_name": EncryptionHelper.instance
.decryptData(box.read(BoxName.name).toString().split(' ')[1])
.toString() ??
'tripz',
"email": (box.read(BoxName.email)),
"first_name":
(box.read(BoxName.name).toString().split(' ')[0]).toString(),
"last_name":
(box.read(BoxName.name).toString().split(' ')[1]).toString() ??
'tripz',
"phone_number": (box.read(BoxName.phoneWallet)),
"apartment": apartment ?? "NA",
"floor": floor ?? "NA",

View File

@@ -1,7 +1,6 @@
import 'dart:convert';
import 'package:Tripz/constant/colors.dart';
import 'package:Tripz/controller/functions/encrypt_decrypt.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
@@ -9,9 +8,6 @@ import 'package:Tripz/constant/box_name.dart';
import 'package:Tripz/constant/links.dart';
import 'package:Tripz/controller/functions/crud.dart';
import 'package:Tripz/main.dart';
import 'package:Tripz/views/widgets/my_textField.dart';
import '../../views/widgets/elevated_btn.dart';
class ProfileController extends GetxController {
bool isloading = false;
@@ -74,14 +70,10 @@ class ProfileController extends GetxController {
Get.back();
await updateColumn({
'id': box.read(BoxName.passengerID),
columnName:
EncryptionHelper.instance.encryptData(txtController.text),
columnName: (txtController.text),
});
if (columnName == 'first_name') {
box.write(
BoxName.name,
EncryptionHelper.instance
.encryptData(txtController.text));
box.write(BoxName.name, (txtController.text));
}
txtController.clear();

View File

@@ -90,10 +90,7 @@ class LoginPage extends StatelessWidget {
User? user = await authController.signInWithApple();
if (user != null) {
box.write(BoxName.passengerID, user.uid);
box.write(
BoxName.email,
EncryptionHelper.instance
.encryptData(user.email.toString()));
box.write(BoxName.email, (user.email.toString()));
await controller.loginUsingCredentials(
box.read(BoxName.passengerID).toString(),
box.read(BoxName.email).toString(),

View File

@@ -35,7 +35,7 @@ class VerifyEmailPage extends StatelessWidget {
SizedBox(
width: 100,
child: TextField(
controller: controller.verfyCode,
controller: controller.verifyCode,
decoration: InputDecoration(
labelStyle: AppStyle.title,
border: const OutlineInputBorder(),

View File

@@ -1,3 +1,4 @@
import 'package:Tripz/views/auth/sms_verfy_page.dart';
import 'package:flutter/services.dart';
import 'package:flutter/material.dart';
import 'package:flutter_font_icons/flutter_font_icons.dart';
@@ -55,14 +56,14 @@ GetBuilder<MapPassengerController> leftMainMenuIcons() {
tooltip: 'VIP Waiting Page', // More descriptive tooltip
),
// const SizedBox(width: 8),
_buildIconButtonWithAnimation(
controller: controller,
icon: Octicons.screen_full,
onPressed: () async {
Get.to(() => TestPage());
},
tooltip: 'Recent Locations', // More descriptive tooltip
),
// _buildIconButtonWithAnimation(
// controller: controller,
// icon: Octicons.screen_full,
// onPressed: () async {
// Get.to(() => TestPage());
// },
// tooltip: 'Recent Locations', // More descriptive tooltip
// ),
],
),
),
@@ -80,7 +81,9 @@ class TestPage extends StatelessWidget {
appBar: AppBar(),
body: Center(
child: TextButton(
onPressed: () async {},
onPressed: () async {
Get.to(SmsSignupEgypt());
},
child: Text(
"Text Button",
),

View File

@@ -459,7 +459,7 @@ class MainBottomMenuMap extends StatelessWidget {
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
'${'Where to'.tr} ${EncryptionHelper.instance.decryptData(box.read(BoxName.name).toString().split(' ')[0])} ',
'${'Where to'.tr} ${(box.read(BoxName.name).toString().split(' ')[0])} ',
style: AppStyle.subtitle),
// if (controller.noCarString)
// Text('Nearest Car: ~'.tr,

View File

@@ -72,7 +72,7 @@ class NewMainBottomSheet extends StatelessWidget {
children: [
const Icon(Icons.search),
Text(
"${"Where you want go ".tr}${EncryptionHelper.instance.decryptData(box.read(BoxName.name).toString().split(' ')[0]).toString()} ?",
"${"Where you want go ".tr}${(box.read(BoxName.name).toString().split(' ')[0]).toString()} ?",
),
],
),

View File

@@ -222,9 +222,7 @@ class CardTripzWallet extends StatelessWidget {
Align(
alignment: Alignment.bottomRight,
child: Text(
EncryptionHelper.instance
.decryptData(
box.read(BoxName.name).toString().split(' ')[0])
(box.read(BoxName.name).toString().split(' ')[0])
.toString(),
style: AppStyle.title.copyWith(
color: CupertinoColors.secondaryLabel,

View File

@@ -54,7 +54,7 @@ class PassengerProfilePage extends StatelessWidget {
),
trailing: const Icon(Icons.arrow_forward_ios),
subtitle: Text(
'${EncryptionHelper.instance.decryptData(controller.prfoileData['first_name'])} ${EncryptionHelper.instance.decryptData(controller.prfoileData['last_name'])}'),
'${(controller.prfoileData['first_name'])} ${(controller.prfoileData['last_name'])}'),
onTap: () {
controller.updatField(
'first_name', TextInputType.name);
@@ -70,9 +70,8 @@ class PassengerProfilePage extends StatelessWidget {
width: 35,
),
trailing: const Icon(Icons.arrow_forward_ios),
subtitle: Text(EncryptionHelper.instance
.decryptData(controller.prfoileData['gender']
.toString())),
subtitle: Text((controller.prfoileData['gender']
.toString())),
onTap: () {
Get.defaultDialog(
title: 'Update Gender'.tr,
@@ -85,10 +84,7 @@ class PassengerProfilePage extends StatelessWidget {
controller.updateColumn({
'id': controller.prfoileData['id']
.toString(),
'gender': EncryptionHelper
.instance
.encryptData(
controller.gender),
'gender': (controller.gender),
});
Get.back();
},
@@ -183,10 +179,9 @@ class PassengerProfilePage extends StatelessWidget {
size: 35,
),
trailing: const Icon(Icons.arrow_forward_ios),
subtitle: Text(EncryptionHelper.instance
.decryptData(
controller.prfoileData['sosPhone'])
.toString()),
subtitle: Text(
(controller.prfoileData['sosPhone'])
.toString()),
onTap: () async {
await controller.updatField(
'sosPhone', TextInputType.phone);