Skip to content

Commit 7f6d9a5

Browse files
authored
Allow user to add email (#96)
* Allow user to add email * Update ruby version
1 parent 702cffe commit 7f6d9a5

20 files changed

+712
-81
lines changed

.github/workflows/android_deploy.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ jobs:
3232
- name: Set up ruby env
3333
uses: ruby/setup-ruby@v1
3434
with:
35-
ruby-version: 2.7.2
35+
ruby-version: 3.3.0
3636
bundler-cache: true
3737

3838
- name: Retrieve the secret and decode it to a file

lib/app_router.dart

+14-1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import 'package:projectunity/ui/admin/forms/form_list/form_list_screen.dart';
55
import 'package:projectunity/ui/admin/leaves/leave_screen/admin_leaves_screen.dart';
66
import 'package:projectunity/ui/shared/dashboard/navigation_item.dart';
77
import 'package:projectunity/ui/shared/profile/view_profile/view_profle_screen.dart';
8+
import 'package:projectunity/ui/sign_in/setup_profile/setup_profile_screen.dart';
89
import 'package:projectunity/ui/sign_in/sign_in_screen.dart';
910
import 'package:projectunity/ui/user/leaves/detail/user_leave_detail_screen.dart';
1011
import 'package:projectunity/ui/user/leaves/leaves_screen/user_leave_screen.dart';
@@ -30,6 +31,7 @@ import 'ui/user/leaves/apply_leave/apply_leave_screen.dart';
3031
import 'ui/user/members/detail/user_employee_detail_screen.dart';
3132
import 'ui/user/members/members_screen/user_members_screen.dart';
3233
import 'ui/widget/error/page_not_found_screen.dart';
34+
import 'package:firebase_auth/firebase_auth.dart' as firebase_auth;
3335

3436
@Injectable()
3537
class AppRouter {
@@ -57,6 +59,15 @@ class AppRouter {
5759
: Routes.userHome,
5860
navigatorKey: _rootNavigatorKey,
5961
routes: [
62+
GoRoute(
63+
parentNavigatorKey: _rootNavigatorKey,
64+
path: Routes.setupProfile,
65+
name: Routes.setupProfile,
66+
pageBuilder: (context, state) {
67+
final firebase_auth.User user =
68+
state.extra as firebase_auth.User;
69+
return CupertinoPage(child: SetUpProfilePage(user: user));
70+
}),
6071
GoRoute(
6172
parentNavigatorKey: _rootNavigatorKey,
6273
path: Routes.login,
@@ -370,8 +381,9 @@ class AppRouter {
370381
redirect: (context, GoRouterState state) {
371382
final location = state.matchedLocation;
372383
final loggingIn = location == Routes.login;
384+
final setupProfile = location == Routes.setupProfile;
373385
if (_userManager.state == UserState.unauthenticated) {
374-
return loggingIn ? null : Routes.login;
386+
return loggingIn || setupProfile ? null : Routes.login;
375387
}
376388
if (_userManager.state == UserState.authenticated &&
377389
!location.contains(Routes.joinSpace)) {
@@ -410,6 +422,7 @@ abstract class Routes {
410422
static const login = '/login';
411423
static const joinSpace = '/spaces';
412424
static const createSpace = 'create-space';
425+
static const setupProfile = '/setup-profile';
413426

414427
static const adminHome = '/admin/home';
415428
static const inviteMember = 'invite';

lib/data/di/service_locator.config.dart

+76-70
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/data/l10n/app_en.arb

+2
Original file line numberDiff line numberDiff line change
@@ -430,6 +430,8 @@
430430
"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",
431431

432432
"sign_out_alert": "Are you sure you want to sign out?",
433+
"setup_profile_title": "Setup Profile",
434+
"submit_button_tag": "Submit",
433435

434436
"deactivate_user_account_alert": "Are you sure you want to deactivate {username}'s account? This action cannot be undone.",
435437
"@deactivate_user_account_alert": {

lib/data/services/account_service.dart

+5
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,11 @@ class AccountService {
5454
return null;
5555
}
5656

57+
Future<void> setUserAccount(Account user) async {
58+
await _accountsDb.doc(user.uid).set(user);
59+
await _setUserSession(user.uid);
60+
}
61+
5762
Future<void> _setUserSession(String uid) async {
5863
final Session? session = await deviceInfoProvider.getDeviceInfo();
5964
if (session != null) {

lib/data/services/auth_service.dart

-1
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,6 @@ class AuthService {
103103
credential = await firebase_auth.FirebaseAuth.instance
104104
.signInWithProvider(appleProvider);
105105
}
106-
107106
return credential.user;
108107
}
109108

lib/ui/sign_in/bloc/sign_in_view_bloc.dart

+3-1
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,9 @@ class SignInBloc extends Bloc<SignInEvent, SignInState> {
5454
final Account? user = await _accountService.getAppleUser(authUser);
5555
if (user == null) {
5656
emit(state.copyWith(
57-
appleSignInLoading: false, error: appleSigninError));
57+
appleSignInLoading: false,
58+
error: appleSigninError,
59+
firebaseAuthUser: authUser));
5860
return;
5961
}
6062
await _userStateNotifier.setUser(user);

lib/ui/sign_in/bloc/sign_in_view_state.dart

+1
Original file line numberDiff line numberDiff line change
@@ -9,5 +9,6 @@ class SignInState with _$SignInState {
99
@Default(false) googleSignInLoading,
1010
@Default(false) appleSignInLoading,
1111
@Default(false) signInSuccess,
12+
Object? firebaseAuthUser,
1213
String? error}) = _SignInState;
1314
}

0 commit comments

Comments
 (0)