52 lines
1.3 KiB
Dart
52 lines
1.3 KiB
Dart
part of 'session_bloc.dart';
|
|
|
|
enum SessionStatus {
|
|
unknown,
|
|
unauthenticated,
|
|
authenticatedNoCompany, // Loggato ma deve creare l'azienda
|
|
authenticatedNoStore, // Ha l'azienda ma deve creare/scegliere il primo negozio
|
|
ready,
|
|
}
|
|
|
|
class SessionState extends Equatable {
|
|
final SessionStatus status;
|
|
final String? userId;
|
|
final CompanyModel? company;
|
|
final StoreModel? selectedStore;
|
|
final List<StoreModel> availableStores; // Utile per uno switcher in futuro
|
|
|
|
const SessionState({
|
|
this.status = SessionStatus.unknown,
|
|
this.userId,
|
|
this.company,
|
|
this.selectedStore,
|
|
this.availableStores = const [],
|
|
});
|
|
|
|
@override
|
|
List<Object?> get props => [
|
|
status,
|
|
userId,
|
|
company,
|
|
selectedStore,
|
|
availableStores,
|
|
];
|
|
|
|
// copyWith per aggiornare solo un pezzo (es. quando cambi negozio)
|
|
SessionState copyWith({
|
|
SessionStatus? status,
|
|
String? userId,
|
|
CompanyModel? company,
|
|
StoreModel? selectedStore,
|
|
List<StoreModel>? availableStores,
|
|
}) {
|
|
return SessionState(
|
|
status: status ?? this.status,
|
|
userId: userId ?? this.userId,
|
|
company: company ?? this.company,
|
|
selectedStore: selectedStore ?? this.selectedStore,
|
|
availableStores: availableStores ?? this.availableStores,
|
|
);
|
|
}
|
|
}
|