Add persistence to matrix Client

This commit is contained in:
2023-12-30 16:11:20 +13:00
parent a552c30ba0
commit 128a1bf35f
6 changed files with 41 additions and 18 deletions
+2 -4
View File
@@ -25,11 +25,10 @@ class _LoginPageState extends State<LoginPage> {
});
final provider = Provider.of<ZenithClientProvider>(context, listen: false);
final client = Client("zenith");
try {
await client.checkHomeserver(Uri.parse(serverController.text));
await client.login(
await provider.client.checkHomeserver(Uri.parse(serverController.text));
await provider.client.login(
LoginType.mLoginPassword,
password: passwordController.text,
identifier: AuthenticationUserIdentifier(user: usernameController.text),
@@ -54,7 +53,6 @@ class _LoginPageState extends State<LoginPage> {
});
}
provider.setClient(client);
final prefs = await SharedPreferences.getInstance();
prefs.setString("homeserver", serverController.text);
prefs.setString("username", usernameController.text);
+3 -5
View File
@@ -50,16 +50,14 @@ class _MyHomePageState extends State<MyHomePage> {
if (!mounted) return;
final provider = Provider.of<ZenithClientProvider>(context, listen: false);
final client = Client("zenith");
provider.setClient(client);
setState(() {
showRooms = true;
});
try {
await client.checkHomeserver(Uri.parse(homeserver));
if (!client.isLogged())
await client.login(LoginType.mLoginPassword,
await provider.client.checkHomeserver(Uri.parse(homeserver));
if (!provider.client.isLogged())
await provider.client.login(LoginType.mLoginPassword,
password: password,
identifier: AuthenticationUserIdentifier(user: username));
} catch (error) {
+8 -8
View File
@@ -1,13 +1,13 @@
import 'package:flutter/material.dart';
import 'package:matrix/matrix.dart';
import 'package:path_provider/path_provider.dart';
class ZenithClientProvider extends ChangeNotifier {
late Client _client;
Client get client => _client;
void setClient(Client value) {
_client = value;
notifyListeners();
}
final client = Client("zenith", databaseBuilder: (_) async {
final dir =
await getApplicationSupportDirectory(); // Recommend path_provider package
final db = HiveCollectionsDatabase('matrix_example_chat', dir.path);
await db.open();
return db;
});
}