42 lines
1.1 KiB
Dart
42 lines
1.1 KiB
Dart
import 'dart:async';
|
|
import 'dart:developer';
|
|
|
|
import 'package:bloc/bloc.dart';
|
|
import 'package:equatable/equatable.dart';
|
|
import 'package:user_repository/user_repository.dart';
|
|
|
|
part 'setting_event.dart';
|
|
part 'setting_state.dart';
|
|
|
|
class SettingBloc extends Bloc<SettingEvent, SettingState> {
|
|
final UserRepository _userRepository;
|
|
late final StreamSubscription<bool> _authSubscription;
|
|
|
|
SettingBloc({required UserRepository userRepository})
|
|
: _userRepository = userRepository,
|
|
super(SettingInitial()) {
|
|
_authSubscription =
|
|
_userRepository.isAuthenticated().listen((isAuthenticated) {
|
|
if (!isAuthenticated) {
|
|
try {
|
|
emit(SettingLogoutSuccess());
|
|
} catch (e) {
|
|
log('xd Error en el settings bloc ${e.toString()}');
|
|
}
|
|
}
|
|
});
|
|
on<SettingLogoutRequest>(_onSettingLogoutRequest);
|
|
}
|
|
|
|
void _onSettingLogoutRequest(
|
|
SettingLogoutRequest event, Emitter<SettingState> emit) async {
|
|
await _userRepository.logOut();
|
|
}
|
|
|
|
@override
|
|
Future<void> close() {
|
|
_authSubscription.cancel();
|
|
return super.close();
|
|
}
|
|
}
|