From 33e606eefe0f91b601ff45e10d2938f580c097a0 Mon Sep 17 00:00:00 2001 From: Christian Pauly Date: Sat, 18 Sep 2021 15:42:32 +0200 Subject: [PATCH] feat: Display bundles --- lib/pages/views/chat_list_view.dart | 44 ++++++++++++++++------------- lib/widgets/matrix.dart | 4 +-- 2 files changed, 27 insertions(+), 21 deletions(-) diff --git a/lib/pages/views/chat_list_view.dart b/lib/pages/views/chat_list_view.dart index 0490e548..44e8c138 100644 --- a/lib/pages/views/chat_list_view.dart +++ b/lib/pages/views/chat_list_view.dart @@ -21,21 +21,22 @@ class ChatListView extends StatelessWidget { List getBottomBarItems(BuildContext context) { final items = Matrix.of(context) - .widget - .clients - .map((client) => BottomNavigationBarItem( - label: client.userID, - icon: FutureBuilder( - future: client.ownProfile, - builder: (context, snapshot) { - return Avatar( - snapshot.data?.avatarUrl, - snapshot.data?.displayName ?? client.userID.localpart, - size: 32, - ); - }), - )) - .toList(); + .accountBundles[Matrix.of(context).activeBundle] + .map((clientId) { + final client = Matrix.of(context).widget.clients[clientId]; + return BottomNavigationBarItem( + label: client.userID, + icon: FutureBuilder( + future: client.ownProfile, + builder: (context, snapshot) { + return Avatar( + snapshot.data?.avatarUrl, + snapshot.data?.displayName ?? client.userID.localpart, + size: 32, + ); + }), + ); + }).toList(); if (Matrix.of(context).hasComplexBundles) { items.insert( @@ -47,10 +48,15 @@ class ChatListView extends StatelessWidget { Icons.menu, color: Theme.of(context).textTheme.bodyText1.color, ), - itemBuilder: (_) => [ - PopupMenuItem(child: Text('Arbeit')), - PopupMenuItem(child: Text('Privat')), - ], + itemBuilder: (context) => Matrix.of(context) + .accountBundles + .keys + .map( + (bundle) => PopupMenuItem( + child: Text(bundle), + ), + ) + .toList(), ))); } return items; diff --git a/lib/widgets/matrix.dart b/lib/widgets/matrix.dart index a7e2d965..b8367b8e 100644 --- a/lib/widgets/matrix.dart +++ b/lib/widgets/matrix.dart @@ -77,7 +77,7 @@ class MatrixState extends State with WidgetsBindingObserver { return activeClient; } - Map> getBundles() { + Map> get accountBundles { final resBundles = >{}; for (var i = 0; i < widget.clients.length; i++) { final bundles = widget.clients[i].accountBundles; @@ -103,7 +103,7 @@ class MatrixState extends State with WidgetsBindingObserver { .map((k, v) => MapEntry(k, v.map((vv) => vv.client).toList())); } - bool get hasComplexBundles => getBundles().values.any((v) => v.length > 1); + bool get hasComplexBundles => accountBundles.values.any((v) => v.length > 1); Client _loginClientCandidate;