showKickAndBanUserDialog function
Future<void>
showKickAndBanUserDialog( - dynamic context,
- dynamic member
)
Implementation
Future<void> showKickAndBanUserDialog(
BuildContext context,
Member member,
) async {
final userId = member.userId().toString();
final roomId = member.roomIdStr();
await showDialog(
context: context,
builder: (BuildContext context) {
final lang = L10n.of(context);
final reason = TextEditingController();
return AlertDialog(
title: Text(lang.kickAndBanUserTitle(userId)),
content: Padding(
padding: const EdgeInsets.symmetric(horizontal: 20.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
Text(lang.kickAndBanUserDescription(userId, roomId)),
Text(lang.theyWontBeAbleToJoinAgain),
TextFormField(
controller: reason,
decoration: InputDecoration(
hintText: lang.reasonHint,
labelText: lang.reasonLabel,
),
),
Text(lang.continueQuestion),
],
),
),
actionsAlignment: MainAxisAlignment.spaceEvenly,
actions: <Widget>[
OutlinedButton(
onPressed: () => Navigator.pop(context),
child: Text(lang.no),
),
ActerPrimaryActionButton(
onPressed: () async {
EasyLoading.show(status: lang.kickAndBanProgress);
try {
final maybeReason = reason.text.isNotEmpty ? reason.text : null;
await member.kick(maybeReason);
await member.ban(maybeReason);
if (!context.mounted) {
EasyLoading.dismiss();
return;
}
EasyLoading.showToast(lang.kickAndBanSuccess);
Navigator.pop(context);
} catch (e, s) {
_log.severe('Failed to kick and ban user', e, s);
if (!context.mounted) {
EasyLoading.dismiss();
return;
}
EasyLoading.showError(
lang.kickAndBanFailed(e),
duration: const Duration(seconds: 3),
);
}
},
child: Text(lang.yes),
),
],
);
},
);
}