fix: User pills
This commit is contained in:
parent
2bb28bc821
commit
847bda89e8
3 changed files with 20 additions and 11 deletions
|
|
@ -422,6 +422,11 @@ class RoomPillExtension extends HtmlExtension {
|
|||
return userId != null;
|
||||
}
|
||||
|
||||
static final _cachedUsers = <String, User?>{};
|
||||
|
||||
Future<User?> _fetchUser(String matrixId) async =>
|
||||
_cachedUsers[room.id + matrixId] ??= await room.requestUser(matrixId);
|
||||
|
||||
@override
|
||||
InlineSpan build(
|
||||
ExtensionContext context,
|
||||
|
|
@ -433,14 +438,18 @@ class RoomPillExtension extends HtmlExtension {
|
|||
return TextSpan(text: context.innerHtml);
|
||||
}
|
||||
if (matrixId.sigil == '@') {
|
||||
final user = room.unsafeGetUserFromMemoryOrFallback(matrixId);
|
||||
return WidgetSpan(
|
||||
child: MatrixPill(
|
||||
key: Key('user_pill_$matrixId'),
|
||||
name: user.calcDisplayname(),
|
||||
avatar: user.avatarUrl,
|
||||
uri: href,
|
||||
outerContext: this.context,
|
||||
child: FutureBuilder<User?>(
|
||||
future: _fetchUser(matrixId),
|
||||
builder: (context, snapshot) => MatrixPill(
|
||||
key: Key('user_pill_$matrixId'),
|
||||
name: _cachedUsers[room.id + matrixId]?.calcDisplayname() ??
|
||||
matrixId.localpart ??
|
||||
matrixId,
|
||||
avatar: _cachedUsers[room.id + matrixId]?.avatarUrl,
|
||||
uri: href,
|
||||
outerContext: this.context,
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue