From 1901c091229c2add80e2506af490717fb7e91478 Mon Sep 17 00:00:00 2001 From: cp-sneha-s Date: Fri, 5 Apr 2024 16:13:47 +0530 Subject: [PATCH] Setup CI/CD for android build --- lib/data/l10n/app_en.arb | 1 + lib/data/services/account_service.dart | 18 ++++++++++++++++++ lib/ui/sign_in/bloc/sign_in_view_bloc.dart | 9 +++++++-- lib/ui/sign_in/sign_in_screen.dart | 2 +- 4 files changed, 27 insertions(+), 3 deletions(-) diff --git a/lib/data/l10n/app_en.arb b/lib/data/l10n/app_en.arb index e9d27cab..39c1621a 100644 --- a/lib/data/l10n/app_en.arb +++ b/lib/data/l10n/app_en.arb @@ -427,6 +427,7 @@ "add_member_employee_exists_error": "Member already exists!", "leave_already_applied_error_message": "Leave request has been already applied!", "provide_required_information": "Please provide the required information to continue", + "apple_sign_in_error_message": "Oops! It looks like you haven't granted permission to access your email. Please check and grant permission to access your email address", "sign_out_alert": "Are you sure you want to sign out?", diff --git a/lib/data/services/account_service.dart b/lib/data/services/account_service.dart index ae16a98e..7da2d710 100644 --- a/lib/data/services/account_service.dart +++ b/lib/data/services/account_service.dart @@ -36,6 +36,24 @@ class AccountService { return user; } + Future getAppleUser(firebase_auth.User authData) async { + final userDataDoc = await _accountsDb.doc(authData.uid).get(); + final Account? userData = userDataDoc.data(); + if (userData != null) { + await _setUserSession(authData.uid); + return userData; + } else if(authData.email != null ){ + final user = Account( + uid: authData.uid, + email: authData.email!, + name: authData.displayName); + await _accountsDb.doc(authData.uid).set(user); + await _setUserSession(authData.uid); + + return user; + } + } + Future _setUserSession(String uid) async { final Session? session = await deviceInfoProvider.getDeviceInfo(); if (session != null) { diff --git a/lib/ui/sign_in/bloc/sign_in_view_bloc.dart b/lib/ui/sign_in/bloc/sign_in_view_bloc.dart index 2cdf50c1..8cf1bd15 100644 --- a/lib/ui/sign_in/bloc/sign_in_view_bloc.dart +++ b/lib/ui/sign_in/bloc/sign_in_view_bloc.dart @@ -50,14 +50,19 @@ class SignInBloc extends Bloc { emit(state.copyWith(appleSignInLoading: true)); firebase_auth.User? authUser = await _authService.signInWithApple(); if (authUser != null) { - final Account user = await _accountService.getUser(authUser); + final Account? user = await _accountService.getAppleUser(authUser); + if(user == null) { + emit(state.copyWith( + appleSignInLoading: false, error:"Please grant permission to access your email address")); + return; + } await _userStateNotifier.setUser(user); emit(state.copyWith(appleSignInLoading: false, signInSuccess: true)); } else { emit(state.copyWith(appleSignInLoading: false)); } } catch(e,stack) { - FirebaseCrashlytics.instance.recordError(e, stack); + FirebaseCrashlytics.instance.recordError(e, stack,reason: 'Apple Sign In Error'); emit(state.copyWith( appleSignInLoading: false, error: somethingWentWrongError)); } diff --git a/lib/ui/sign_in/sign_in_screen.dart b/lib/ui/sign_in/sign_in_screen.dart index b5b73178..cdbdd2ee 100644 --- a/lib/ui/sign_in/sign_in_screen.dart +++ b/lib/ui/sign_in/sign_in_screen.dart @@ -108,7 +108,7 @@ class SignInScreenState extends State { const SizedBox( height: 20, ), - if (kIsWeb || Platform.isIOS) const AppleSignInButton() + if (!kIsWeb && Platform.isIOS) const AppleSignInButton() ], ), ),