chore: Adjust power level UX

This commit is contained in:
Christian Kußowski 2026-02-25 13:12:47 +01:00
commit 47934a3378
No known key found for this signature in database
GPG key ID: E067ECD60F1A0652
4 changed files with 186 additions and 106 deletions

View file

@ -210,6 +210,7 @@ class Message extends StatelessWidget {
singleSelected && event.room.canSendDefaultMessages;
final enterThread = this.enterThread;
final sender = event.senderFromMemoryOrFallback;
return Center(
child: Swipeable(
@ -358,9 +359,7 @@ class Message extends StatelessWidget {
FutureBuilder<User?>(
future: event.fetchSenderUser(),
builder: (context, snapshot) {
final user =
snapshot.data ??
event.senderFromMemoryOrFallback;
final user = snapshot.data ?? sender;
return Avatar(
mxContent: user.avatarUrl,
name: user.calcDisplayname(),
@ -392,52 +391,78 @@ class Message extends StatelessWidget {
ownMessage ||
event.room.isDirectChat
? const SizedBox(height: 12)
: FutureBuilder<User?>(
future: event
.fetchSenderUser(),
builder: (context, snapshot) {
final displayname =
snapshot.data
?.calcDisplayname() ??
event
.senderFromMemoryOrFallback
.calcDisplayname();
return Text(
displayname,
style: TextStyle(
fontSize: 11,
fontWeight:
FontWeight.bold,
color:
(theme.brightness ==
Brightness
.light
? displayname
.color
: displayname
.lightColorText),
shadows:
!wallpaperMode
? null
: [
const Shadow(
offset:
Offset(
0.0,
0.0,
),
blurRadius:
3,
color: Colors
.black,
),
],
: Row(
children: [
if (sender.powerLevel >=
50)
Padding(
padding:
const EdgeInsets.only(
right: 2.0,
),
child: Icon(
sender.powerLevel >=
100
? Icons
.admin_panel_settings
: Icons
.add_moderator_outlined,
size: 14,
color: theme
.colorScheme
.onPrimaryContainer,
),
),
maxLines: 1,
overflow: TextOverflow
.ellipsis,
);
},
Expanded(
child: FutureBuilder<User?>(
future: event
.fetchSenderUser(),
builder: (context, snapshot) {
final displayname =
snapshot.data
?.calcDisplayname() ??
sender
.calcDisplayname();
return Text(
displayname,
style: TextStyle(
fontSize: 11,
fontWeight:
FontWeight
.bold,
color:
(theme.brightness ==
Brightness
.light
? displayname
.color
: displayname
.lightColorText),
shadows:
!wallpaperMode
? null
: [
const Shadow(
offset: Offset(
0.0,
0.0,
),
blurRadius:
3,
color:
Colors.black,
),
],
),
maxLines: 1,
overflow:
TextOverflow
.ellipsis,
);
},
),
),
],
),
),
Container(