Update: 2026-06-25 02:28:33
This commit is contained in:
@@ -29,7 +29,7 @@ class BlinkingController extends GetxController {
|
||||
},
|
||||
));
|
||||
}
|
||||
var decode = jsonDecode(value);
|
||||
var decode = value;
|
||||
|
||||
// if (decode["status"] == "success") {
|
||||
// var firstElement = decode["message"][0];
|
||||
|
||||
@@ -303,21 +303,7 @@ class LocationSearchController extends GetxController {
|
||||
rideLifecycle.resetNoRideSearch();
|
||||
}
|
||||
|
||||
final bool isLoggedIn = box.read(BoxName.isVerified) == '1' &&
|
||||
box.read(BoxName.passengerID) != null;
|
||||
|
||||
if (isLoggedIn) {
|
||||
try {
|
||||
getReverseGeocoding(passengerLocation).then((address) {
|
||||
currentLocationString = address;
|
||||
update();
|
||||
});
|
||||
} catch (e) {
|
||||
Log.print('Error resolving current location: $e');
|
||||
}
|
||||
} else {
|
||||
Log.print('LocationSearchController: Skipping reverse geocoding call, user not logged in.');
|
||||
}
|
||||
Log.print('LocationSearchController: Reverse geocoding deferred — will run when map is idle.');
|
||||
|
||||
OfflineMapService.instance
|
||||
.downloadRegion(passengerLocation, radiusKm: 10.0);
|
||||
@@ -493,10 +479,22 @@ class LocationSearchController extends GetxController {
|
||||
}
|
||||
}
|
||||
|
||||
bool _pendingGeocode = true;
|
||||
|
||||
void updateCurrentLocationFromCamera(LatLng target) {
|
||||
Log.print('📍 updateCurrentLocationFromCamera: $target');
|
||||
newMyLocation = target;
|
||||
|
||||
if (_pendingGeocode) {
|
||||
_pendingGeocode = false;
|
||||
if (box.read(BoxName.isVerified) == '1') {
|
||||
getReverseGeocoding(target).then((address) {
|
||||
currentLocationString = address;
|
||||
update();
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
if (startLocationFromMap == true) {
|
||||
Log.print('📍 Updating startLocationFromMap to $target');
|
||||
newStartPointLocation = target;
|
||||
@@ -865,12 +863,7 @@ class LocationSearchController extends GetxController {
|
||||
mapEngine.heightBottomSheetShown = 250;
|
||||
update();
|
||||
|
||||
Get.snackbar(
|
||||
'Location Received'.tr,
|
||||
'Route and prices have been calculated successfully!'.tr,
|
||||
backgroundColor: AppColor.greenColor,
|
||||
colorText: Colors.white,
|
||||
);
|
||||
mySnackbarInfo('Route and prices have been calculated successfully!'.tr);
|
||||
}
|
||||
} else {
|
||||
Log.print('⚠️ Could not extract valid coordinates from link: $link');
|
||||
|
||||
@@ -49,7 +49,7 @@ class NearbyDriversController extends GetxController {
|
||||
},
|
||||
);
|
||||
|
||||
if (res == 'failure') {
|
||||
if (res == 'failure' || res is! Map) {
|
||||
noCarString = true;
|
||||
dataCarsLocationByPassenger = 'failure';
|
||||
update();
|
||||
@@ -57,7 +57,7 @@ class NearbyDriversController extends GetxController {
|
||||
}
|
||||
|
||||
noCarString = false;
|
||||
var responseData = jsonDecode(res);
|
||||
var responseData = res;
|
||||
dataCarsLocationByPassenger = responseData;
|
||||
|
||||
List driversList = [];
|
||||
|
||||
@@ -1253,15 +1253,14 @@ class RideLifecycleController extends GetxController {
|
||||
'data': {'status': 'NoRide', 'needsReview': false}
|
||||
};
|
||||
isStartAppHasRide = false;
|
||||
} else {
|
||||
var decoded = jsonDecode(res);
|
||||
if (decoded['status'] == 'failure') {
|
||||
} else if (res is Map) {
|
||||
if (res['status'] == 'failure') {
|
||||
rideStatusFromStartApp = {
|
||||
'data': {'status': 'NoRide', 'needsReview': false}
|
||||
};
|
||||
isStartAppHasRide = false;
|
||||
} else {
|
||||
rideStatusFromStartApp = decoded;
|
||||
rideStatusFromStartApp = res;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1654,13 +1653,12 @@ class RideLifecycleController extends GetxController {
|
||||
payload: {'passengerID': box.read(BoxName.passengerID).toString()});
|
||||
|
||||
if (res != 'failure') {
|
||||
var response = jsonDecode(res);
|
||||
Log.print('getUpdatedRideForDriverApply Response: $response');
|
||||
Log.print('getUpdatedRideForDriverApply Response: $res');
|
||||
|
||||
if (response['status'] == 'success' &&
|
||||
response['data'] != null &&
|
||||
response['data'] is Map) {
|
||||
var data = response['data'];
|
||||
if (res['status'] == 'success' &&
|
||||
res['data'] != null &&
|
||||
res['data'] is Map) {
|
||||
var data = res['data'];
|
||||
|
||||
driverId = data['driver_id']?.toString() ?? '';
|
||||
driverPhone = data['phone']?.toString() ?? '';
|
||||
@@ -1814,10 +1812,9 @@ class RideLifecycleController extends GetxController {
|
||||
'country': box.read(BoxName.countryCode) ?? '',
|
||||
});
|
||||
|
||||
if (res != 'failure') {
|
||||
var response = jsonDecode(res);
|
||||
if (response['status'] == 'success') {
|
||||
var data = response['data'];
|
||||
if (res is Map) {
|
||||
if (res['status'] == 'success') {
|
||||
var data = res['data'];
|
||||
totalPassengerSpeed = data['totalPassengerSpeed']?.toString() ?? '0';
|
||||
totalPassengerBalash =
|
||||
data['totalPassengerBalash']?.toString() ?? '0';
|
||||
@@ -1847,7 +1844,7 @@ class RideLifecycleController extends GetxController {
|
||||
} else {
|
||||
MyDialog().getDialog(
|
||||
'Promo Error'.tr,
|
||||
response['message']?.toString() ?? 'Invalid Promo'.tr,
|
||||
res['message']?.toString() ?? 'Invalid Promo'.tr,
|
||||
() => Get.back());
|
||||
return;
|
||||
}
|
||||
@@ -1855,8 +1852,7 @@ class RideLifecycleController extends GetxController {
|
||||
Get.back();
|
||||
await Future.delayed(const Duration(milliseconds: 120));
|
||||
} catch (e) {
|
||||
Get.snackbar('Error'.tr, e.toString(),
|
||||
backgroundColor: AppColor.redColor);
|
||||
mySnackeBarError(e.toString());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1891,10 +1887,9 @@ class RideLifecycleController extends GetxController {
|
||||
'country': box.read(BoxName.countryCode) ?? '',
|
||||
});
|
||||
|
||||
if (res != 'failure') {
|
||||
var response = jsonDecode(res);
|
||||
if (response['status'] == 'success') {
|
||||
var data = response['data'];
|
||||
if (res is Map) {
|
||||
if (res['status'] == 'success') {
|
||||
var data = res['data'];
|
||||
totalPassengerSpeed = data['totalPassengerSpeed']?.toString() ?? '0';
|
||||
totalPassengerBalash =
|
||||
data['totalPassengerBalash']?.toString() ?? '0';
|
||||
@@ -1914,7 +1909,7 @@ class RideLifecycleController extends GetxController {
|
||||
data['totalPassengerRayehGaiBalash']?.toString() ?? '0';
|
||||
|
||||
// Save price_token from server response
|
||||
priceToken = response['price_token']?.toString() ?? '';
|
||||
priceToken = res['price_token']?.toString() ?? '';
|
||||
|
||||
totalPassenger = totalPassengerSpeed;
|
||||
totalCostPassenger = totalPassenger;
|
||||
@@ -2194,12 +2189,10 @@ class RideLifecycleController extends GetxController {
|
||||
link: AppLink.getDriverCarsLocationToPassengerAfterApplied,
|
||||
payload: {'driver_id': driverId});
|
||||
|
||||
if (res != 'failure') {
|
||||
var datadriverLocation = jsonDecode(res);
|
||||
|
||||
if (datadriverLocation['message'] != null &&
|
||||
datadriverLocation['message'].isNotEmpty) {
|
||||
var _data = datadriverLocation['message'][0];
|
||||
if (res != 'failure' && res is Map) {
|
||||
if (res['message'] != null &&
|
||||
(res['message'] as List).isNotEmpty) {
|
||||
var _data = (res['message'] as List)[0];
|
||||
|
||||
LatLng newDriverPos = LatLng(
|
||||
double.parse(_data['latitude'].toString()),
|
||||
@@ -2233,7 +2226,7 @@ class RideLifecycleController extends GetxController {
|
||||
}
|
||||
mapEngine.clearMarkersExceptStartEndAndDriver();
|
||||
reloadMarkerDriverCarsLocationToPassengerAfterApplied(
|
||||
datadriverLocation);
|
||||
res);
|
||||
}
|
||||
}
|
||||
update();
|
||||
@@ -2641,8 +2634,7 @@ class RideLifecycleController extends GetxController {
|
||||
throw Exception('Failed to save trip');
|
||||
}
|
||||
} catch (e) {
|
||||
Get.snackbar('Error'.tr, 'Failed to book trip: $e'.tr,
|
||||
backgroundColor: AppColor.redColor);
|
||||
mySnackeBarError('Failed to book trip: $e'.tr);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3639,21 +3631,14 @@ class RideLifecycleController extends GetxController {
|
||||
|
||||
Future<void> cancelRide() async {
|
||||
if (selectedReasonIndex == -1) {
|
||||
Get.snackbar(
|
||||
'Attention'.tr,
|
||||
'Please select a reason first'.tr,
|
||||
snackPosition: SnackPosition.BOTTOM,
|
||||
backgroundColor: Colors.orange,
|
||||
colorText: Colors.white,
|
||||
);
|
||||
mySnackbarWarning('Please select a reason first'.tr);
|
||||
return;
|
||||
}
|
||||
|
||||
String finalReason = selectedReasonText;
|
||||
if (finalReason == "Other".tr) {
|
||||
if (otherReasonController.text.trim().isEmpty) {
|
||||
Get.snackbar("Attention".tr, "Please write the reason...".tr,
|
||||
backgroundColor: Colors.red, colorText: Colors.white);
|
||||
mySnackbarWarning("Please write the reason...".tr);
|
||||
return;
|
||||
}
|
||||
finalReason = otherReasonController.text.trim();
|
||||
@@ -3697,8 +3682,7 @@ class RideLifecycleController extends GetxController {
|
||||
var res =
|
||||
await CRUD().get(link: AppLink.getapiKey, payload: {"keyName": key});
|
||||
if (res != 'failure') {
|
||||
var d = jsonDecode(res)['message'];
|
||||
return d[key].toString();
|
||||
return res['message'][key].toString();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
@@ -3709,7 +3693,7 @@ class RideLifecycleController extends GetxController {
|
||||
payload: {'id': rideId});
|
||||
Log.print(response);
|
||||
Log.print('2176');
|
||||
return jsonDecode(response)['data'];
|
||||
return response['data'];
|
||||
}
|
||||
|
||||
void handleActiveRideOnStartup(dynamic data) {
|
||||
@@ -4365,11 +4349,10 @@ class RideLifecycleController extends GetxController {
|
||||
var resPromo = await CRUD().get(link: AppLink.getPromoFirst, payload: {
|
||||
"passengerID": box.read(BoxName.passengerID).toString(),
|
||||
});
|
||||
if (resPromo != 'failure') {
|
||||
var d1 = jsonDecode(resPromo);
|
||||
promo = d1['message']['promo_code'];
|
||||
discount = d1['message']['amount'];
|
||||
validity = d1['message']['validity_end_date'];
|
||||
if (resPromo is Map) {
|
||||
promo = resPromo['message']['promo_code'];
|
||||
discount = resPromo['message']['amount'];
|
||||
validity = resPromo['message']['validity_end_date'];
|
||||
}
|
||||
box.write(BoxName.isFirstTime, '1');
|
||||
Get.dialog(
|
||||
|
||||
@@ -15,6 +15,7 @@ import '../../../print.dart';
|
||||
import '../../../services/emergency_signal_service.dart';
|
||||
import '../../../views/widgets/elevated_btn.dart';
|
||||
import '../../../views/widgets/my_textField.dart';
|
||||
import '../../../views/widgets/error_snakbar.dart';
|
||||
import '../../functions/launch.dart';
|
||||
import '../../firebase/notification_service.dart';
|
||||
import '../../functions/crud.dart';
|
||||
@@ -255,7 +256,7 @@ class UiInteractionsController extends GetxController {
|
||||
String storedPhone = box.read(BoxName.sosPhonePassenger)!;
|
||||
|
||||
if (rideLifecycle.rideId == 'yet' || rideLifecycle.driverId.isEmpty) {
|
||||
Get.snackbar("Alert".tr, "Wait for the trip to start first".tr);
|
||||
mySnackbarWarning("Wait for the trip to start first".tr);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -374,8 +375,7 @@ Siro Team''';
|
||||
} else if (res['status'] == 'success') {
|
||||
if (Get.isDialogOpen ?? false) Get.back();
|
||||
|
||||
Get.snackbar("Success".tr, "The invitation was sent successfully".tr,
|
||||
backgroundColor: AppColor.greenColor, colorText: Colors.white);
|
||||
mySnackbarSuccess("The invitation was sent successfully".tr);
|
||||
|
||||
List tokensData = res['data'];
|
||||
for (var device in tokensData) {
|
||||
|
||||
@@ -88,7 +88,7 @@ class CaptainWalletController extends GetxController {
|
||||
'amount': amount.toString(),
|
||||
'payment_method': paymentMethod.toString(),
|
||||
});
|
||||
var d = jsonDecode(res);
|
||||
var d = res;
|
||||
paymentID = d['message'].toString();
|
||||
}
|
||||
|
||||
|
||||
@@ -9,6 +9,7 @@ import 'package:siro_rider/constant/colors.dart';
|
||||
import 'package:siro_rider/constant/links.dart';
|
||||
import 'package:siro_rider/controller/functions/crud.dart';
|
||||
import 'package:siro_rider/main.dart';
|
||||
import 'package:siro_rider/views/widgets/error_snakbar.dart';
|
||||
import 'package:http_parser/http_parser.dart';
|
||||
import 'package:mime/mime.dart';
|
||||
|
||||
@@ -39,26 +40,11 @@ class ComplaintController extends GetxController {
|
||||
// --- دالة مخصصة لعرض إشعارات Snackbar بشكل جميل ---
|
||||
void _showCustomSnackbar(String title, String message,
|
||||
{bool isError = false}) {
|
||||
Get.snackbar(
|
||||
'', // العنوان سيتم التعامل معه عبر titleText
|
||||
'', // الرسالة سيتم التعامل معها عبر messageText
|
||||
titleText: Text(title.tr,
|
||||
style: const TextStyle(
|
||||
color: Colors.white, fontWeight: FontWeight.bold, fontSize: 16)),
|
||||
messageText: Text(message.tr,
|
||||
style: const TextStyle(color: Colors.white, fontSize: 14)),
|
||||
backgroundColor: isError
|
||||
? AppColor.redColor.withOpacity(0.95)
|
||||
: const Color.fromARGB(255, 6, 148, 79).withOpacity(0.95),
|
||||
icon: Icon(isError ? Icons.error_outline : Icons.check_circle_outline,
|
||||
color: Colors.white, size: 28),
|
||||
borderRadius: 12,
|
||||
margin: const EdgeInsets.all(15),
|
||||
padding: const EdgeInsets.symmetric(horizontal: 20, vertical: 18),
|
||||
snackPosition: SnackPosition.BOTTOM,
|
||||
duration: const Duration(seconds: 4),
|
||||
colorText: Colors.white,
|
||||
);
|
||||
if (isError) {
|
||||
mySnackeBarError(message.tr);
|
||||
} else {
|
||||
mySnackbarSuccess(message.tr);
|
||||
}
|
||||
}
|
||||
|
||||
// --- هذه الدالة تبقى كما هي لجلب بيانات الرحلة ---
|
||||
@@ -69,7 +55,7 @@ class ComplaintController extends GetxController {
|
||||
'passengerId': box.read(BoxName.passengerID).toString(),
|
||||
});
|
||||
if (res != 'failure') {
|
||||
var d = jsonDecode(res)['message'];
|
||||
var d = res['message'];
|
||||
feedBack = d;
|
||||
}
|
||||
isLoading = false;
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
import 'dart:convert';
|
||||
|
||||
import 'package:siro_rider/constant/box_name.dart';
|
||||
import 'package:siro_rider/constant/colors.dart';
|
||||
import 'package:siro_rider/constant/links.dart';
|
||||
import 'package:siro_rider/controller/functions/country_logic.dart';
|
||||
import 'package:siro_rider/controller/functions/crud.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_contacts/flutter_contacts.dart';
|
||||
@@ -77,9 +76,8 @@ ${AppLink.inviteRedirectUrl}?code=$couponCode&app=rider
|
||||
var response = await CRUD().get(link: AppLink.getInviteDriver, payload: {
|
||||
"driverId": box.read(BoxName.driverID),
|
||||
});
|
||||
if (response != 'failure') {
|
||||
var data = jsonDecode(response);
|
||||
driverInvitationData = data['message'];
|
||||
if (response != 'failure' && response is Map) {
|
||||
driverInvitationData = response['message'];
|
||||
update();
|
||||
}
|
||||
} catch (e) {
|
||||
@@ -93,9 +91,8 @@ ${AppLink.inviteRedirectUrl}?code=$couponCode&app=rider
|
||||
.get(link: AppLink.getDriverInvitationToPassengers, payload: {
|
||||
"driverId": box.read(BoxName.passengerID),
|
||||
});
|
||||
if (response != 'failure') {
|
||||
var data = jsonDecode(response);
|
||||
driverInvitationDataToPassengers = data['message'];
|
||||
if (response != 'failure' && response is Map) {
|
||||
driverInvitationDataToPassengers = response['message'];
|
||||
update();
|
||||
}
|
||||
} catch (e) {
|
||||
@@ -167,17 +164,14 @@ ${AppLink.inviteRedirectUrl}?code=$couponCode&app=rider
|
||||
// snackPosition: SnackPosition.BOTTOM);
|
||||
}
|
||||
} else {
|
||||
Get.snackbar('No contacts found'.tr,
|
||||
'No contacts with phone numbers were found on your device.'.tr);
|
||||
mySnackbarWarning('No contacts with phone numbers were found on your device.'.tr);
|
||||
}
|
||||
} else {
|
||||
Get.snackbar('Permission denied'.tr,
|
||||
'Contact permission is required to pick contacts'.tr);
|
||||
mySnackbarWarning('Contact permission is required to pick contacts'.tr);
|
||||
}
|
||||
} catch (e) {
|
||||
Log.print('Error picking contacts: $e');
|
||||
Get.snackbar(
|
||||
'Error'.tr, 'An error occurred while picking contacts: $e'.tr);
|
||||
mySnackeBarError('An error occurred while picking contacts: $e'.tr);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -187,28 +181,11 @@ ${AppLink.inviteRedirectUrl}?code=$couponCode&app=rider
|
||||
Get.back();
|
||||
}
|
||||
|
||||
/// **IMPROVEMENT**: A new robust function to format phone numbers specifically for Syria (+963).
|
||||
/// It handles various user inputs gracefully to produce a standardized international format.
|
||||
String _formatSyrianPhoneNumber(String phone) {
|
||||
// 1. Remove all non-digit characters to clean the input.
|
||||
String digitsOnly = phone.replaceAll(RegExp(r'\D'), '');
|
||||
|
||||
// 2. If it already starts with the country code, we assume it's correct.
|
||||
if (digitsOnly.startsWith('963')) {
|
||||
return '$digitsOnly';
|
||||
}
|
||||
|
||||
// 3. If it starts with '09' (common local format), remove the leading '0'.
|
||||
if (digitsOnly.startsWith('09')) {
|
||||
digitsOnly = digitsOnly.substring(1);
|
||||
}
|
||||
|
||||
// 4. Prepend the Syrian country code.
|
||||
return '963$digitsOnly';
|
||||
/// Formats phone number based on the current country (Syria=963, Jordan=962, Egypt=20).
|
||||
String _formatPhoneByCountry(String phone) {
|
||||
return CountryLogic.formatCurrentCountryPhone(phone);
|
||||
}
|
||||
|
||||
/// **IMPROVEMENT**: This method now uses the new phone formatting logic and
|
||||
/// sends a much-improved, user-friendly WhatsApp message.
|
||||
void sendInviteToPassenger() async {
|
||||
if (invitePhoneController.text.isEmpty ||
|
||||
invitePhoneController.text.length < 9) {
|
||||
@@ -217,9 +194,8 @@ ${AppLink.inviteRedirectUrl}?code=$couponCode&app=rider
|
||||
}
|
||||
|
||||
try {
|
||||
// Use the new formatting function to ensure the number is correct.
|
||||
String formattedPhoneNumber =
|
||||
_formatSyrianPhoneNumber(invitePhoneController.text);
|
||||
_formatPhoneByCountry(invitePhoneController.text);
|
||||
|
||||
var response =
|
||||
await CRUD().post(link: AppLink.addInvitationPassenger, payload: {
|
||||
@@ -229,13 +205,9 @@ ${AppLink.inviteRedirectUrl}?code=$couponCode&app=rider
|
||||
|
||||
if (response != 'failure' && response is Map) {
|
||||
var d = response;
|
||||
Get.snackbar('Success'.tr, 'Invite sent successfully'.tr,
|
||||
backgroundColor: Colors.green, colorText: Colors.white);
|
||||
mySnackbarSuccess('Invite sent successfully'.tr);
|
||||
|
||||
// التحقق الديناميكي من مكان البيانات (V1 vs V3)
|
||||
var payload = d['data'] ?? d['message'];
|
||||
|
||||
// إذا كان الـ message نصاً وليس خريطة (Map)، نأخذ البيانات من المستوى الأعلى
|
||||
if (payload is String) {
|
||||
payload = d;
|
||||
}
|
||||
@@ -243,7 +215,6 @@ ${AppLink.inviteRedirectUrl}?code=$couponCode&app=rider
|
||||
String expirationTime = (payload['expirationTime'] ?? '').toString();
|
||||
String inviteCode = (payload['inviteCode'] ?? '').toString();
|
||||
|
||||
// New and improved WhatsApp message for better user engagement.
|
||||
String message =
|
||||
"👋 ${'Hello! I\'m inviting you to try Siro.'.tr}\n\n"
|
||||
"🎁 ${'Use my invitation code to get a special gift on your first ride!'.tr}\n\n"
|
||||
@@ -259,16 +230,11 @@ ${AppLink.inviteRedirectUrl}?code=$couponCode&app=rider
|
||||
invitePhoneController.clear();
|
||||
update();
|
||||
} else {
|
||||
Get.snackbar(
|
||||
'Error'.tr, "This phone number has already been invited.".tr,
|
||||
backgroundColor: AppColor.redColor,
|
||||
duration: const Duration(seconds: 4));
|
||||
mySnackbarWarning("This phone number has already been invited.".tr);
|
||||
}
|
||||
} catch (e) {
|
||||
Log.print("Error sending invite: $e");
|
||||
Get.snackbar(
|
||||
'Error'.tr, 'An unexpected error occurred. Please try again.'.tr,
|
||||
backgroundColor: AppColor.redColor);
|
||||
mySnackeBarError('An unexpected error occurred. Please try again.'.tr);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -314,9 +280,8 @@ ${AppLink.inviteRedirectUrl}?code=$couponCode&app=rider
|
||||
},
|
||||
);
|
||||
|
||||
if (response != 'failure') {
|
||||
var data = jsonDecode(response);
|
||||
if (data['status'] == 'success') {
|
||||
if (response != 'failure' && response is Map) {
|
||||
if (response['status'] == 'success') {
|
||||
NotificationCaptainController().addNotificationCaptain(
|
||||
invitation['passengerInviterId'].toString(),
|
||||
"You have got a gift for invitation".tr,
|
||||
@@ -325,7 +290,7 @@ ${AppLink.inviteRedirectUrl}?code=$couponCode&app=rider
|
||||
);
|
||||
fetchDriverStatsPassengers(); // Refresh list
|
||||
} else {
|
||||
Get.snackbar('Error'.tr, data['message'] ?? 'Claim failed'.tr, backgroundColor: AppColor.redColor);
|
||||
mySnackeBarError(response['message'] ?? 'Claim failed'.tr);
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@@ -4,6 +4,7 @@ import 'package:siro_rider/constant/box_name.dart';
|
||||
import 'package:siro_rider/constant/links.dart';
|
||||
import 'package:siro_rider/controller/functions/crud.dart';
|
||||
import 'package:siro_rider/main.dart';
|
||||
import 'package:siro_rider/views/widgets/error_snakbar.dart';
|
||||
|
||||
class InvitesRewardsController extends GetxController {
|
||||
bool isLoading = false;
|
||||
@@ -70,20 +71,20 @@ class InvitesRewardsController extends GetxController {
|
||||
}
|
||||
);
|
||||
|
||||
Get.back(); // close loading
|
||||
Navigator.maybeOf(Get.context!)?.pop(); // close loading dialog only
|
||||
|
||||
if (response != 'failure') {
|
||||
if (response['status'] == 'success') {
|
||||
Get.snackbar("Success".tr, "You have been successfully referred!".tr, backgroundColor: Colors.green, colorText: Colors.white);
|
||||
mySnackbarSuccess("You have been successfully referred!".tr);
|
||||
} else {
|
||||
Get.snackbar("Notice".tr, response['message'] ?? "Could not add invite".tr);
|
||||
mySnackbarWarning(response['message'] ?? "Could not add invite".tr);
|
||||
}
|
||||
} else {
|
||||
Get.snackbar("Error".tr, "Network error occurred".tr);
|
||||
mySnackeBarError("Network error occurred".tr);
|
||||
}
|
||||
} catch (e) {
|
||||
Get.back(); // close loading
|
||||
Get.snackbar("Error".tr, "Network error occurred".tr);
|
||||
Navigator.maybeOf(Get.context!)?.pop(); // close loading dialog only
|
||||
mySnackeBarError("Network error occurred".tr);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -30,7 +30,7 @@ class TripMonitorController extends GetxController {
|
||||
var res = await CRUD().get(
|
||||
link: AppLink.getLocationParents, payload: {"driver_id": driverId});
|
||||
if (res != 'failure') {
|
||||
tripData = jsonDecode(res);
|
||||
tripData = res;
|
||||
parentLocation = LatLng(
|
||||
double.parse(tripData['message'][0]['latitude'].toString()),
|
||||
double.parse(tripData['message'][0]['longitude'].toString()));
|
||||
|
||||
@@ -53,9 +53,8 @@ class VipOrderController extends GetxController {
|
||||
);
|
||||
|
||||
if (res != 'failure') {
|
||||
var decodedResponse = jsonDecode(res);
|
||||
if (decodedResponse['message'] is List) {
|
||||
tripData.value = decodedResponse['message'];
|
||||
if (res['message'] is List) {
|
||||
tripData.value = res['message'];
|
||||
} else {
|
||||
tripData.clear(); // Ensure empty list if no data
|
||||
// mySnackeBarError('No trip data found');
|
||||
|
||||
Reference in New Issue
Block a user