import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:go_router/go_router.dart'; import 'package:pyramid/features/auth/login_notifier.dart'; import 'package:pyramid/features/auth/login_page.dart'; import 'package:pyramid/features/chat/chat_page.dart'; import 'package:pyramid/features/rooms/rooms_page.dart'; import 'package:pyramid/features/settings/settings_page.dart'; import 'package:pyramid/layout/shell_page.dart'; final routerProvider = Provider((ref) { final isLoggedIn = ref.watch(isLoggedInProvider); return GoRouter( initialLocation: '/rooms', redirect: (context, state) { final loggingIn = state.matchedLocation == '/login'; if (!isLoggedIn && !loggingIn) return '/login'; if (isLoggedIn && loggingIn) return '/rooms'; return null; }, routes: [ GoRoute( path: '/login', builder: (context, state) => const LoginPage(), ), ShellRoute( builder: (context, state, child) => ShellPage(child: child), routes: [ GoRoute( path: '/rooms', builder: (context, state) => const RoomsPage(), ), GoRoute( path: '/chat/:roomId', builder: (context, state) => ChatPage(roomId: state.pathParameters['roomId']!), ), GoRoute( path: '/settings', builder: (context, state) => const SettingsPage(), ), ], ), ], ); });