perf: suppression du téléchargement massif d'événements côté client (appel de la CF checkContainerAvailability et lecture synchrone des quantités)
This commit is contained in:
@@ -3,7 +3,6 @@ import 'package:flutter/material.dart';
|
||||
import 'package:em2rp/models/equipment_model.dart';
|
||||
import 'package:em2rp/models/container_model.dart';
|
||||
import 'package:em2rp/models/event_model.dart';
|
||||
import 'package:em2rp/services/event_availability_service.dart';
|
||||
import 'package:em2rp/services/data_service.dart';
|
||||
import 'package:em2rp/services/api_service.dart';
|
||||
import 'package:em2rp/utils/colors.dart';
|
||||
@@ -88,7 +87,6 @@ class EquipmentSelectionDialog extends StatefulWidget {
|
||||
class _EquipmentSelectionDialogState extends State<EquipmentSelectionDialog> {
|
||||
final TextEditingController _searchController = TextEditingController();
|
||||
final ScrollController _scrollController = ScrollController(); // Pr├®serve la position de scroll
|
||||
final EventAvailabilityService _availabilityService = EventAvailabilityService();
|
||||
final DataService _dataService = DataService(apiService);
|
||||
|
||||
EquipmentCategory? _selectedCategory;
|
||||
@@ -279,7 +277,7 @@ class _EquipmentSelectionDialogState extends State<EquipmentSelectionDialog> {
|
||||
DebugLog.info('[EquipmentSelectionDialog] Loaded ${newEquipments.length} equipments, total: ${_paginatedEquipments.length}, hasMore: $_hasMoreEquipments');
|
||||
|
||||
// Charger les quantites pour les consommables/cbles de cette page
|
||||
await _loadAvailableQuantities(newEquipments);
|
||||
_loadAvailableQuantities(newEquipments);
|
||||
|
||||
// Vrifier si on doit charger d'autres lments (ex: tout a t filtr)
|
||||
WidgetsBinding.instance.addPostFrameCallback((_) {
|
||||
@@ -442,7 +440,7 @@ class _EquipmentSelectionDialogState extends State<EquipmentSelectionDialog> {
|
||||
}
|
||||
|
||||
/// Charge les quantit├®s disponibles pour les consommables/c├óbles d'une liste d'├®quipements
|
||||
Future<void> _loadAvailableQuantities(List<EquipmentModel> equipments) async {
|
||||
void _loadAvailableQuantities(List<EquipmentModel> equipments) {
|
||||
if (!mounted) return;
|
||||
|
||||
try {
|
||||
@@ -453,12 +451,13 @@ class _EquipmentSelectionDialogState extends State<EquipmentSelectionDialog> {
|
||||
for (var eq in consumables) {
|
||||
// Ne recharger que si on n'a pas d├®j├á la quantit├®
|
||||
if (!_availableQuantities.containsKey(eq.id)) {
|
||||
final available = await _availabilityService.getAvailableQuantity(
|
||||
equipment: eq,
|
||||
startDate: widget.startDate,
|
||||
endDate: widget.endDate,
|
||||
excludeEventId: widget.excludeEventId,
|
||||
);
|
||||
int available = eq.totalQuantity ?? 0;
|
||||
if (_equipmentQuantities.containsKey(eq.id)) {
|
||||
final qtyInfo = _equipmentQuantities[eq.id];
|
||||
if (qtyInfo != null && qtyInfo['availableQuantity'] != null) {
|
||||
available = (qtyInfo['availableQuantity'] as num).toInt();
|
||||
}
|
||||
}
|
||||
_availableQuantities[eq.id] = available;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user