a
This commit is contained in:
57
lib/features/tracking/blocs/tracking_cubit.dart
Normal file
57
lib/features/tracking/blocs/tracking_cubit.dart
Normal file
@@ -0,0 +1,57 @@
|
||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||
import 'package:flux/features/tracking/data/tracking_repository.dart';
|
||||
import 'package:flux/features/tracking/models/tracking_model.dart';
|
||||
|
||||
// Stati base: initial, loading, loaded, error
|
||||
class TrackingState {
|
||||
final bool isLoading;
|
||||
final List<TrackingModel> logs;
|
||||
|
||||
TrackingState({this.isLoading = false, this.logs = const []});
|
||||
}
|
||||
|
||||
class TrackingCubit extends Cubit<TrackingState> {
|
||||
final TrackingRepository _repo;
|
||||
final String parentId;
|
||||
final TrackingParentType parentType;
|
||||
final String companyId;
|
||||
|
||||
TrackingCubit({
|
||||
required TrackingRepository repo,
|
||||
required this.parentId,
|
||||
required this.parentType,
|
||||
required this.companyId,
|
||||
}) : _repo = repo,
|
||||
super(TrackingState()) {
|
||||
loadTrackings();
|
||||
}
|
||||
|
||||
Future<void> loadTrackings() async {
|
||||
emit(TrackingState(isLoading: true, logs: state.logs));
|
||||
final trackings = await _repo.getTrackingsByParent(
|
||||
parentId: parentId,
|
||||
parentType: parentType,
|
||||
);
|
||||
emit(TrackingState(isLoading: false, logs: trackings));
|
||||
}
|
||||
|
||||
Future<void> addManualNote(
|
||||
String message,
|
||||
bool isInternal, {
|
||||
String? staffId,
|
||||
}) async {
|
||||
// Aggiungiamo un feedback visivo immediato (Optimistic UI) se vogliamo,
|
||||
// oppure semplicemente mostriamo il loading
|
||||
await _repo.logQuickEvent(
|
||||
companyId: companyId,
|
||||
message: message,
|
||||
type: TrackingType.manualNote,
|
||||
parentId: parentId,
|
||||
parentType: parentType,
|
||||
staffId: staffId,
|
||||
isInternal: isInternal,
|
||||
);
|
||||
// Ricarichiamo la lista fresca dal server
|
||||
await loadTrackings();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user