chore: Minor design changes in user viewer

This commit is contained in:
Christian Pauly 2020-11-22 21:09:29 +01:00
parent 500fbbf8c6
commit b4fb28380f
1 changed files with 74 additions and 10 deletions

View File

@ -36,35 +36,41 @@ class UserBottomSheet extends StatelessWidget {
case 'ban': case 'ban':
if (await _askConfirmation()) { if (await _askConfirmation()) {
await SimpleDialogs(context).tryRequestWithLoadingDialog(user.ban()); await SimpleDialogs(context).tryRequestWithLoadingDialog(user.ban());
Navigator.of(context).pop();
} }
break; break;
case 'unban': case 'unban':
if (await _askConfirmation()) { if (await _askConfirmation()) {
await SimpleDialogs(context) await SimpleDialogs(context)
.tryRequestWithLoadingDialog(user.unban()); .tryRequestWithLoadingDialog(user.unban());
Navigator.of(context).pop();
} }
break; break;
case 'kick': case 'kick':
if (await _askConfirmation()) { if (await _askConfirmation()) {
await SimpleDialogs(context).tryRequestWithLoadingDialog(user.kick()); await SimpleDialogs(context).tryRequestWithLoadingDialog(user.kick());
Navigator.of(context).pop();
} }
break; break;
case 'admin': case 'admin':
if (await _askConfirmation()) { if (await _askConfirmation()) {
await SimpleDialogs(context) await SimpleDialogs(context)
.tryRequestWithLoadingDialog(user.setPower(100)); .tryRequestWithLoadingDialog(user.setPower(100));
Navigator.of(context).pop();
} }
break; break;
case 'moderator': case 'moderator':
if (await _askConfirmation()) { if (await _askConfirmation()) {
await SimpleDialogs(context) await SimpleDialogs(context)
.tryRequestWithLoadingDialog(user.setPower(50)); .tryRequestWithLoadingDialog(user.setPower(50));
Navigator.of(context).pop();
} }
break; break;
case 'user': case 'user':
if (await _askConfirmation()) { if (await _askConfirmation()) {
await SimpleDialogs(context) await SimpleDialogs(context)
.tryRequestWithLoadingDialog(user.setPower(0)); .tryRequestWithLoadingDialog(user.setPower(0));
Navigator.of(context).pop();
} }
break; break;
case 'message': case 'message':
@ -99,13 +105,23 @@ class UserBottomSheet extends StatelessWidget {
if (onMention != null) { if (onMention != null) {
items.add( items.add(
PopupMenuItem(child: Text(L10n.of(context).mention), value: 'mention'), PopupMenuItem(
child: _TextWithIcon(
L10n.of(context).mention,
Icons.alternate_email_outlined,
),
value: 'mention'),
); );
} }
if (user.id != Matrix.of(context).client.userID) { if (user.id != Matrix.of(context).client.userID &&
!user.room.isDirectChat) {
items.add( items.add(
PopupMenuItem( PopupMenuItem(
child: Text(L10n.of(context).sendAMessage), value: 'message'), child: _TextWithIcon(
L10n.of(context).sendAMessage,
Icons.send,
),
value: 'message'),
); );
} }
if (user.canChangePowerLevel && if (user.canChangePowerLevel &&
@ -113,7 +129,11 @@ class UserBottomSheet extends StatelessWidget {
user.powerLevel != 100) { user.powerLevel != 100) {
items.add( items.add(
PopupMenuItem( PopupMenuItem(
child: Text(L10n.of(context).makeAnAdmin), value: 'admin'), child: _TextWithIcon(
L10n.of(context).makeAnAdmin,
Icons.arrow_upward,
),
value: 'admin'),
); );
} }
if (user.canChangePowerLevel && if (user.canChangePowerLevel &&
@ -121,29 +141,50 @@ class UserBottomSheet extends StatelessWidget {
user.powerLevel != 50) { user.powerLevel != 50) {
items.add( items.add(
PopupMenuItem( PopupMenuItem(
child: Text(L10n.of(context).makeAModerator), value: 'moderator'), child: _TextWithIcon(
L10n.of(context).makeAModerator,
Icons.arrow_upward_outlined,
),
value: 'moderator'),
); );
} }
if (user.canChangePowerLevel && user.powerLevel != 0) { if (user.canChangePowerLevel && user.powerLevel != 0) {
items.add( items.add(
PopupMenuItem( PopupMenuItem(
child: Text(L10n.of(context).revokeAllPermissions), value: 'user'), child: _TextWithIcon(
L10n.of(context).revokeAllPermissions,
Icons.arrow_downward_outlined,
),
value: 'user'),
); );
} }
if (user.canKick) { if (user.canKick) {
items.add( items.add(
PopupMenuItem( PopupMenuItem(
child: Text(L10n.of(context).kickFromChat), value: 'kick'), child: _TextWithIcon(
L10n.of(context).kickFromChat,
Icons.exit_to_app_outlined,
),
value: 'kick'),
); );
} }
if (user.canBan && user.membership != Membership.ban) { if (user.canBan && user.membership != Membership.ban) {
items.add( items.add(
PopupMenuItem(child: Text(L10n.of(context).banFromChat), value: 'ban'), PopupMenuItem(
child: _TextWithIcon(
L10n.of(context).banFromChat,
Icons.warning_sharp,
),
value: 'ban'),
); );
} else if (user.canBan && user.membership == Membership.ban) { } else if (user.room.canBan &&
user.powerLevel < user.room.ownPowerLevel &&
user.membership == Membership.ban) {
items.add( items.add(
PopupMenuItem( PopupMenuItem(
child: Text(L10n.of(context).removeExile), value: 'unban'), child: _TextWithIcon(
L10n.of(context).removeExile, Icons.warning_outlined),
value: 'unban'),
); );
} }
return Center( return Center(
@ -221,3 +262,26 @@ class UserBottomSheet extends StatelessWidget {
); );
} }
} }
class _TextWithIcon extends StatelessWidget {
final String text;
final IconData iconData;
const _TextWithIcon(
this.text,
this.iconData, {
Key key,
}) : super(key: key);
@override
Widget build(BuildContext context) {
return Row(
mainAxisSize: MainAxisSize.min,
children: [
Icon(iconData),
SizedBox(width: 16),
Text(text),
],
);
}
}