Files
Siro/siro_driver/lib/controller/scheduled/driver_scheduled_rides_controller.dart
T

49 lines
1.3 KiB
Dart

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>{};
}
}