auth_cubit.dart 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. import 'package:flutter/cupertino.dart';
  2. import 'package:flutter_bloc/flutter_bloc.dart';
  3. import 'package:youtube/data/models/user_model.dart';
  4. import '../../../data/api/auth_api.dart';
  5. import 'auth_state.dart';
  6. class AuthCubit extends Cubit<AuthState> {
  7. AuthCubit() : super(AuthInitial());
  8. static AuthCubit get(context) => BlocProvider.of(context);
  9. late UserModel currentUser;
  10. final _authApi = AuthApi();
  11. void login({required String email, required String password}) async {
  12. emit(LoadingLoginState());
  13. _authApi.login(email: email, password: password).then((value){
  14. debugPrint(value.user!.email);
  15. checkUserExistInFirebase(uId: value.user!.uid);
  16. }).catchError((onError){
  17. emit(ErrorLoginState(onError.toString()));
  18. });
  19. }
  20. void register(
  21. {required String email,
  22. required String password,
  23. required String name}) async {
  24. emit(LoadingRegisterState());
  25. _authApi.register(email: email, password: password, name: name).then((value){
  26. createUser(
  27. name: name,
  28. email: email,
  29. uId: value.user!.uid,
  30. );
  31. }).catchError((onError){
  32. emit(ErrorRegisterState(onError.toString()));
  33. });
  34. }
  35. void checkUserExistInFirebase({required String uId}) {
  36. _authApi.checkUserExistInFirebase(uId: uId).then((user) {
  37. if (user.exists) {
  38. currentUser = UserModel.fromJsonMap(map: user.data()!, uId: uId);
  39. emit(SuccessLoginState(uId));
  40. } else {
  41. emit(ErrorLoginState('Account not exist'));
  42. }
  43. }).catchError((onError){
  44. emit(ErrorLoginState(onError.toString()));
  45. });
  46. }
  47. void getUserData({required String uId}) {
  48. if (uId.isNotEmpty) {
  49. emit(LoadingGetUserDataState());
  50. _authApi.getUserData(uId: uId).then((value){
  51. if (value.exists) {
  52. currentUser =
  53. UserModel.fromJsonMap(map: value.data()!, uId: value.id);
  54. } else {
  55. emit(ErrorGetUserDataState('User not found'));
  56. }
  57. emit(SuccessGetUserDataState());
  58. }).catchError((onError){
  59. emit(ErrorGetUserDataState(onError.toString()));
  60. });
  61. }
  62. }
  63. void createUser(
  64. {required String name, required String email, required String uId}) {
  65. UserModel user = UserModel.resister(
  66. name: name, id: uId, email: email, avatar: 'https://i.pravatar.cc/300',busy: false);
  67. _authApi.createUser(user: user).then((value) {
  68. currentUser = user;
  69. emit(SuccessRegisterState(uId));
  70. }).catchError((onError){
  71. emit(ErrorRegisterState(onError.toString()));
  72. });
  73. }
  74. }