feat: add QR code scanning and file upload capabilities with permissions

This commit is contained in:
2026-04-22 19:21:57 +02:00
parent 8438e0804f
commit ba54267b77
11 changed files with 119 additions and 8 deletions

View File

@@ -57,7 +57,7 @@ class ProvidersCubit extends Cubit<ProvidersState> {
ProvidersCubit() : super(const ProvidersState());
// Carica i provider della company e quelli associati a uno store specifico
Future<void> loadProviders(StoreModel? store) async {
Future<void> loadProviders({StoreModel? store}) async {
emit(state.copyWith(isLoading: true));
try {
final all = await _repository.fetchAllCompanyProviders(
@@ -149,7 +149,7 @@ class ProvidersCubit extends Cubit<ProvidersState> {
await _repository.syncProviderStores(pId!, selectedStoreIds);
// 3. Ricarichiamo tutto
await loadProviders(null);
await loadProviders();
} catch (e) {
emit(state.copyWith(isLoading: false, errorMessage: e.toString()));
}
@@ -168,7 +168,7 @@ class ProvidersCubit extends Cubit<ProvidersState> {
// o fare un confronto tra i presenti e i nuovi)
await _repository.syncProviderStores(provider.id!, storeIds);
await loadProviders(null);
await loadProviders();
} catch (e) {
emit(state.copyWith(isLoading: false, errorMessage: e.toString()));
}

View File

@@ -124,7 +124,20 @@ class _FluxAppState extends State<FluxApp> {
@override
Widget build(BuildContext context) {
return BlocBuilder<SessionCubit, SessionState>(
// Il BlocConsumer unisce Listener e Builder in un colpo solo!
return BlocConsumer<SessionCubit, SessionState>(
// --- PARTE LISTENER (Il colpo di clacson in background) ---
listenWhen: (previous, current) =>
previous.status != SessionStatus.authenticated &&
current.status == SessionStatus.authenticated,
listener: (context, state) {
// BAM! L'utente è dentro. Pre-carichiamo i Cubit leggeri.
context.read<StoreCubit>().loadStores();
context.read<StaffCubit>().loadAllStaff();
context.read<ProvidersCubit>().loadProviders();
},
// --- PARTE BUILDER (La UI che viene disegnata a schermo) ---
builder: (context, sessionState) {
if (sessionState.status == SessionStatus.initial) {
return _buildLoadingScreen();