f
This commit is contained in:
@@ -10,24 +10,24 @@ class TicketListCubit extends Cubit<TicketListState> {
|
||||
static const int _limit = 20; // Paginazione a blocchi di 20
|
||||
|
||||
TicketListCubit() : super(const TicketListState()) {
|
||||
fetchTickets(reset: true);
|
||||
loadTickets(refresh: true);
|
||||
}
|
||||
|
||||
/// Recupera i ticket. Se reset = true, svuota la lista e riparte da offset 0.
|
||||
Future<void> fetchTickets({bool reset = false}) async {
|
||||
Future<void> loadTickets({bool refresh = false}) async {
|
||||
if (state.isLoading) return;
|
||||
if (!reset && state.hasReachedMax) return;
|
||||
if (!refresh && state.hasReachedMax) return;
|
||||
|
||||
emit(
|
||||
state.copyWith(
|
||||
isLoading: true,
|
||||
errorMessage: '',
|
||||
tickets: reset ? [] : state.tickets,
|
||||
tickets: refresh ? [] : state.tickets,
|
||||
),
|
||||
);
|
||||
|
||||
try {
|
||||
final currentOffset = reset ? 0 : state.tickets.length;
|
||||
final currentOffset = refresh ? 0 : state.tickets.length;
|
||||
|
||||
final newTickets = await _repository.fetchStoreTickets(
|
||||
offset: currentOffset,
|
||||
@@ -41,7 +41,7 @@ class TicketListCubit extends Cubit<TicketListState> {
|
||||
|
||||
emit(
|
||||
state.copyWith(
|
||||
tickets: reset ? newTickets : [...state.tickets, ...newTickets],
|
||||
tickets: refresh ? newTickets : [...state.tickets, ...newTickets],
|
||||
isLoading: false,
|
||||
hasReachedMax: newTickets.length < _limit,
|
||||
),
|
||||
@@ -74,6 +74,24 @@ class TicketListCubit extends Cubit<TicketListState> {
|
||||
clearStatus: clearStatus,
|
||||
),
|
||||
);
|
||||
fetchTickets(reset: true); // Applica i filtri e ricarica
|
||||
loadTickets(refresh: true); // Applica i filtri e ricarica
|
||||
}
|
||||
|
||||
void toggleTicketSelection(String ticketId) {
|
||||
final currentSelection = Set<String>.from(state.selectedTicketIds);
|
||||
if (currentSelection.contains(ticketId)) {
|
||||
currentSelection.remove(ticketId);
|
||||
} else {
|
||||
currentSelection.add(ticketId);
|
||||
}
|
||||
emit(state.copyWith(selectedTicketIds: currentSelection));
|
||||
}
|
||||
|
||||
void clearSelection() {
|
||||
emit(state.copyWith(selectedTicketIds: {}));
|
||||
}
|
||||
|
||||
void selectAll(List<String> ticketIds) {
|
||||
emit(state.copyWith(selectedTicketIds: ticketIds.toSet()));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,6 +7,7 @@ class TicketListState extends Equatable {
|
||||
final bool isLoading;
|
||||
final bool hasReachedMax;
|
||||
final String errorMessage;
|
||||
final Set<String> selectedTicketIds;
|
||||
|
||||
// Filtri attivi
|
||||
final String? searchTerm;
|
||||
@@ -20,6 +21,7 @@ class TicketListState extends Equatable {
|
||||
this.isLoading = false,
|
||||
this.hasReachedMax = false,
|
||||
this.errorMessage = '',
|
||||
this.selectedTicketIds = const {},
|
||||
this.searchTerm,
|
||||
this.dateRange,
|
||||
this.statusFilter,
|
||||
@@ -32,6 +34,7 @@ class TicketListState extends Equatable {
|
||||
bool? isLoading,
|
||||
bool? hasReachedMax,
|
||||
String? errorMessage,
|
||||
Set<String>? selectedTicketIds,
|
||||
String? searchTerm,
|
||||
DateTimeRange? dateRange,
|
||||
TicketStatus? statusFilter,
|
||||
@@ -51,6 +54,7 @@ class TicketListState extends Equatable {
|
||||
statusFilter: clearStatus ? null : (statusFilter ?? this.statusFilter),
|
||||
ticketTypeFilter: ticketTypeFilter ?? this.ticketTypeFilter,
|
||||
staffIdFilter: staffIdFilter ?? this.staffIdFilter,
|
||||
selectedTicketIds: selectedTicketIds ?? this.selectedTicketIds,
|
||||
);
|
||||
}
|
||||
|
||||
@@ -60,6 +64,7 @@ class TicketListState extends Equatable {
|
||||
isLoading,
|
||||
hasReachedMax,
|
||||
errorMessage,
|
||||
selectedTicketIds,
|
||||
searchTerm,
|
||||
dateRange,
|
||||
statusFilter,
|
||||
|
||||
Reference in New Issue
Block a user