From 2127277d817c5eb28f553aa9bbd214096801bc89 Mon Sep 17 00:00:00 2001 From: Kelrap Date: Mon, 3 Jun 2024 11:28:12 -0400 Subject: [PATCH] Don't return to archived space view --- lib/pages/chat/chat.dart | 6 +++++- lib/pages/chat_list/chat_list.dart | 12 ++++++++---- lib/pages/chat_list/space_view.dart | 1 + lib/pages/chat_list/utils/on_chat_tap.dart | 4 +++- lib/pangea/controllers/class_controller.dart | 2 +- lib/pangea/extensions/pangea_room_extension.dart | 15 +++++++++++++-- 6 files changed, 31 insertions(+), 9 deletions(-) diff --git a/lib/pages/chat/chat.dart b/lib/pages/chat/chat.dart index 72e755afd..4ac0a981f 100644 --- a/lib/pages/chat/chat.dart +++ b/lib/pages/chat/chat.dart @@ -454,7 +454,11 @@ class ChatController extends State } } timeline!.requestKeys(onlineKeyBackupOnly: false); - if (room.markedUnread) room.markUnread(false); + if (!room.isSpace && + room.membership == Membership.join && + room.markedUnread) { + room.markUnread(false); + } // when the scroll controller is attached we want to scroll to an event id, if specified // and update the scroll controller...which will trigger a request history, if the diff --git a/lib/pages/chat_list/chat_list.dart b/lib/pages/chat_list/chat_list.dart index ecb878083..9f2ca0b48 100644 --- a/lib/pages/chat_list/chat_list.dart +++ b/lib/pages/chat_list/chat_list.dart @@ -515,7 +515,8 @@ class ChatListController extends State //#Pangea classStream = pangeaController.classController.stateStream.listen((event) { - if (event["activeSpaceId"] != null && mounted) { + // if (event["activeSpaceId"] != null && mounted) { + if (mounted) { setActiveSpace(event["activeSpaceId"]); } }); @@ -769,10 +770,13 @@ class ChatListController extends State while (selectedRoomIds.isNotEmpty) { final roomId = selectedRoomIds.first; try { - if (client.getRoomById(roomId)!.isUnread) { - await client.getRoomById(roomId)!.markUnread(false); + final room = client.getRoomById(roomId); + if (!room!.isSpace && + room.membership == Membership.join && + room.isUnread) { + await room.markUnread(false); } - await client.getRoomById(roomId)!.leave(); + await room.leave(); } finally { toggleSelection(roomId); } diff --git a/lib/pages/chat_list/space_view.dart b/lib/pages/chat_list/space_view.dart index c95ba9007..351af511d 100644 --- a/lib/pages/chat_list/space_view.dart +++ b/lib/pages/chat_list/space_view.dart @@ -261,6 +261,7 @@ class _SpaceViewState extends State { ? L10n.of(context)!.archiveSpace : L10n.of(context)!.archive, icon: Icons.architecture_outlined, + isDestructiveAction: true, ), // Pangea# if (room != null) diff --git a/lib/pages/chat_list/utils/on_chat_tap.dart b/lib/pages/chat_list/utils/on_chat_tap.dart index d9f1c8191..b272d424e 100644 --- a/lib/pages/chat_list/utils/on_chat_tap.dart +++ b/lib/pages/chat_list/utils/on_chat_tap.dart @@ -46,7 +46,9 @@ void onChatTap(Room room, BuildContext context) async { } if (inviteAction == InviteActions.decline) { // #Pangea - if (room.isUnread) { + if (!room.isSpace && + room.membership == Membership.join && + room.isUnread) { await room.markUnread(false); } // Pangea# diff --git a/lib/pangea/controllers/class_controller.dart b/lib/pangea/controllers/class_controller.dart index c0a8e6093..51a368be6 100644 --- a/lib/pangea/controllers/class_controller.dart +++ b/lib/pangea/controllers/class_controller.dart @@ -27,7 +27,7 @@ class ClassController extends BaseController { _pangeaController = pangeaController; } - setActiveSpaceIdInChatListController(String classId) { + setActiveSpaceIdInChatListController(String? classId) { setState(data: {"activeSpaceId": classId}); } diff --git a/lib/pangea/extensions/pangea_room_extension.dart b/lib/pangea/extensions/pangea_room_extension.dart index 4ad4baca1..dd5635fbe 100644 --- a/lib/pangea/extensions/pangea_room_extension.dart +++ b/lib/pangea/extensions/pangea_room_extension.dart @@ -12,6 +12,7 @@ import 'package:fluffychat/pangea/models/class_model.dart'; import 'package:fluffychat/pangea/models/tokens_event_content_model.dart'; import 'package:fluffychat/pangea/utils/bot_name.dart'; import 'package:fluffychat/pangea/utils/error_handler.dart'; +import 'package:fluffychat/widgets/matrix.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter_gen/gen_l10n/l10n.dart'; @@ -823,7 +824,7 @@ extension PangeaRoom on Room { for (final student in students) { await kick(student.id); } - if (isUnread) { + if (!isSpace && membership == Membership.join && isUnread) { await markUnread(false); } await leave(); @@ -850,6 +851,10 @@ extension PangeaRoom on Room { await archive(); }, ); + MatrixState.pangeaController.classController + .setActiveSpaceIdInChatListController( + null, + ); return success.error == null; } @@ -869,7 +874,9 @@ extension PangeaRoom on Room { future: () async { final List children = await getChildRooms(); for (final Room child in children) { - if (child.isUnread) { + if (!child.isSpace && + child.membership == Membership.join && + child.isUnread) { await child.markUnread(false); } await child.leave(); @@ -877,6 +884,10 @@ extension PangeaRoom on Room { await leave(); }, ); + MatrixState.pangeaController.classController + .setActiveSpaceIdInChatListController( + null, + ); return success.error == null; }