From f8ba06d0aef14cca463d15f85ea4dfde7d6803bc Mon Sep 17 00:00:00 2001 From: Pierre HUBERT Date: Sat, 16 May 2020 17:31:16 +0200 Subject: [PATCH] Avoid a user to appear in its own friends list --- .../screens/other_friends_lists_screen.dart | 22 +++++++++++-------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/lib/ui/screens/other_friends_lists_screen.dart b/lib/ui/screens/other_friends_lists_screen.dart index b87233a..db45079 100644 --- a/lib/ui/screens/other_friends_lists_screen.dart +++ b/lib/ui/screens/other_friends_lists_screen.dart @@ -30,11 +30,12 @@ class _OtherUserFriendsListScreenState final FriendsHelper friendsHelper = FriendsHelper(); final UsersHelper usersHelper = UsersHelper(); - UsersList _list; + Set _friendsList; + UsersList _usersInfo; bool _error = false; String get _routeName => tr("Friends of %name%", - args: {"name": _list.getUser(widget.userID).displayName}); + args: {"name": _usersInfo.getUser(widget.userID).displayName}); void setError(bool e) => setState(() => _error = e); @@ -49,12 +50,15 @@ class _OtherUserFriendsListScreenState setError(false); try { - final list = await usersHelper - .getListWithThrow(await friendsHelper.getOtherUserList(widget.userID) - ..add(widget.userID)); + final friendsList = await friendsHelper.getOtherUserList(widget.userID); + + // We use [Set.toSet] here to avoid the current user to appear in the list + final users = await usersHelper + .getListWithThrow(friendsList.toSet()..add(widget.userID)); setState(() { - _list = list; + _friendsList = friendsList; + _usersInfo = users; }); } catch (e, st) { print(e); @@ -67,16 +71,16 @@ class _OtherUserFriendsListScreenState Widget build(BuildContext context) { if (_error) return _buildError(); - if (_list == null) return buildCenteredProgressBar(); + if (_usersInfo == null) return buildCenteredProgressBar(); return Scaffold( appBar: AppBar( title: Text(_routeName), ), body: ListView.builder( - itemCount: _list.length, + itemCount: _friendsList.length, itemBuilder: (c, i) => SimpleUserTile( - user: _list[i], + user: _usersInfo.getUser(_friendsList.elementAt(i)), onTap: (u) => openUserPage( context: context, userID: u.id,