From e13df1cbf087fe49030f483cc7f2ca9c7741ee5a Mon Sep 17 00:00:00 2001 From: Christian Pauly Date: Sun, 16 Feb 2020 09:22:56 +0100 Subject: [PATCH] Forget rooms with slide --- lib/components/list_items/chat_list_item.dart | 15 +++++++++++++++ lib/views/archive.dart | 2 +- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/lib/components/list_items/chat_list_item.dart b/lib/components/list_items/chat_list_item.dart index e3e99a4..6112ab4 100644 --- a/lib/components/list_items/chat_list_item.dart +++ b/lib/components/list_items/chat_list_item.dart @@ -88,6 +88,14 @@ class ChatListItem extends StatelessWidget { Future archiveAction(BuildContext context) async { { + if ([Membership.leave, Membership.ban].contains(room.membership)) { + final success = + await Matrix.of(context).tryRequestWithLoadingDialog(room.forget()); + if (success != false) { + if (this.onForget != null) this.onForget(); + } + return success; + } final bool confirmed = await SimpleDialogs(context).askConfirmation(); if (!confirmed) { return false; @@ -113,6 +121,13 @@ class ChatListItem extends StatelessWidget { icon: Icons.archive, onTap: () => archiveAction(context), ), + if ([Membership.leave, Membership.ban].contains(room.membership)) + IconSlideAction( + caption: I18n.of(context).delete, + color: Colors.red, + icon: Icons.delete_forever, + onTap: () => archiveAction(context), + ), ], actionPane: SlidableDrawerActionPane(), dismissal: SlidableDismissal( diff --git a/lib/views/archive.dart b/lib/views/archive.dart index ce6b674..9b31d25 100644 --- a/lib/views/archive.dart +++ b/lib/views/archive.dart @@ -36,7 +36,7 @@ class _ArchiveState extends State { itemCount: archive.length, itemBuilder: (BuildContext context, int i) => ChatListItem( archive[i], - onForget: () => setState(() => archive = null)), + onForget: () => setState(() => archive.removeAt(i))), ); } },