From df982546406854a696e9f12251c9882dac2ac2e9 Mon Sep 17 00:00:00 2001 From: Krille Fear Date: Fri, 18 Feb 2022 20:25:09 +0100 Subject: [PATCH] fix: Load story avatars faster --- lib/pages/chat_list/stories_header.dart | 45 +++++++++++++++---------- 1 file changed, 27 insertions(+), 18 deletions(-) diff --git a/lib/pages/chat_list/stories_header.dart b/lib/pages/chat_list/stories_header.dart index 58116847..d53363d1 100644 --- a/lib/pages/chat_list/stories_header.dart +++ b/lib/pages/chat_list/stories_header.dart @@ -121,22 +121,31 @@ class StoriesHeader extends StatelessWidget { ...client.storiesRooms.map( (room) => Opacity( opacity: room.hasPosts ? 1 : 0.75, - child: _StoryButton( - label: room.creatorDisplayname, - child: Avatar( - mxContent: room - .getState(EventTypes.RoomCreate)! - .sender - .avatarUrl, - name: room.creatorDisplayname, - size: 100, - fontSize: 24, - ), - unread: room.membership == Membership.invite || - room.hasNewMessages, - onPressed: () => _goToStoryAction(context, room.id), - onLongPressed: () => _contextualActions(context, room), - ), + child: FutureBuilder( + future: room.getCreatorProfile(), + builder: (context, snapshot) { + final displayname = snapshot.data?.displayName ?? + room + .getState(EventTypes.RoomCreate)! + .senderId + .localpart!; + final avatarUrl = snapshot.data?.avatarUrl; + return _StoryButton( + label: displayname, + child: Avatar( + mxContent: avatarUrl, + name: displayname, + size: 100, + fontSize: 24, + ), + unread: room.membership == Membership.invite || + room.hasNewMessages, + onPressed: () => + _goToStoryAction(context, room.id), + onLongPressed: () => + _contextualActions(context, room), + ); + }), ), ), ], @@ -148,8 +157,8 @@ class StoriesHeader extends StatelessWidget { } extension on Room { - String get creatorDisplayname => - getState(EventTypes.RoomCreate)!.sender.calcDisplayname(); + Future getCreatorProfile() => + client.getProfileFromUserId(getState(EventTypes.RoomCreate)!.senderId); bool get hasPosts { if (membership == Membership.invite) return true;