57 lines
1.4 KiB
Dart
57 lines
1.4 KiB
Dart
import 'package:equatable/equatable.dart';
|
|
|
|
import '../../domain/entities/auth_user.dart';
|
|
|
|
/// Estados posibles del [AuthBloc].
|
|
/// Usando sealed class para exhaustividad en switch expressions (Dart 3+).
|
|
sealed class AuthState extends Equatable {
|
|
const AuthState();
|
|
|
|
@override
|
|
List<Object?> get props => [];
|
|
}
|
|
|
|
/// Estado inicial antes de cualquier verificación.
|
|
final class AuthInitial extends AuthState {
|
|
const AuthInitial();
|
|
}
|
|
|
|
/// Verificando si existe sesión almacenada (al inicio de la app).
|
|
final class AuthCheckingSession extends AuthState {
|
|
const AuthCheckingSession();
|
|
}
|
|
|
|
/// Proceso de login o logout en curso.
|
|
final class AuthLoading extends AuthState {
|
|
const AuthLoading();
|
|
}
|
|
|
|
/// Usuario autenticado exitosamente. Contiene el usuario y su token JWT.
|
|
final class AuthAuthenticated extends AuthState {
|
|
final AuthUser user;
|
|
|
|
const AuthAuthenticated({required this.user});
|
|
|
|
/// Expone el token para su uso en headers HTTP futuros.
|
|
String get bearerToken => 'Bearer ${user.token}';
|
|
|
|
@override
|
|
List<Object?> get props => [user];
|
|
}
|
|
|
|
/// No autenticado (estado limpio, sin sesión).
|
|
final class AuthUnauthenticated extends AuthState {
|
|
const AuthUnauthenticated();
|
|
}
|
|
|
|
/// Error durante la autenticación.
|
|
final class AuthFailure extends AuthState {
|
|
final String message;
|
|
final String? errorCode;
|
|
|
|
const AuthFailure({required this.message, this.errorCode});
|
|
|
|
@override
|
|
List<Object?> get props => [message, errorCode];
|
|
}
|