feat: Matrix login flow with auth guard and client provider

This commit is contained in:
Bernd Steckmeister
2026-04-19 19:56:12 +02:00
parent 062b8b6a94
commit 883d24479b
5 changed files with 307 additions and 3 deletions
+16 -2
View File
@@ -1,14 +1,28 @@
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:go_router/go_router.dart';
import 'package:pyramid/layout/shell_page.dart';
import 'package:pyramid/features/rooms/rooms_page.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<GoRouter>((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: [