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 logs; TrackingState({this.isLoading = false, this.logs = const []}); } class TrackingCubit extends Cubit { 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 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 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(); } }