Files
hackathon-sfc-a9a4cee231094…/lib/features/auth/presentation/bloc/auth_state.dart
2026-05-22 18:43:29 -06:00

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];
}