ios build, connected data (not finished)
This commit is contained in:
@@ -36,41 +36,10 @@ final authTokenProvider = FutureProvider<String?>((ref) async {
|
||||
});
|
||||
|
||||
final deliveryRoutesProvider = FutureProvider<List<DeliveryRoute>>((ref) async {
|
||||
// ignore: unused_local_variable
|
||||
final client = ref.watch(apiClientProvider);
|
||||
final token = ref.watch(authTokenProvider).valueOrNull;
|
||||
|
||||
// TODO: Remove mock data when Keycloak is configured
|
||||
if (token == null) {
|
||||
return [
|
||||
DeliveryRoute(
|
||||
id: 1,
|
||||
name: 'Route A - Downtown',
|
||||
routeFragmentId: 1,
|
||||
totalDeliveries: 12,
|
||||
completedDeliveries: 5,
|
||||
skippedDeliveries: 0,
|
||||
createdAt: DateTime.now().subtract(const Duration(days: 1)).toIso8601String(),
|
||||
),
|
||||
DeliveryRoute(
|
||||
id: 2,
|
||||
name: 'Route B - Suburbs',
|
||||
routeFragmentId: 2,
|
||||
totalDeliveries: 8,
|
||||
completedDeliveries: 8,
|
||||
skippedDeliveries: 0,
|
||||
createdAt: DateTime.now().subtract(const Duration(days: 2)).toIso8601String(),
|
||||
),
|
||||
DeliveryRoute(
|
||||
id: 3,
|
||||
name: 'Route C - Industrial Zone',
|
||||
routeFragmentId: 3,
|
||||
totalDeliveries: 15,
|
||||
completedDeliveries: 3,
|
||||
skippedDeliveries: 2,
|
||||
createdAt: DateTime.now().subtract(const Duration(days: 3)).toIso8601String(),
|
||||
),
|
||||
];
|
||||
throw Exception('User not authenticated');
|
||||
}
|
||||
|
||||
// Create a new client with auth token
|
||||
@@ -85,8 +54,14 @@ final deliveryRoutesProvider = FutureProvider<List<DeliveryRoute>>((ref) async {
|
||||
endpoint: 'simpleDeliveryRouteQueryItems',
|
||||
query: _EmptyQuery(),
|
||||
fromJson: (json) {
|
||||
final routes = json['items'] as List?;
|
||||
return routes?.map((r) => DeliveryRoute.fromJson(r as Map<String, dynamic>)).toList() ?? [];
|
||||
// API returns data wrapped in object with "data" field
|
||||
if (json is Map<String, dynamic>) {
|
||||
final data = json['data'];
|
||||
if (data is List) {
|
||||
return (data as List<dynamic>).map((r) => DeliveryRoute.fromJson(r as Map<String, dynamic>)).toList();
|
||||
}
|
||||
}
|
||||
return [];
|
||||
},
|
||||
);
|
||||
|
||||
@@ -94,13 +69,10 @@ final deliveryRoutesProvider = FutureProvider<List<DeliveryRoute>>((ref) async {
|
||||
});
|
||||
|
||||
final deliveriesProvider = FutureProvider.family<List<Delivery>, int>((ref, routeFragmentId) async {
|
||||
// ignore: unused_local_variable
|
||||
final client = ref.watch(apiClientProvider);
|
||||
final token = ref.watch(authTokenProvider).valueOrNull;
|
||||
|
||||
// TODO: Remove mock data when Keycloak is configured
|
||||
if (token == null) {
|
||||
return _getMockDeliveries(routeFragmentId);
|
||||
throw Exception('User not authenticated');
|
||||
}
|
||||
|
||||
final authClient = CqrsApiClient(
|
||||
@@ -114,8 +86,14 @@ final deliveriesProvider = FutureProvider.family<List<Delivery>, int>((ref, rout
|
||||
endpoint: 'simpleDeliveriesQueryItems',
|
||||
query: _DeliveriesQuery(routeFragmentId: routeFragmentId),
|
||||
fromJson: (json) {
|
||||
final items = json['items'] as List?;
|
||||
return items?.map((d) => Delivery.fromJson(d as Map<String, dynamic>)).toList() ?? [];
|
||||
// API returns data wrapped in object with "data" field
|
||||
if (json is Map<String, dynamic>) {
|
||||
final data = json['data'];
|
||||
if (data is List) {
|
||||
return (data as List<dynamic>).map((d) => Delivery.fromJson(d as Map<String, dynamic>)).toList();
|
||||
}
|
||||
}
|
||||
return [];
|
||||
},
|
||||
);
|
||||
|
||||
@@ -126,65 +104,6 @@ final languageProvider = StateProvider<String>((ref) {
|
||||
return 'fr';
|
||||
});
|
||||
|
||||
// Mock data generator for testing without authentication
|
||||
List<Delivery> _getMockDeliveries(int routeFragmentId) {
|
||||
final mockDeliveries = <Delivery>[];
|
||||
|
||||
for (int i = 1; i <= 6; i++) {
|
||||
final isDelivered = i <= 2;
|
||||
mockDeliveries.add(
|
||||
Delivery(
|
||||
id: i,
|
||||
routeFragmentId: routeFragmentId,
|
||||
deliveryIndex: i,
|
||||
orders: [
|
||||
DeliveryOrder(
|
||||
id: i * 100,
|
||||
isNewCustomer: i == 3,
|
||||
totalAmount: 150.0 + (i * 10),
|
||||
totalItems: 3 + i,
|
||||
contacts: [
|
||||
DeliveryContact(
|
||||
firstName: 'Client',
|
||||
lastName: 'Name$i',
|
||||
fullName: 'Client Name $i',
|
||||
phoneNumber: '+212${i}23456789',
|
||||
),
|
||||
],
|
||||
contact: DeliveryContact(
|
||||
firstName: 'Client',
|
||||
lastName: 'Name$i',
|
||||
fullName: 'Client Name $i',
|
||||
phoneNumber: '+212${i}23456789',
|
||||
),
|
||||
),
|
||||
],
|
||||
deliveryAddress: DeliveryAddress(
|
||||
id: i,
|
||||
line1: 'Street $i',
|
||||
line2: 'Building ${i * 10}',
|
||||
postalCode: '3000${i.toString().padLeft(2, '0')}',
|
||||
city: 'Casablanca',
|
||||
subdivision: 'Casablanca-Settat',
|
||||
countryCode: 'MA',
|
||||
latitude: 33.5731 + (i * 0.01),
|
||||
longitude: -7.5898 + (i * 0.01),
|
||||
formattedAddress: 'Street $i, Building ${i * 10}, Casablanca, Morocco',
|
||||
),
|
||||
delivered: isDelivered,
|
||||
isSkipped: false,
|
||||
hasBeenSkipped: false,
|
||||
deliveredAt: isDelivered ? DateTime.now().subtract(Duration(hours: i)).toIso8601String() : null,
|
||||
name: 'Delivery #${routeFragmentId}-$i',
|
||||
createdAt: DateTime.now().subtract(Duration(days: 1)).toIso8601String(),
|
||||
updatedAt: DateTime.now().toIso8601String(),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
return mockDeliveries;
|
||||
}
|
||||
|
||||
class _EmptyQuery implements Serializable {
|
||||
@override
|
||||
Map<String, Object?> toJson() => {};
|
||||
|
||||
Reference in New Issue
Block a user