From a6306ceddc1b26b37f2ac6cbb34f379092647266 Mon Sep 17 00:00:00 2001 From: Brandon Presley Date: Fri, 29 Dec 2023 09:20:50 +1300 Subject: [PATCH] List rooms in chats.dart --- lib/chats.dart | 28 ++++++++++++---------------- lib/login.dart | 1 - lib/zenith_client_provider.dart | 23 +++++++++++++---------- 3 files changed, 25 insertions(+), 27 deletions(-) diff --git a/lib/chats.dart b/lib/chats.dart index a19b3a5..9e046b7 100644 --- a/lib/chats.dart +++ b/lib/chats.dart @@ -1,7 +1,5 @@ import 'package:flutter/material.dart'; -import 'package:matrix/matrix.dart'; import 'package:provider/provider.dart'; -import 'package:shared_preferences/shared_preferences.dart'; import 'package:zenith/zenith_client_provider.dart'; class ChatsPage extends StatefulWidget { @@ -15,16 +13,10 @@ class _ChatsPageState extends State { final serverController = TextEditingController(); final usernameController = TextEditingController(); final passwordController = TextEditingController(); - late Client client; - bool roomsLoading = false; @override void initState() { super.initState(); - client = Provider.of(context, listen: false).client; - client.onRoomState.stream.listen((event) { - print(event.type); - }); } void sendMessage() {} @@ -38,14 +30,18 @@ class _ChatsPageState extends State { ), body: Padding( padding: const EdgeInsets.all(16.0), - child: Center( - child: roomsLoading - ? const CircularProgressIndicator() - : Column( - mainAxisAlignment: MainAxisAlignment.center, - children: [Text("${client.rooms.length} Rooms.")], - ), - ), + child: Center(child: Consumer( + builder: (context, provider, child) { + if (provider.loading) + return const CircularProgressIndicator(); + else + return ListView.builder( + itemBuilder: (context, index) => ListTile( + title: Text(provider.client.rooms[index] + .getLocalizedDisplayname()), + )); + }, + )), ), floatingActionButton: FloatingActionButton( onPressed: sendMessage, diff --git a/lib/login.dart b/lib/login.dart index 6b8ef16..5eeddfc 100644 --- a/lib/login.dart +++ b/lib/login.dart @@ -1,5 +1,4 @@ import 'package:flutter/material.dart'; -import 'package:matrix/matrix.dart'; import 'package:provider/provider.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'package:zenith/chats.dart'; diff --git a/lib/zenith_client_provider.dart b/lib/zenith_client_provider.dart index eeebd19..931f08c 100644 --- a/lib/zenith_client_provider.dart +++ b/lib/zenith_client_provider.dart @@ -3,23 +3,26 @@ import 'package:matrix/matrix.dart'; class ZenithClientProvider extends ChangeNotifier { late Client _client; + bool _loading = true; Client get client => _client; - void setClient(Client newClient) { - _client = newClient; - notifyListeners(); - } + bool get loading => _loading; Future initialize( String homeserver, String username, String password) async { + _loading = true; _client = Client("zenith"); - print("Checking homeserver..."); - await client.checkHomeserver(Uri.parse(homeserver)); - print("Logging in..."); - await client.login(LoginType.mLoginPassword, - identifier: AuthenticationUserIdentifier(user: username), - password: password); + try { + print("Checking homeserver..."); + await client.checkHomeserver(Uri.parse(homeserver)); + print("Logging in..."); + await client.login(LoginType.mLoginPassword, + identifier: AuthenticationUserIdentifier(user: username), + password: password); + } finally { + _loading = false; + } notifyListeners(); } }