From acb0ced1b0e19f9cc55a2ee78a1946dbdb1d766a Mon Sep 17 00:00:00 2001 From: ggurdin <46800240+ggurdin@users.noreply.github.com> Date: Fri, 28 Feb 2025 11:38:38 -0500 Subject: [PATCH] chore: set active filter to groups after creating new group (#1990) --- lib/pages/chat_list/chat_list.dart | 15 +++++++++------ lib/pages/new_group/new_group.dart | 5 +++++ .../spaces/controllers/space_controller.dart | 5 +++++ 3 files changed, 19 insertions(+), 6 deletions(-) diff --git a/lib/pages/chat_list/chat_list.dart b/lib/pages/chat_list/chat_list.dart index 3834bfa93..188c3997e 100644 --- a/lib/pages/chat_list/chat_list.dart +++ b/lib/pages/chat_list/chat_list.dart @@ -43,6 +43,7 @@ import '../../widgets/matrix.dart'; import 'package:fluffychat/utils/tor_stub.dart' if (dart.library.html) 'package:tor_detector_web/tor_detector_web.dart'; + enum PopupMenuAction { settings, invite, @@ -474,13 +475,15 @@ class ChatListController extends State //#Pangea classStream = MatrixState.pangeaController.classController.stateStream .listen((event) { - if (mounted) { - event["activeSpaceId"] != null - ? setActiveSpace(event["activeSpaceId"]) - : clearActiveSpace(); - if (event["activeSpaceId"] != null) { - context.push("/rooms/${event["activeSpaceId"]}/details"); + if (!mounted || event is! Map) return; + if (event.containsKey("activeSpaceId")) { + final setSpaceID = event["activeSpaceId"]; + setSpaceID != null ? setActiveSpace(setSpaceID) : clearActiveSpace(); + if (setSpaceID != null) { + context.push("/rooms/$setSpaceID/details"); } + } else if (event.containsKey("activeFilter")) { + setActiveFilter(event["activeFilter"]); } }); diff --git a/lib/pages/new_group/new_group.dart b/lib/pages/new_group/new_group.dart index 3b640e755..93a5a0221 100644 --- a/lib/pages/new_group/new_group.dart +++ b/lib/pages/new_group/new_group.dart @@ -8,6 +8,7 @@ import 'package:matrix/matrix.dart' as sdk; import 'package:matrix/matrix.dart'; import 'package:fluffychat/config/app_config.dart'; +import 'package:fluffychat/pages/chat_list/chat_list.dart'; import 'package:fluffychat/pages/new_group/new_group_view.dart'; import 'package:fluffychat/pangea/bot/utils/bot_name.dart'; import 'package:fluffychat/pangea/common/constants/model_keys.dart'; @@ -107,6 +108,10 @@ class NewGroupController extends State { // if a timeout happened, don't redirect to the chat if (error != null) return; // Pangea# + MatrixState.pangeaController.classController + .setActiveFilterInChatListController( + AppConfig.separateChatTypes ? ActiveFilter.groups : ActiveFilter.allChats, + ); context.go('/rooms/$roomId/invite'); } diff --git a/lib/pangea/spaces/controllers/space_controller.dart b/lib/pangea/spaces/controllers/space_controller.dart index 3cede3ad5..f3c869eff 100644 --- a/lib/pangea/spaces/controllers/space_controller.dart +++ b/lib/pangea/spaces/controllers/space_controller.dart @@ -8,6 +8,7 @@ import 'package:get_storage/get_storage.dart'; import 'package:go_router/go_router.dart'; import 'package:matrix/matrix.dart'; +import 'package:fluffychat/pages/chat_list/chat_list.dart'; import 'package:fluffychat/pangea/common/constants/local.key.dart'; import 'package:fluffychat/pangea/common/controllers/pangea_controller.dart'; import 'package:fluffychat/pangea/common/utils/error_handler.dart'; @@ -28,6 +29,10 @@ class ClassController extends BaseController { _pangeaController = pangeaController; } + void setActiveFilterInChatListController(ActiveFilter filter) { + setState({"activeFilter": filter}); + } + void setActiveSpaceIdInChatListController(String? classId) { setState({"activeSpaceId": classId}); }