stream
This commit is contained in:
@@ -12,12 +12,12 @@ part 'authentication_state.dart';
|
||||
class AuthenticationBloc
|
||||
extends Bloc<AuthenticationEvent, AuthenticationState> {
|
||||
final UserRepository userRepository;
|
||||
late final StreamSubscription<User?> _userSubscription;
|
||||
late final StreamSubscription<MyUser?> _userSubscription;
|
||||
|
||||
AuthenticationBloc({required UserRepository myUserRepository})
|
||||
: userRepository = myUserRepository,
|
||||
super(const AuthenticationState.unknown()) {
|
||||
_userSubscription = userRepository.user.listen((authUser) {
|
||||
_userSubscription = userRepository.streamUser().listen((authUser) {
|
||||
add(AuthenticationUserChanged(authUser));
|
||||
});
|
||||
on<AuthenticationUserChanged>((event, emit) {
|
||||
|
||||
@@ -11,7 +11,7 @@ abstract class AuthenticationEvent extends Equatable {
|
||||
class AuthenticationUserChanged extends AuthenticationEvent {
|
||||
const AuthenticationUserChanged(this.user);
|
||||
|
||||
final User? user;
|
||||
final MyUser? user;
|
||||
}
|
||||
|
||||
class AuthenticationLogoutRequested extends AuthenticationEvent {}
|
||||
|
||||
@@ -4,7 +4,7 @@ enum AuthenticationStatus { authenticated, unauthenticated, unknown }
|
||||
|
||||
class AuthenticationState extends Equatable {
|
||||
final AuthenticationStatus status;
|
||||
final User? user;
|
||||
final MyUser? user;
|
||||
|
||||
const AuthenticationState._({
|
||||
this.status = AuthenticationStatus.unknown,
|
||||
@@ -13,7 +13,7 @@ class AuthenticationState extends Equatable {
|
||||
|
||||
const AuthenticationState.unknown() : this._();
|
||||
|
||||
const AuthenticationState.authenticated(User user)
|
||||
const AuthenticationState.authenticated(MyUser user)
|
||||
: this._(status: AuthenticationStatus.authenticated, user: user);
|
||||
|
||||
const AuthenticationState.unauthenticated()
|
||||
|
||||
@@ -1,3 +1,6 @@
|
||||
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';
|
||||
@@ -11,16 +14,62 @@ class MyUserBloc extends Bloc<MyUserEvent, MyUserState> {
|
||||
MyUserBloc({required UserRepository myUserRepository})
|
||||
: _userRepository = myUserRepository,
|
||||
super(const MyUserState.loading()) {
|
||||
on<GetMyUser>(_onGetMyUser);
|
||||
_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<UserChanged>(_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<GetMyUser>(_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 _onGetMyUser(GetMyUser event, Emitter<MyUserState> emit) async {
|
||||
emit(const MyUserState.loading());
|
||||
try {
|
||||
MyUser myUser = await _userRepository.getMyUser(event.myUserId);
|
||||
emit(MyUserState.success(myUser));
|
||||
} catch (e) {
|
||||
void _onUserChanged(UserChanged event, Emitter<MyUserState> 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<MyUserState> 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());
|
||||
// }
|
||||
// }
|
||||
}
|
||||
|
||||
@@ -4,14 +4,23 @@ abstract class MyUserEvent extends Equatable {
|
||||
const MyUserEvent();
|
||||
|
||||
@override
|
||||
List<Object> get props => [];
|
||||
List<Object?> get props => [];
|
||||
}
|
||||
|
||||
class GetMyUser extends MyUserEvent {
|
||||
final String myUserId;
|
||||
// class GetMyUser extends MyUserEvent {
|
||||
// final String myUserId;
|
||||
|
||||
const GetMyUser({required this.myUserId});
|
||||
// const GetMyUser({required this.myUserId});
|
||||
|
||||
// @override
|
||||
// List<Object> get props => [myUserId];
|
||||
// }
|
||||
|
||||
class UserChanged extends MyUserEvent {
|
||||
final MyUser? user;
|
||||
|
||||
const UserChanged({required this.user});
|
||||
|
||||
@override
|
||||
List<Object> get props => [myUserId];
|
||||
List<Object?> get props => [user];
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user