22
33import 'package:azt/features/auth/domain/entities/app_user.dart' ;
44import 'package:azt/features/auth/domain/repos/auth_repo.dart' ;
5+ import 'package:azt/features/auth/domain/repos/user_repo.dart' ;
56import 'package:azt/features/auth/presentation/cubits/auth_states.dart' ;
67import 'package:flutter_bloc/flutter_bloc.dart' ;
7-
8+ import 'package:logger/logger.dart' ;
89class AuthCubit extends Cubit <AuthState >{
910 final AuthRepo authRepo;
11+ final UserRepo userRepo;
12+ final logger = Logger ();
1013 AppUser ? _currentUser;
11-
12- AuthCubit ({required this .authRepo}) : super (AuthInitial ());
14+ String ? _pendingUserName;
15+ AuthCubit ({required this .authRepo, required this .userRepo }) : super (AuthInitial ());
1316
1417 //get current user
1518 AppUser ? get currentUser => _currentUser;
@@ -25,6 +28,16 @@ class AuthCubit extends Cubit<AuthState>{
2528 if (user!= null ){
2629 _currentUser = user;
2730 if (user.emailVerified){
31+ bool status = await userRepo.checkIfUserExists (user.uid);
32+ logger.d ("Current status is $status \n from checkAuth()" );
33+ if (! status){//If user does not exist on CFS then create user
34+
35+ userRepo.saveUserData (
36+ user.uid,
37+ user.email,
38+ user.name,
39+ );
40+ }
2841 emit (Authenticated (user));
2942 }
3043 else {
@@ -67,6 +80,7 @@ class AuthCubit extends Cubit<AuthState>{
6780 authRepo.sendEmailVerification ();
6881 if (user != null ){
6982 _currentUser = user;
83+ _pendingUserName = name;
7084 if (user.emailVerified){
7185 emit (Authenticated (user));
7286 }
@@ -160,6 +174,21 @@ Future<void> checkEmailVerification() async {
160174 final updatedUser = await authRepo.getCurrentUser ();
161175
162176 if (updatedUser? .emailVerified ?? false ) {
177+ bool status = await userRepo.checkIfUserExists (updatedUser! .uid);
178+ if (! status){
179+ logger.d ("Creating user in Firestore after email verification from checkEmailVerification:authCubit" );
180+ final userName = _pendingUserName ?? updatedUser.name;
181+ await userRepo.saveUserData (
182+ user.uid,
183+ user.email,
184+ userName,
185+ );
186+ _pendingUserName = null ;
187+ logger.d ("Firestore user created successfully" );
188+ }
189+ else {
190+ logger.d ("User already exists in Firestore" );
191+ }
163192 emit (Authenticated (updatedUser! ));
164193 } else {
165194 emit (EmailNotVerified (updatedUser! ));
0 commit comments