diff --git a/lib/main.dart b/lib/main.dart index a50d2615..071c7433 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,22 +1,9 @@ import 'package:firebase_core/firebase_core.dart'; -import 'package:flutter/gestures.dart'; import 'package:flutter/material.dart'; -import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_dotenv/flutter_dotenv.dart'; -import 'package:go_router/go_router.dart'; import 'package:syncrow_web/firebase_options.dart'; -import 'package:syncrow_web/pages/auth/bloc/auth_bloc.dart'; -import 'package:syncrow_web/pages/home/bloc/home_bloc.dart'; -import 'package:syncrow_web/pages/home/bloc/home_event.dart'; -import 'package:syncrow_web/pages/routines/bloc/create_routine_bloc/create_routine_bloc.dart'; -import 'package:syncrow_web/pages/routines/bloc/routine_bloc/routine_bloc.dart'; -import 'package:syncrow_web/pages/space_tree/bloc/space_tree_bloc.dart'; -import 'package:syncrow_web/pages/visitor_password/bloc/visitor_password_bloc.dart'; import 'package:syncrow_web/services/locator.dart'; -import 'package:syncrow_web/utils/app_routes.dart'; -import 'package:syncrow_web/utils/constants/routes_const.dart'; -import 'package:syncrow_web/utils/navigation_service.dart'; -import 'package:syncrow_web/utils/theme/theme.dart'; +import 'package:syncrow_web/syncrow_app.dart'; Future main() async { try { @@ -33,59 +20,5 @@ Future main() async { ); initialSetup(); } catch (_) {} - runApp(MyApp()); -} - -class MyApp extends StatelessWidget { - MyApp({super.key}); - - final GoRouter _router = GoRouter( - initialLocation: RoutesConst.auth, - routes: AppRoutes.getRoutes(), - redirect: (context, state) async { - final checkToken = await AuthBloc.getTokenAndValidate(); - final loggedIn = checkToken == 'Success'; - final goingToLogin = state.uri.toString() == RoutesConst.auth; - - if (!loggedIn && !goingToLogin) return RoutesConst.auth; - if (loggedIn && goingToLogin) return RoutesConst.home; - - return null; - }, - ); - - @override - Widget build(BuildContext context) { - return MultiBlocProvider( - providers: [ - BlocProvider( - create: (context) => CreateRoutineBloc(), - ), - BlocProvider(create: (context) => HomeBloc()..add(const FetchUserInfo())), - BlocProvider( - create: (context) => VisitorPasswordBloc(), - ), - BlocProvider( - create: (context) => RoutineBloc(), - ), - BlocProvider( - create: (context) => SpaceTreeBloc(), - ), - ], - child: MaterialApp.router( - debugShowCheckedModeBanner: false, - scrollBehavior: const MaterialScrollBehavior().copyWith( - dragDevices: { - PointerDeviceKind.mouse, - PointerDeviceKind.touch, - PointerDeviceKind.stylus, - PointerDeviceKind.unknown, - }, - ), - key: NavigationService.navigatorKey, - // scaffoldMessengerKey: NavigationService.snackbarKey, - theme: myTheme, - routerConfig: _router, - )); - } + runApp(const SyncrowApp()); } diff --git a/lib/main_dev.dart b/lib/main_dev.dart index 284e2f30..49df196f 100644 --- a/lib/main_dev.dart +++ b/lib/main_dev.dart @@ -1,22 +1,9 @@ import 'package:firebase_core/firebase_core.dart'; -import 'package:flutter/gestures.dart'; import 'package:flutter/material.dart'; -import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_dotenv/flutter_dotenv.dart'; -import 'package:go_router/go_router.dart'; import 'package:syncrow_web/firebase_options.dart'; -import 'package:syncrow_web/pages/auth/bloc/auth_bloc.dart'; -import 'package:syncrow_web/pages/home/bloc/home_bloc.dart'; -import 'package:syncrow_web/pages/home/bloc/home_event.dart'; -import 'package:syncrow_web/pages/routines/bloc/create_routine_bloc/create_routine_bloc.dart'; -import 'package:syncrow_web/pages/routines/bloc/routine_bloc/routine_bloc.dart'; -import 'package:syncrow_web/pages/space_tree/bloc/space_tree_bloc.dart'; -import 'package:syncrow_web/pages/visitor_password/bloc/visitor_password_bloc.dart'; import 'package:syncrow_web/services/locator.dart'; -import 'package:syncrow_web/utils/app_routes.dart'; -import 'package:syncrow_web/utils/constants/routes_const.dart'; -import 'package:syncrow_web/utils/navigation_service.dart'; -import 'package:syncrow_web/utils/theme/theme.dart'; +import 'package:syncrow_web/syncrow_app.dart'; Future main() async { try { @@ -33,59 +20,5 @@ Future main() async { ); initialSetup(); } catch (_) {} - runApp(MyApp()); -} - -class MyApp extends StatelessWidget { - MyApp({super.key}); - - final GoRouter _router = GoRouter( - initialLocation: RoutesConst.auth, - routes: AppRoutes.getRoutes(), - redirect: (context, state) async { - final checkToken = await AuthBloc.getTokenAndValidate(); - final loggedIn = checkToken == 'Success'; - final goingToLogin = state.uri.toString() == RoutesConst.auth; - - if (!loggedIn && !goingToLogin) return RoutesConst.auth; - if (loggedIn && goingToLogin) return RoutesConst.home; - - return null; - }, - ); - - @override - Widget build(BuildContext context) { - return MultiBlocProvider( - providers: [ - BlocProvider( - create: (context) => CreateRoutineBloc(), - ), - BlocProvider(create: (context) => HomeBloc()..add(const FetchUserInfo())), - BlocProvider( - create: (context) => VisitorPasswordBloc(), - ), - BlocProvider( - create: (context) => RoutineBloc(), - ), - BlocProvider( - create: (context) => SpaceTreeBloc(), - ), - ], - child: MaterialApp.router( - debugShowCheckedModeBanner: false, - scrollBehavior: const MaterialScrollBehavior().copyWith( - dragDevices: { - PointerDeviceKind.mouse, - PointerDeviceKind.touch, - PointerDeviceKind.stylus, - PointerDeviceKind.unknown, - }, - ), - key: NavigationService.navigatorKey, - // scaffoldMessengerKey: NavigationService.snackbarKey, - theme: myTheme, - routerConfig: _router, - )); - } + runApp(const SyncrowApp()); } diff --git a/lib/main_staging.dart b/lib/main_staging.dart index 6389c53a..6e0de3e1 100644 --- a/lib/main_staging.dart +++ b/lib/main_staging.dart @@ -1,26 +1,16 @@ import 'package:firebase_core/firebase_core.dart'; -import 'package:flutter/gestures.dart'; import 'package:flutter/material.dart'; -import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_dotenv/flutter_dotenv.dart'; -import 'package:go_router/go_router.dart'; import 'package:syncrow_web/firebase_options.dart'; -import 'package:syncrow_web/pages/auth/bloc/auth_bloc.dart'; -import 'package:syncrow_web/pages/home/bloc/home_bloc.dart'; -import 'package:syncrow_web/pages/home/bloc/home_event.dart'; -import 'package:syncrow_web/pages/routines/bloc/create_routine_bloc/create_routine_bloc.dart'; -import 'package:syncrow_web/pages/routines/bloc/routine_bloc/routine_bloc.dart'; -import 'package:syncrow_web/pages/space_tree/bloc/space_tree_bloc.dart'; -import 'package:syncrow_web/pages/visitor_password/bloc/visitor_password_bloc.dart'; import 'package:syncrow_web/services/locator.dart'; -import 'package:syncrow_web/utils/app_routes.dart'; -import 'package:syncrow_web/utils/constants/routes_const.dart'; -import 'package:syncrow_web/utils/navigation_service.dart'; -import 'package:syncrow_web/utils/theme/theme.dart'; +import 'package:syncrow_web/syncrow_app.dart'; Future main() async { try { - const environment = String.fromEnvironment('FLAVOR', defaultValue: 'staging'); + const environment = String.fromEnvironment( + 'FLAVOR', + defaultValue: 'staging', + ); await dotenv.load(fileName: '.env.$environment'); WidgetsFlutterBinding.ensureInitialized(); await Firebase.initializeApp( @@ -30,59 +20,5 @@ Future main() async { ); initialSetup(); } catch (_) {} - runApp(MyApp()); -} - -class MyApp extends StatelessWidget { - MyApp({super.key}); - - final GoRouter _router = GoRouter( - initialLocation: RoutesConst.auth, - routes: AppRoutes.getRoutes(), - redirect: (context, state) async { - final checkToken = await AuthBloc.getTokenAndValidate(); - final loggedIn = checkToken == 'Success'; - final goingToLogin = state.uri.toString() == RoutesConst.auth; - - if (!loggedIn && !goingToLogin) return RoutesConst.auth; - if (loggedIn && goingToLogin) return RoutesConst.home; - - return null; - }, - ); - - @override - Widget build(BuildContext context) { - return MultiBlocProvider( - providers: [ - BlocProvider( - create: (context) => CreateRoutineBloc(), - ), - BlocProvider(create: (context) => HomeBloc()..add(const FetchUserInfo())), - BlocProvider( - create: (context) => VisitorPasswordBloc(), - ), - BlocProvider( - create: (context) => RoutineBloc(), - ), - BlocProvider( - create: (context) => SpaceTreeBloc(), - ), - ], - child: MaterialApp.router( - debugShowCheckedModeBanner: false, - scrollBehavior: const MaterialScrollBehavior().copyWith( - dragDevices: { - PointerDeviceKind.mouse, - PointerDeviceKind.touch, - PointerDeviceKind.stylus, - PointerDeviceKind.unknown, - }, - ), - key: NavigationService.navigatorKey, - // scaffoldMessengerKey: NavigationService.snackbarKey, - theme: myTheme, - routerConfig: _router, - )); - } + runApp(const SyncrowApp()); } diff --git a/lib/services/locator.dart b/lib/services/locator.dart index 055deb05..83fa5f56 100644 --- a/lib/services/locator.dart +++ b/lib/services/locator.dart @@ -4,9 +4,7 @@ import 'package:syncrow_web/services/api/http_interceptor.dart'; import 'package:syncrow_web/services/api/http_service.dart'; final GetIt serviceLocator = GetIt.instance; -//setupLocator() // to search for dependency injection in flutter -initialSetup() { +void initialSetup() { serviceLocator.registerSingleton(HTTPInterceptor()); - //Base classes serviceLocator.registerSingleton(HTTPService.setupDioClient()); } diff --git a/lib/syncrow_app.dart b/lib/syncrow_app.dart new file mode 100644 index 00000000..54df3351 --- /dev/null +++ b/lib/syncrow_app.dart @@ -0,0 +1,53 @@ +import 'package:flutter/gestures.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:syncrow_web/pages/home/bloc/home_bloc.dart'; +import 'package:syncrow_web/pages/home/bloc/home_event.dart'; +import 'package:syncrow_web/pages/routines/bloc/create_routine_bloc/create_routine_bloc.dart'; +import 'package:syncrow_web/pages/routines/bloc/routine_bloc/routine_bloc.dart'; +import 'package:syncrow_web/pages/space_tree/bloc/space_tree_bloc.dart'; +import 'package:syncrow_web/pages/visitor_password/bloc/visitor_password_bloc.dart'; +import 'package:syncrow_web/utils/app_routes.dart'; +import 'package:syncrow_web/utils/navigation_service.dart'; +import 'package:syncrow_web/utils/theme/theme.dart'; + +class SyncrowApp extends StatelessWidget { + const SyncrowApp({super.key}); + + @override + Widget build(BuildContext context) { + return MultiBlocProvider( + providers: [ + BlocProvider( + create: (context) => CreateRoutineBloc(), + ), + BlocProvider( + create: (context) => HomeBloc()..add(const FetchUserInfo()), + ), + BlocProvider( + create: (context) => VisitorPasswordBloc(), + ), + BlocProvider( + create: (context) => RoutineBloc(), + ), + BlocProvider( + create: (context) => SpaceTreeBloc(), + ), + ], + child: MaterialApp.router( + debugShowCheckedModeBanner: false, + scrollBehavior: const MaterialScrollBehavior().copyWith( + dragDevices: { + PointerDeviceKind.mouse, + PointerDeviceKind.touch, + PointerDeviceKind.stylus, + PointerDeviceKind.unknown, + }, + ), + key: NavigationService.navigatorKey, + theme: myTheme, + routerConfig: AppRoutes.router, + ), + ); + } +} diff --git a/lib/utils/app_routes.dart b/lib/utils/app_routes.dart index 263bdbd6..aea52478 100644 --- a/lib/utils/app_routes.dart +++ b/lib/utils/app_routes.dart @@ -1,17 +1,31 @@ import 'package:go_router/go_router.dart'; import 'package:syncrow_web/pages/access_management/view/access_management.dart'; import 'package:syncrow_web/pages/analytics/modules/analytics/views/analytics_page.dart'; +import 'package:syncrow_web/pages/auth/bloc/auth_bloc.dart'; import 'package:syncrow_web/pages/auth/view/login_page.dart'; import 'package:syncrow_web/pages/device_managment/all_devices/view/device_managment_page.dart'; import 'package:syncrow_web/pages/home/view/home_page.dart'; import 'package:syncrow_web/pages/roles_and_permission/view/roles_and_permission_page.dart'; -import 'package:syncrow_web/pages/spaces_management/all_spaces/view/spaces_management_page.dart'; +import 'package:syncrow_web/pages/space_management_v2/main_module/views/space_management_page.dart'; import 'package:syncrow_web/pages/visitor_password/view/visitor_password_dialog.dart'; import 'package:syncrow_web/utils/constants/routes_const.dart'; -class AppRoutes { - static List getRoutes() { - return [ +abstract final class AppRoutes { + const AppRoutes._(); + + static final GoRouter router = GoRouter( + initialLocation: RoutesConst.auth, + redirect: (context, state) async { + final checkToken = await AuthBloc.getTokenAndValidate(); + final loggedIn = checkToken == 'Success'; + final goingToLogin = state.uri.toString() == RoutesConst.auth; + + if (!loggedIn && !goingToLogin) return RoutesConst.auth; + if (loggedIn && goingToLogin) return RoutesConst.home; + + return null; + }, + routes: [ GoRoute( path: RoutesConst.auth, builder: (context, state) => const LoginPage(), @@ -43,6 +57,6 @@ class AppRoutes { name: 'analytics', builder: (context, state) => const AnalyticsPage(), ), - ]; - } + ], + ); }