From 83c73cac9b974ae5c4a0c308b65536c4cb87a2da Mon Sep 17 00:00:00 2001 From: Steef Hegeman Date: Mon, 31 May 2021 20:41:46 +0200 Subject: [PATCH] android: back button cancels share (still pops) --- lib/pages/chat_list.dart | 11 ++++++----- lib/pages/views/chat_list_view.dart | 13 ++++--------- 2 files changed, 10 insertions(+), 14 deletions(-) diff --git a/lib/pages/chat_list.dart b/lib/pages/chat_list.dart index 32d947d0..a4427e7b 100644 --- a/lib/pages/chat_list.dart +++ b/lib/pages/chat_list.dart @@ -42,6 +42,12 @@ class ChatListController extends State { String get activeChat => VRouter.of(context).pathParameters['roomid']; + SelectMode get selectMode => Matrix.of(context).shareContent != null + ? SelectMode.share + : selectedRoomIds.isEmpty + ? SelectMode.normal + : SelectMode.select; + void _processIncomingSharedFiles(List files) { if (files?.isEmpty ?? true) return; VRouter.of(context).push('/rooms'); @@ -234,11 +240,6 @@ class ChatListController extends State { } void cancelAction() { - final selectMode = Matrix.of(context).shareContent != null - ? SelectMode.share - : selectedRoomIds.isEmpty - ? SelectMode.normal - : SelectMode.select; if (selectMode == SelectMode.share) { setState(() => Matrix.of(context).shareContent = null); } else { diff --git a/lib/pages/views/chat_list_view.dart b/lib/pages/views/chat_list_view.dart index 493b0cd6..c8cc5e3f 100644 --- a/lib/pages/views/chat_list_view.dart +++ b/lib/pages/views/chat_list_view.dart @@ -20,17 +20,12 @@ class ChatListView extends StatelessWidget { return StreamBuilder( stream: Matrix.of(context).onShareContentChanged.stream, builder: (_, __) { - final selectMode = Matrix.of(context).shareContent != null - ? SelectMode.share - : controller.selectedRoomIds.isEmpty - ? SelectMode.normal - : SelectMode.select; + final selectMode = controller.selectMode; return VWidgetGuard( onSystemPop: (redirector) async { - if (controller.selectedRoomIds.isNotEmpty) { - controller.cancelAction(); - redirector.stopRedirection(); - } + final selMode = controller.selectMode; + if (selMode != SelectMode.normal) controller.cancelAction(); + if (selMode == SelectMode.select) redirector.stopRedirection(); }, child: Scaffold( appBar: AppBar(