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
+30
View File
@@ -0,0 +1,30 @@
import 'dart:io';
import 'package:flutter/foundation.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
import 'package:matrix/matrix.dart';
import 'package:path/path.dart' as p;
import 'package:path_provider/path_provider.dart';
import 'package:sqflite_common_ffi/sqflite_ffi.dart';
final matrixClientProvider = FutureProvider<Client>((ref) async {
if (!kIsWeb && (Platform.isWindows || Platform.isLinux)) {
sqfliteFfiInit();
databaseFactory = databaseFactoryFfi;
}
final appDir = await getApplicationSupportDirectory();
final dbPath = p.join(appDir.path, 'pyramid.sqlite');
final db = await databaseFactoryFfi.openDatabase(dbPath);
final sdkDb = await MatrixSdkDatabase.init('pyramid', database: db);
final client = Client('Pyramid', database: sdkDb);
await client.init();
return client;
});
final secureStorageProvider = Provider<FlutterSecureStorage>((ref) {
return const FlutterSecureStorage();
});