Skip to content

Commit

Permalink
fix(flutter): user avatar not displaying, and summary declaration was…
Browse files Browse the repository at this point in the history
… skipping (#1240)
  • Loading branch information
LaurentMag authored Jan 19, 2024
1 parent d4ece73 commit 0c0bb0f
Show file tree
Hide file tree
Showing 2 changed files with 48 additions and 33 deletions.
31 changes: 0 additions & 31 deletions yaki_mobile/lib/app_router.dart
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:go_router/go_router.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'package:yaki/data/sources/local/shared_preference.dart';
import 'package:yaki/domain/entities/declaration_status.dart';
import 'package:yaki/presentation/displaydata/declaration_enum.dart';
import 'package:yaki/presentation/displaydata/declaration_summary_enum.dart';
import 'package:yaki/presentation/features/authentication/authentication.dart';
Expand All @@ -13,7 +11,6 @@ import 'package:yaki/presentation/features/teams_declarations_summary/teams_decl
import 'package:yaki/presentation/features/user_declaration_summary/user_declaration_summary.dart';
import 'package:yaki/presentation/features/team_selection/team_selection.dart';
import 'package:yaki/presentation/features/user_declaration_summary/user_declaration_summary_absence.dart';
import 'package:yaki/presentation/state/providers/declaration_provider.dart';
import 'package:yaki/presentation/ui/default/user_default_redirection.dart';
import 'package:yaki/presentation/features/password/forgot_password.dart';
import 'package:yaki/presentation/features/password/change_password.dart';
Expand All @@ -27,34 +24,6 @@ final goRouterProvider = Provider<GoRouter>(
routes: <GoRoute>[
GoRoute(
path: '/',
redirect: (BuildContext context, GoRouterState state) async {
// only redirect if we are on the Splash Screen
if (state.fullPath == '/') {
SharedPreferences prefs = await SharedPreferences.getInstance();

final declaration = ref.watch(declarationProvider);

bool isLoggedIn = prefs.containsKey('token');
final latestDeclarationStatus =
declaration.latestDeclarationStatus;

if (latestDeclarationStatus == LatestDeclarationStatus.unknown) {
return null;
}

if (isLoggedIn &&
latestDeclarationStatus == LatestDeclarationStatus.declared) {
return '/teams-declaration-summary';
} else if (isLoggedIn &&
latestDeclarationStatus ==
LatestDeclarationStatus.notDeclared) {
return '/team-selection';
} else {
return '/authentication';
}
}
return null;
},
builder: (context, state) => const PopScope(
canPop: false,
child: SplashScreen(),
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,59 @@
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:yaki/domain/entities/declaration_status.dart';
import 'package:yaki/presentation/state/providers/avatar_provider.dart';
import 'package:yaki/presentation/state/providers/declaration_provider.dart';
import 'package:yaki/presentation/styles/color.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'package:go_router/go_router.dart';

class SplashScreen extends ConsumerWidget {
class SplashScreen extends ConsumerStatefulWidget {
const SplashScreen({Key? key}) : super(key: key);

@override
Widget build(BuildContext context, WidgetRef ref) {
SplashScreenState createState() => SplashScreenState();
}

class SplashScreenState extends ConsumerState<SplashScreen> {
@override
void initState() {
super.initState();
isLogin();
}

void isLogin() async {
SharedPreferences prefs = await SharedPreferences.getInstance();

// get if user is declared
await ref.read(declarationProvider.notifier).getLatestDeclaration();
final bool isDeclared =
ref.read(declarationProvider).latestDeclarationStatus ==
LatestDeclarationStatus.declared;

bool isLoggedIn = prefs.containsKey('token');

if (isLoggedIn) {
await ref.read(avatarProvider.notifier).getAvatar();
}

if (isLoggedIn && isDeclared) {
Future.delayed(const Duration(milliseconds: 100), () {
context.go('/teams-declaration-summary');
});
} else if (isLoggedIn) {
Future.delayed(const Duration(milliseconds: 100), () {
context.go('/team-selection');
});
} else {
Future.delayed(const Duration(milliseconds: 100), () {
context.go('/authentication');
});
}
}

@override
Widget build(BuildContext context) {
return Scaffold(
body: SafeArea(
child: Container(
Expand Down

0 comments on commit 0c0bb0f

Please sign in to comment.