generalRoutes top-level property

List generalRoutes
final

Implementation

final generalRoutes = [
  GoRoute(
    parentNavigatorKey: rootNavKey,
    name: Routes.forward.name,
    path: Routes.forward.route,
    redirect: forwardRedirect,
  ),
  GoRoute(
    parentNavigatorKey: rootNavKey,
    name: Routes.intro.name,
    path: Routes.intro.route,
    builder: (context, state) => const IntroPage(),
  ),
  GoRoute(
    parentNavigatorKey: rootNavKey,
    name: Routes.introProfile.name,
    path: Routes.introProfile.route,
    builder: (context, state) => const IntroProfile(),
  ),
  GoRoute(
    parentNavigatorKey: rootNavKey,
    name: Routes.authLogin.name,
    path: Routes.authLogin.route,
    builder: (context, state) => const LoginPage(),
  ),
  GoRoute(
    parentNavigatorKey: rootNavKey,
    name: Routes.forgotPassword.name,
    path: Routes.forgotPassword.route,
    builder: (context, state) => const ForgotPassword(),
  ),
  GoRoute(
    parentNavigatorKey: rootNavKey,
    name: Routes.authRegister.name,
    path: Routes.authRegister.route,
    builder: (context, state) => const RegisterPage(),
  ),
  GoRoute(
    parentNavigatorKey: rootNavKey,
    name: Routes.saveUsername.name,
    path: Routes.saveUsername.route,
    builder: (context, state) =>
        SaveUsernamePage(username: state.uri.queryParameters['username']!),
  ),
  GoRoute(
    parentNavigatorKey: rootNavKey,
    name: Routes.linkEmail.name,
    path: Routes.linkEmail.route,
    builder: (context, state) => LinkEmailPage(),
  ),
  GoRoute(
    parentNavigatorKey: rootNavKey,
    name: Routes.uploadAvatar.name,
    path: Routes.uploadAvatar.route,
    builder: (context, state) => UploadAvatarPage(),
  ),
  GoRoute(
    parentNavigatorKey: rootNavKey,
    name: Routes.analyticsOptIn.name,
    path: Routes.analyticsOptIn.route,
    builder: (context, state) => const AnalyticsOptInPage(),
  ),
  GoRoute(
    parentNavigatorKey: rootNavKey,
    name: Routes.bugReport.name,
    path: Routes.bugReport.route,
    pageBuilder: (context, state) => DialogPage(
      builder: (BuildContext context) => BugReportPage(
        imagePath: state.uri.queryParameters['screenshot'],
        error: state.uri.queryParameters['error'],
        stack: state.uri.queryParameters['stack'],
      ),
    ),
  ),
  GoRoute(
    parentNavigatorKey: rootNavKey,
    name: Routes.fatalFail.name,
    path: Routes.fatalFail.route,
    builder: (context, state) => FatalFailPage(
      error: state.uri.queryParameters['error']!,
      trace: state.uri.queryParameters['trace']!,
    ),
  ),
  GoRoute(
    parentNavigatorKey: rootNavKey,
    name: Routes.quickJump.name,
    path: Routes.quickJump.route,
    pageBuilder: (context, state) => DialogPage(
      builder: (BuildContext context) => const QuickjumpDialog(),
    ),
  ),
  GoRoute(
    name: Routes.createPin.name,
    path: Routes.createPin.route,
    pageBuilder: (context, state) {
      return NoTransitionPage(
        key: state.pageKey,
        child: CreatePinPage(
          initialSelectedSpace: state.uri.queryParameters['spaceId'],
        ),
      );
    },
  ),
  GoRoute(
    parentNavigatorKey: rootNavKey,
    name: Routes.actionCreateSuperInvite.name,
    path: Routes.actionCreateSuperInvite.route,
    pageBuilder: (context, state) {
      return SideSheetPage(
        key: state.pageKey,
        transitionsBuilder: (context, animation, secondaryAnimation, child) {
          return SlideTransition(
            position: Tween(
              begin: const Offset(1, 0),
              end: const Offset(0, 0),
            ).animate(
              animation,
            ),
            child: child,
          );
        },
        child: CreateSuperInviteTokenPage(
          token: state.extra != null ? state.extra as SuperInviteToken : null,
        ),
      );
    },
  ),
  GoRoute(
    parentNavigatorKey: rootNavKey,
    name: Routes.linkChat.name,
    path: Routes.linkChat.route,
    pageBuilder: (context, state) {
      return SideSheetPage(
        key: state.pageKey,
        transitionsBuilder: (context, animation, secondaryAnimation, child) {
          return SlideTransition(
            position: Tween(
              begin: const Offset(1, 0),
              end: const Offset(0, 0),
            ).animate(
              animation,
            ),
            child: child,
          );
        },
        child: LinkRoomPage(
          parentSpaceId: state.pathParameters['spaceId']!,
          pageTitle: 'Link as Space-chat',
          childRoomType: ChildRoomType.chat,
        ),
      );
    },
  ),
  GoRoute(
    parentNavigatorKey: rootNavKey,
    name: Routes.linkSubspace.name,
    path: Routes.linkSubspace.route,
    pageBuilder: (context, state) {
      return SideSheetPage(
        key: state.pageKey,
        transitionsBuilder: (context, animation, secondaryAnimation, child) {
          return SlideTransition(
            position: Tween(
              begin: const Offset(1, 0),
              end: const Offset(0, 0),
            ).animate(
              animation,
            ),
            child: child,
          );
        },
        child: LinkRoomPage(
          parentSpaceId: state.pathParameters['spaceId']!,
          pageTitle: 'Link Sub-Space',
          childRoomType: ChildRoomType.space,
        ),
      );
    },
  ),
  GoRoute(
    parentNavigatorKey: rootNavKey,
    name: Routes.linkRecommended.name,
    path: Routes.linkRecommended.route,
    pageBuilder: (context, state) {
      return SideSheetPage(
        key: state.pageKey,
        transitionsBuilder: (context, animation, secondaryAnimation, child) {
          return SlideTransition(
            position: Tween(
              begin: const Offset(1, 0),
              end: const Offset(0, 0),
            ).animate(
              animation,
            ),
            child: child,
          );
        },
        child: LinkRoomPage(
          parentSpaceId: state.pathParameters['spaceId']!,
          pageTitle: 'Link Recommended-Space',
          childRoomType: ChildRoomType.recommendedSpace,
        ),
      );
    },
  ),
  GoRoute(
    parentNavigatorKey: rootNavKey,
    name: Routes.actionAddUpdate.name,
    path: Routes.actionAddUpdate.route,
    redirect: authGuardRedirect,
    pageBuilder: (context, state) {
      return NoTransitionPage(
        key: state.pageKey,
        child: AddNewsPage(
          initialSelectedSpace: state.uri.queryParameters['spaceId'],
        ),
      );
    },
  ),
  GoRoute(
    parentNavigatorKey: rootNavKey,
    name: Routes.createChat.name,
    path: Routes.createChat.route,
    pageBuilder: (context, state) {
      return context.isLargeScreen
          ? DialogPage(
              barrierDismissible: false,
              builder: (context) => CreateChatPage(
                initialSelectedSpaceId: state.uri.queryParameters['spaceId'],
                initialPage: state.extra as int?,
              ),
            )
          : CustomTransitionPage(
              transitionsBuilder:
                  (context, animation, secondaryAnimation, child) {
                var begin = const Offset(0.0, 1.0);
                var end = Offset.zero;
                var curve = Curves.easeInOut;
                var tween = Tween(begin: begin, end: end)
                    .chain(CurveTween(curve: curve));
                var offsetAnimation = animation.drive(tween);
                return SlideTransition(
                  position: offsetAnimation,
                  child: child,
                );
              },
              child: CreateChatPage(
                initialSelectedSpaceId: state.uri.queryParameters['spaceId'],
                initialPage: state.extra as int?,
              ),
            );
    },
  ),
  GoRoute(
    parentNavigatorKey: rootNavKey,
    name: Routes.fullScreenAvatar.name,
    path: Routes.fullScreenAvatar.route,
    pageBuilder: (context, state) {
      return NoTransitionPage(
        key: state.pageKey,
        child: FullScreenAvatarPage(
          roomId: state.uri.queryParameters['roomId']!,
        ),
      );
    },
  ),
  GoRoute(
    parentNavigatorKey: rootNavKey,
    name: Routes.main.name,
    path: Routes.main.route,
    redirect: (BuildContext context, GoRouterState state) async {
      // we first check if there is a client available for us to use
      final authGuarded = await authGuardRedirect(context, state);
      if (authGuarded != null) {
        return authGuarded;
      }
      if (context.mounted && isDesktop) {
        return Routes.dashboard.route;
      } else {
        return Routes.updates.route;
      }
    },
  ),
];