lavorazione dei ticket
This commit is contained in:
@@ -38,8 +38,12 @@ import 'package:flux/features/tickets/blocs/ticket_form_cubit.dart';
|
||||
import 'package:flux/features/tickets/models/ticket_model.dart';
|
||||
import 'package:flux/features/tickets/ui/ticket_form_screen.dart';
|
||||
import 'package:flux/features/tickets/ui/ticket_list_screen.dart';
|
||||
import 'package:flux/features/tickets/ui/ticket_workspace/ticket_workspace_screen.dart';
|
||||
import 'package:flux/features/tracking/blocs/tracking_cubit.dart';
|
||||
import 'package:flux/features/tracking/models/tracking_model.dart';
|
||||
import 'package:get_it/get_it.dart';
|
||||
import 'package:go_router/go_router.dart';
|
||||
import 'package:supabase_flutter/supabase_flutter.dart';
|
||||
|
||||
class AppRouter {
|
||||
static GoRouter createRouter(SessionCubit sessionCubit) {
|
||||
@@ -221,6 +225,12 @@ class AppRouter {
|
||||
} else {
|
||||
realTicketId = pathId;
|
||||
}
|
||||
if (realTicketId != null) {
|
||||
context.read<TrackingCubit>().loadTrackings(
|
||||
realTicketId,
|
||||
TrackingParentType.ticket,
|
||||
);
|
||||
}
|
||||
context.read<CustomersCubit>().loadCustomers();
|
||||
context.read<ProductsCubit>().loadModels();
|
||||
context.read<ProductsCubit>().loadBrands();
|
||||
@@ -249,6 +259,36 @@ class AppRouter {
|
||||
);
|
||||
},
|
||||
),
|
||||
GoRoute(
|
||||
path: '/tickets/workspace/:id',
|
||||
name: Routes.ticketWorkspace,
|
||||
builder: (context, state) {
|
||||
// 1. Recuperiamo il Cubit vivo dall'extra
|
||||
final formCubit = state.extra as TicketFormCubit?;
|
||||
|
||||
// 2. Controllo di sicurezza (fondamentale per Flutter Web)
|
||||
if (formCubit != null) {
|
||||
return BlocProvider.value(
|
||||
value: formCubit,
|
||||
child: const TicketWorkspaceScreen(),
|
||||
);
|
||||
} else {
|
||||
// SCENARIO REFRESH WEB:
|
||||
// Se l'utente preme F5 del browser mentre è nel banco da lavoro,
|
||||
// l'extra viene distrutto e diventa null.
|
||||
// In questo caso, gli diciamo elegantemente che la sessione è persa
|
||||
// e lo invitiamo a tornare indietro, oppure restituisci direttamente
|
||||
// un blocco di redirect!
|
||||
return const Scaffold(
|
||||
body: Center(
|
||||
child: Text(
|
||||
'Sessione di lavoro scaduta. Torna alla lista e riapri il ticket.',
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
},
|
||||
),
|
||||
GoRoute(
|
||||
path: '/upload-success',
|
||||
name: Routes.uploadSuccess,
|
||||
|
||||
Reference in New Issue
Block a user