diff --git a/lib/pages/chat_list/chat_list.dart b/lib/pages/chat_list/chat_list.dart index eccc19960..19006d83b 100644 --- a/lib/pages/chat_list/chat_list.dart +++ b/lib/pages/chat_list/chat_list.dart @@ -587,7 +587,6 @@ class ChatListController extends State if (space != null) { chatListHandleSpaceTap( context, - this, space, ); } diff --git a/lib/pangea/chat_list/utils/chat_list_handle_space_tap.dart b/lib/pangea/chat_list/utils/chat_list_handle_space_tap.dart index 4950c40c3..549d39440 100644 --- a/lib/pangea/chat_list/utils/chat_list_handle_space_tap.dart +++ b/lib/pangea/chat_list/utils/chat_list_handle_space_tap.dart @@ -3,9 +3,7 @@ import 'package:flutter/material.dart'; import 'package:go_router/go_router.dart'; import 'package:matrix/matrix.dart'; -import 'package:fluffychat/config/themes.dart'; import 'package:fluffychat/l10n/l10n.dart'; -import 'package:fluffychat/pages/chat_list/chat_list.dart'; import 'package:fluffychat/pangea/extensions/pangea_room_extension.dart'; import 'package:fluffychat/widgets/adaptive_dialogs/show_ok_cancel_alert_dialog.dart'; import 'package:fluffychat/widgets/future_loading_dialog.dart'; @@ -23,7 +21,7 @@ Future _showInviteDialog(Room room, BuildContext context) async { cancelLabel: L10n.of(context).decline, ); - await showFutureLoadingDialog( + final resp = await showFutureLoadingDialog( context: context, future: () async { if (acceptInvite == OkCancelResult.ok) { @@ -31,28 +29,24 @@ Future _showInviteDialog(Room room, BuildContext context) async { context.go( room.isSpace ? "/rooms?spaceId=${room.id}" : "/rooms/${room.id}", ); - return; + return room.id; } await room.leave(); }, ); + + if (!resp.isError && resp.result is String) { + context.go("/rooms?spaceId=${resp.result}"); + } } // ignore: curly_braces_in_flow_control_structures void chatListHandleSpaceTap( BuildContext context, - ChatListController controller, Room space, ) { void setActiveSpaceAndCloseChat() { - controller.setActiveSpace(space.id); - - if (FluffyThemes.isColumnMode(context)) { - context.go('/rooms/${space.id}'); - } else if (controller.activeChat != null && - !space.isFirstOrSecondChild(controller.activeChat!)) { - context.go("/rooms"); - } + context.go("/rooms?spaceId=${space.id}"); } void autoJoin(Room space) { diff --git a/lib/widgets/navigation_rail.dart b/lib/widgets/navigation_rail.dart index ab0983345..ac14abdb9 100644 --- a/lib/widgets/navigation_rail.dart +++ b/lib/widgets/navigation_rail.dart @@ -7,6 +7,7 @@ import 'package:fluffychat/config/app_config.dart'; import 'package:fluffychat/config/themes.dart'; import 'package:fluffychat/l10n/l10n.dart'; import 'package:fluffychat/pages/chat_list/navi_rail_item.dart'; +import 'package:fluffychat/pangea/chat_list/utils/chat_list_handle_space_tap.dart'; import 'package:fluffychat/utils/matrix_sdk_extensions/matrix_locals.dart'; import 'package:fluffychat/utils/stream_extension.dart'; import 'package:fluffychat/widgets/avatar.dart'; @@ -175,7 +176,20 @@ class SpacesNavigationRail extends StatelessWidget { return NaviRailItem( toolTip: displayname, isSelected: activeSpaceId == space.id, - onTap: () => onGoToSpaceId(rootSpaces[i].id), + // #Pangea + // onTap: () => onGoToSpaceId(rootSpaces[i].id), + onTap: () { + final room = client.getRoomById(rootSpaces[i].id); + if (room != null) { + chatListHandleSpaceTap( + context, + room, + ); + } else { + onGoToSpaceId(rootSpaces[i].id); + } + }, + // Pangea# unreadBadgeFilter: (room) => spaceChildrenIds.contains(room.id), icon: Avatar(