1
0
mirror of https://gitlab.com/comunic/comunicmobile synced 2025-06-19 08:15:16 +00:00

Can remove a member from a group

This commit is contained in:
2020-05-02 17:05:18 +02:00
parent 2edaedc5f3
commit eb66ea407b
2 changed files with 49 additions and 5 deletions

View File

@ -146,6 +146,8 @@ class _GroupMembershipTile extends StatefulWidget {
__GroupMembershipTileState createState() => __GroupMembershipTileState();
}
enum _MemberMenuOptions { DELETE }
class __GroupMembershipTileState extends State<_GroupMembershipTile> {
int get groupID => widget.membership.groupID;
@ -168,13 +170,9 @@ class __GroupMembershipTileState extends State<_GroupMembershipTile> {
Widget _buildTrailing() {
switch (widget.membership.level) {
case GroupMembershipLevel.ADMINISTRATOR:
// TODO: Handle this case.
break;
case GroupMembershipLevel.MODERATOR:
// TODO: Handle this case.
break;
case GroupMembershipLevel.MEMBER:
// TODO: Handle this case.
return _buildMemberCase();
break;
case GroupMembershipLevel.INVITED:
@ -193,6 +191,43 @@ class __GroupMembershipTileState extends State<_GroupMembershipTile> {
return null;
}
Widget _buildMemberCase() {
return PopupMenuButton<_MemberMenuOptions>(
itemBuilder: (c) => [
// Remove membership
PopupMenuItem(
child: Text(tr("Remove")),
value: _MemberMenuOptions.DELETE,
),
],
onSelected: _handleMenu,
);
}
void _handleMenu(_MemberMenuOptions value) {
switch (value) {
case _MemberMenuOptions.DELETE:
_removeMembership();
break;
}
}
void _removeMembership() async {
try {
if (!await showConfirmDialog(
context: context,
message: tr("Do you really want to remove this membership ?")))
return;
await GroupsHelper.removeMemberFromGroup(groupID, userID);
} catch (e, s) {
print("Could not remove membership! $e\n$s");
showSimpleSnack(context, tr("Could not remove this membership!"));
}
widget.onUpdated();
}
Widget _buildInvitedCase() {
return MaterialButton(
onPressed: _cancelMembership,