refactor pesantissimo dei Customer Files

This commit is contained in:
2026-04-23 11:20:34 +02:00
parent ba54267b77
commit 41f6d0dd43
25 changed files with 518 additions and 157 deletions

View File

@@ -6,6 +6,7 @@ import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:flux/core/blocs/session/session_cubit.dart';
import 'package:flux/core/data/core_repository.dart';
import 'package:flux/features/auth/ui/auth_screen.dart';
import 'package:flux/features/customers/blocs/customer_files_bloc.dart';
import 'package:flux/features/customers/models/customer_model.dart';
import 'package:flux/features/customers/ui/customer_detail_screen.dart';
import 'package:flux/features/home/ui/home_screen.dart';
@@ -90,9 +91,13 @@ class AppRouter {
builder: (context, state) {
// Recuperiamo l'oggetto customer passato tramite extra
final customer = state.extra as CustomerModel;
return CustomerDetailScreen(customer: customer);
return BlocProvider(
create: (context) => CustomerFilesBloc(customer.id!),
child: CustomerDetailScreen(customer: customer),
);
},
),
GoRoute(
path: '/products',
name: 'products',

View File

@@ -0,0 +1,9 @@
// Funzione che chiede le chiavi a Supabase
import 'package:get_it/get_it.dart';
import 'package:supabase_flutter/supabase_flutter.dart';
Future<String> getSignedUrl(String storagePath) async {
return await GetIt.I<SupabaseClient>().storage
.from('documents')
.createSignedUrl(storagePath, 60); // Link che si autodistrugge in 60s
}

View File

@@ -1,6 +1,6 @@
import 'dart:typed_data';
import 'package:flutter/material.dart';
import 'package:supabase_flutter/supabase_flutter.dart'; // <--- AGGIUNGI QUESTO
import 'package:flux/core/utils/functions.dart';
class ImageViewerWidget extends StatelessWidget {
final String? storagePath; // ATTENZIONE: Ora contiene lo storagePath!
@@ -12,13 +12,6 @@ class ImageViewerWidget extends StatelessWidget {
'Errore: Devi fornire un Path valido o i bytes del file!',
);
// Funzione che chiede le chiavi a Supabase
Future<String> _getSignedUrl() async {
return await Supabase.instance.client.storage
.from('documents')
.createSignedUrl(storagePath!, 60); // Link che si autodistrugge in 60s
}
@override
Widget build(BuildContext context) {
return Scaffold(
@@ -37,7 +30,7 @@ class ImageViewerWidget extends StatelessWidget {
child: bytes != null
? Image.memory(bytes!)
: FutureBuilder<String>(
future: _getSignedUrl(),
future: getSignedUrl(storagePath!),
builder: (context, snapshot) {
if (snapshot.connectionState == ConnectionState.waiting) {
return const CircularProgressIndicator();

View File

@@ -1,5 +1,6 @@
import 'dart:typed_data';
import 'package:flutter/material.dart';
import 'package:flux/core/utils/functions.dart';
import 'package:get_it/get_it.dart';
import 'package:pdfx/pdfx.dart';
import 'package:internet_file/internet_file.dart';
@@ -39,11 +40,7 @@ class _PdfViewerWidgetState extends State<PdfViewerWidget> {
pdfData = widget.bytes!;
} else if (widget.storagePath != null && widget.storagePath!.isNotEmpty) {
// SCENARIO 2: Pratica salvata, scarichiamo da Supabase (Remoto)
final signedUrl = await GetIt.I
.get<SupabaseClient>()
.storage
.from('documents')
.createSignedUrl(widget.storagePath!, 60);
final signedUrl = await getSignedUrl(widget.storagePath!);
pdfData = await InternetFile.get(signedUrl);
} else {
throw Exception("Nessun documento trovato");