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/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'; 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(), ), GoRoute( path: RoutesConst.home, builder: (context, state) => const HomePage(), ), GoRoute( path: RoutesConst.visitorPassword, builder: (context, state) => const VisitorPasswordDialog(), ), GoRoute( path: RoutesConst.accessManagementPage, builder: (context, state) => const AccessManagementPage(), ), GoRoute( path: RoutesConst.deviceManagementPage, builder: (context, state) => const DeviceManagementPage(), ), GoRoute( path: RoutesConst.spacesManagementPage, builder: (context, state) => const SpaceManagementPage()), GoRoute( path: RoutesConst.rolesAndPermissions, builder: (context, state) => const RolesAndPermissionPage()), GoRoute( path: RoutesConst.analytics, name: 'analytics', builder: (context, state) => const AnalyticsPage(), ), ], ); }