import 'dart:async'; import 'dart:developer'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:equatable/equatable.dart'; import 'package:user_repository/user_repository.dart'; part 'my_user_event.dart'; part 'my_user_state.dart'; class MyUserBloc extends Bloc { final UserRepository _userRepository; MyUserBloc({required UserRepository myUserRepository}) : _userRepository = myUserRepository, super(const MyUserState.loading()) { _userRepository.streamUser().listen((event) { log('xd ---: ${event}'); if (event == null) { log('UserChanged: ${event}'); emit(const MyUserState.failure()); } else { log('UserChanged: ${event}'); emit(MyUserState.success(event!)); } }); // on(_onUserChanged); // _userRepository.user.first.then((user) { // log('xd: ${user}'); // if (user != null) { // add(UserChanged(user: user)); // _userSubscription = _userRepository.user.listen((user) { // log('xd: ${user}'); // add(UserChanged(user: user)); // }); // } // }).catchError((e) { // log('xd: ${e}'); // add(UserChanged(user: null)); // }); // on(_onGetMyUser); // _userRepository.user.listen((user) { // if (user != null) { // add(GetMyUser(myUserId: user.uid)); // } // }); // emit(MyUserState.success(MyUser( // name: 'John', id: '123', email: 'johndoe@gmail.com', picture: ''))); } void _onUserChanged(UserChanged event, Emitter emit) { log('UserChanged: ${event.user}'); if (event.user == null) { log('UserChanged: ${event.user}'); emit(const MyUserState.failure()); } else { log('UserChanged: ${event.user}'); emit(MyUserState.success(event.user!)); } } // void _onGetMyUser(GetMyUser event, Emitter emit) async { // log('GetMyUser: ${event.myUserId}'); // emit(const MyUserState.loading()); // try { // MyUser myUser = await _userRepository.getMyUser(event.myUserId); // log('GetMyUser: $myUser'); // emit(MyUserState.success(myUser)); // } catch (e) { // log('GetMyUser: $e'); // emit(const MyUserState.failure()); // } // } }