diff --git a/lib/core/blocs/session/session_cubit.dart b/lib/core/blocs/session/session_cubit.dart index e3f0f70..ec5f7c1 100644 --- a/lib/core/blocs/session/session_cubit.dart +++ b/lib/core/blocs/session/session_cubit.dart @@ -130,4 +130,8 @@ class SessionCubit extends Cubit { await _supabase.auth.signOut(); // Non serve emettere stato qui, ci pensa il listener nel costruttore! } + + void setIsMobileDevice(bool isMobile) { + emit(state.copyWith(isMobileDevice: isMobile)); + } } diff --git a/lib/core/blocs/session/session_state.dart b/lib/core/blocs/session/session_state.dart index fbcb65e..b215dcb 100644 --- a/lib/core/blocs/session/session_state.dart +++ b/lib/core/blocs/session/session_state.dart @@ -24,6 +24,7 @@ class SessionState extends Equatable { final StoreModel? currentStore; final StaffMemberModel? currentStaff; final OnboardingStep onboardingStep; + final bool isMobileDevice; const SessionState({ this.status = SessionStatus.initial, @@ -32,6 +33,7 @@ class SessionState extends Equatable { this.currentStore, this.currentStaff, this.onboardingStep = OnboardingStep.none, + this.isMobileDevice = false, }); /// Metodo per creare una copia dello stato modificando solo i campi necessari @@ -42,6 +44,7 @@ class SessionState extends Equatable { StoreModel? currentStore, StaffMemberModel? currentStaff, OnboardingStep? onboardingStep, + bool? isMobileDevice, }) { return SessionState( status: status ?? this.status, @@ -50,6 +53,7 @@ class SessionState extends Equatable { currentStore: currentStore ?? this.currentStore, currentStaff: currentStaff ?? this.currentStaff, onboardingStep: onboardingStep ?? this.onboardingStep, + isMobileDevice: isMobileDevice ?? this.isMobileDevice, ); } @@ -61,6 +65,7 @@ class SessionState extends Equatable { currentStore, currentStaff, onboardingStep, + isMobileDevice, ]; // Helper rapidi per la UI diff --git a/lib/features/company/ui/create_company_screen.dart b/lib/features/company/ui/create_company_screen.dart index 0127f0f..e92e7d2 100644 --- a/lib/features/company/ui/create_company_screen.dart +++ b/lib/features/company/ui/create_company_screen.dart @@ -1,6 +1,5 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; -import 'package:flux/features/auth/bloc/auth_cubit.dart'; import 'package:flux/features/company/bloc/company_bloc.dart'; import 'package:flux/core/blocs/session/session_cubit.dart'; import 'package:flux/core/theme/theme.dart'; diff --git a/lib/features/master_data/staff/ui/staff_screen.dart b/lib/features/master_data/staff/ui/staff_screen.dart index bb70842..86553e8 100644 --- a/lib/features/master_data/staff/ui/staff_screen.dart +++ b/lib/features/master_data/staff/ui/staff_screen.dart @@ -6,6 +6,7 @@ import 'package:flux/core/widgets/flux_text_field.dart'; import 'package:flux/features/master_data/staff/blocs/staff_cubit.dart'; // Tuo percorso import 'package:flux/features/master_data/staff/models/staff_member_model.dart'; import 'package:flux/features/master_data/store/bloc/store_cubit.dart'; +import 'package:get_it/get_it.dart'; class StaffScreen extends StatefulWidget { const StaffScreen({super.key}); @@ -268,25 +269,24 @@ class _StaffScreenState extends State { height: 50, child: ElevatedButton( onPressed: () { - final companyId = context - .read() - .state - .company! - .id!; - //TODO sistemare StaffScreen per il nuovo modello - /* final updatedMember = StaffMemberModel( + final updatedMember = StaffMemberModel( id: member?.id, name: nameController.text, email: emailController.text, phoneNumber: phoneController.text, - companyId: companyId, + companyId: GetIt.I + .get() + .state + .company! + .id!, + userId: GetIt.I.get().state.user!.id, ); // Chiamiamo il metodo atomico nel Cubit context.read().saveStaffWithStores( member: updatedMember, selectedStoreIds: tempSelectedStores, - ); */ + ); Navigator.pop(context); }, diff --git a/lib/features/onboarding/ui/company_onboarding_form.dart b/lib/features/onboarding/ui/company_onboarding_form.dart index 6a06b08..9f5a606 100644 --- a/lib/features/onboarding/ui/company_onboarding_form.dart +++ b/lib/features/onboarding/ui/company_onboarding_form.dart @@ -2,7 +2,6 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flux/core/utils/validators.dart'; import 'package:flux/core/widgets/flux_text_field.dart'; -import 'package:flux/features/company/models/company_model.dart'; import 'package:flux/features/onboarding/blocs/onboarding_cubit.dart'; import 'package:flux/features/onboarding/blocs/onboarding_state.dart'; diff --git a/lib/main.dart b/lib/main.dart index 4698234..7282746 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,3 +1,6 @@ +import 'dart:io'; + +import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_dotenv/flutter_dotenv.dart'; @@ -109,6 +112,14 @@ class _FluxAppState extends State { super.initState(); // Creiamo il router passandogli il Cubit per i redirect _router = AppRouter.createRouter(context.read()); + GetIt.I.get().setIsMobileDevice(isMobileDevice(context)); + } + + bool isMobileDevice(BuildContext context) { + if (kIsWeb) { + return false; // Il web non lo consideriamo "mobile nativo" per i deep link + } + return Platform.isAndroid || Platform.isIOS; } @override diff --git a/pubspec.lock b/pubspec.lock index 556ab24..bee09bc 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -608,6 +608,22 @@ packages: url: "https://pub.dev" source: hosted version: "2.2.0" + qr: + dependency: transitive + description: + name: qr + sha256: "5a1d2586170e172b8a8c8470bbbffd5eb0cd38a66c0d77155ea138d3af3a4445" + url: "https://pub.dev" + source: hosted + version: "3.0.2" + qr_flutter: + dependency: "direct main" + description: + name: qr_flutter + sha256: "5095f0fc6e3f71d08adef8feccc8cea4f12eec18a2e31c2e8d82cb6019f4b097" + url: "https://pub.dev" + source: hosted + version: "4.1.0" realtime_client: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index d399268..8668908 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -21,6 +21,7 @@ dependencies: internet_file: ^1.3.0 intl: ^0.20.2 pdfx: ^2.9.2 + qr_flutter: ^4.1.0 shared_preferences: ^2.5.5 supabase_flutter: ^2.12.2