Files
syncrow-web/lib/utils/app_routes.dart

63 lines
2.4 KiB
Dart

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(),
),
],
);
}