Update: 2026-08-07 14:20:27
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
import 'dart:convert';
|
||||
import 'package:get/get.dart';
|
||||
import '../../constant/links.dart';
|
||||
import '../../views/widgets/error_snakbar.dart';
|
||||
import '../functions/crud.dart';
|
||||
|
||||
class DriverScheduledRidesController extends GetxController {
|
||||
final CRUD _crud = CRUD();
|
||||
|
||||
final bookings = <Map<String, dynamic>>[].obs;
|
||||
final isLoading = false.obs;
|
||||
|
||||
@override
|
||||
void onInit() {
|
||||
super.onInit();
|
||||
fetch();
|
||||
}
|
||||
|
||||
Future<void> fetch() async {
|
||||
isLoading.value = true;
|
||||
try {
|
||||
final res = await _crud.post(
|
||||
link: AppLink.scheduledList,
|
||||
payload: {'scope': 'upcoming_driver'},
|
||||
);
|
||||
final data = _extract(res);
|
||||
final list = (data?['bookings'] as List?) ?? [];
|
||||
bookings.assignAll(
|
||||
list.map((e) => Map<String, dynamic>.from(e as Map)).toList());
|
||||
} catch (e) {
|
||||
mySnackbarError('Failed to fetch scheduled rides'.tr);
|
||||
} finally {
|
||||
isLoading.value = false;
|
||||
}
|
||||
}
|
||||
|
||||
Map<String, dynamic>? _extract(dynamic res) {
|
||||
final decoded = res is String ? jsonDecode(res) : res;
|
||||
if (decoded is! Map) {
|
||||
return null;
|
||||
}
|
||||
if (decoded['status'] != 'success') {
|
||||
return null;
|
||||
}
|
||||
final data = decoded['message'] ?? decoded['data'];
|
||||
return data is Map ? Map<String, dynamic>.from(data) : <String, dynamic>{};
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user