39 lines
1.0 KiB
Dart
39 lines
1.0 KiB
Dart
import 'package:bloc/bloc.dart';
|
|
import 'auth_event.dart';
|
|
import 'auth_state.dart';
|
|
|
|
class AuthBloc extends Bloc<AuthEvent, AuthState> {
|
|
AuthBloc() : super(AuthInitial()) {
|
|
on<LoginRequested>(_onLoginRequested);
|
|
on<LogoutRequested>(_onLogoutRequested);
|
|
on<CheckAuthRequested>(_onCheckAuthRequested);
|
|
}
|
|
|
|
void _onLoginRequested(LoginRequested event, Emitter<AuthState> emit) async {
|
|
emit(AuthLoading());
|
|
// Redirect to Go auth/login
|
|
// For web, use window.location or url_launcher
|
|
// Assume handled in UI
|
|
emit(const AuthFailure('Redirect to login URL'));
|
|
}
|
|
|
|
void _onLogoutRequested(
|
|
LogoutRequested event,
|
|
Emitter<AuthState> emit,
|
|
) async {
|
|
emit(AuthLoading());
|
|
// Call logout API
|
|
await Future.delayed(const Duration(milliseconds: 500));
|
|
emit(AuthUnauthenticated());
|
|
}
|
|
|
|
void _onCheckAuthRequested(
|
|
CheckAuthRequested event,
|
|
Emitter<AuthState> emit,
|
|
) async {
|
|
// Check if token is valid
|
|
// For now, assume unauthenticated
|
|
emit(AuthUnauthenticated());
|
|
}
|
|
}
|