From 3f244f441f98cbfa38180dd2b9f0ea50753c6e30 Mon Sep 17 00:00:00 2001 From: Kelrap Date: Thu, 13 Jun 2024 17:10:39 -0400 Subject: [PATCH 1/2] Show parents of spaces in Add to Space menu --- assets/l10n/intl_en.arb | 3 ++- lib/pages/chat_list/chat_list.dart | 13 +++++++++---- .../children_and_parents_extension.dart | 16 ++++++++++++++++ .../pangea_room_extension.dart | 5 ++++- 4 files changed, 31 insertions(+), 6 deletions(-) diff --git a/assets/l10n/intl_en.arb b/assets/l10n/intl_en.arb index a7fb07449..348267732 100644 --- a/assets/l10n/intl_en.arb +++ b/assets/l10n/intl_en.arb @@ -3959,5 +3959,6 @@ "onlyAdminDescription": "Since there are no other admins, all other participants will also be removed.", "tooltipInstructionsTitle": "Not sure what that does?", "tooltipInstructionsMobileBody": "Press and hold items to view tooltips.", - "tooltipInstructionsBrowserBody": "Hover over items to view tooltips." + "tooltipInstructionsBrowserBody": "Hover over items to view tooltips.", + "addSpaceToSpaceDescription": "Select a space to add as a parent" } \ No newline at end of file diff --git a/lib/pages/chat_list/chat_list.dart b/lib/pages/chat_list/chat_list.dart index f7294e571..b76c614ab 100644 --- a/lib/pages/chat_list/chat_list.dart +++ b/lib/pages/chat_list/chat_list.dart @@ -16,7 +16,6 @@ import 'package:fluffychat/pangea/utils/error_handler.dart'; import 'package:fluffychat/pangea/utils/firebase_analytics.dart'; import 'package:fluffychat/pangea/widgets/subscription/subscription_snackbar.dart'; import 'package:fluffychat/utils/localized_exception_extension.dart'; -import 'package:fluffychat/utils/matrix_sdk_extensions/matrix_locals.dart'; import 'package:fluffychat/utils/platform_infos.dart'; import 'package:fluffychat/utils/tor_stub.dart' if (dart.library.html) 'package:tor_detector_web/tor_detector_web.dart'; @@ -801,7 +800,10 @@ class ChatListController extends State final selectedSpace = await showConfirmationDialog( context: context, title: L10n.of(context)!.addToSpace, - message: L10n.of(context)!.addToSpaceDescription, + // #Pangea + // message: L10n.of(context)!.addToSpaceDescription, + message: L10n.of(context)!.addSpaceToSpaceDescription, + // Pangea# fullyCapitalizedForMaterial: false, actions: Matrix.of(context) .client @@ -820,8 +822,11 @@ class ChatListController extends State .map( (space) => AlertDialogAction( key: space.id, - label: space - .getLocalizedDisplayname(MatrixLocals(L10n.of(context)!)), + // #Pangea + // label: space + // .getLocalizedDisplayname(MatrixLocals(L10n.of(context)!)), + label: space.nameIncludingParents(context), + // Pangea# ), ) .toList(), diff --git a/lib/pangea/extensions/pangea_room_extension/children_and_parents_extension.dart b/lib/pangea/extensions/pangea_room_extension/children_and_parents_extension.dart index 4362c17d8..5c3ffe0db 100644 --- a/lib/pangea/extensions/pangea_room_extension/children_and_parents_extension.dart +++ b/lib/pangea/extensions/pangea_room_extension/children_and_parents_extension.dart @@ -145,4 +145,20 @@ extension ChildrenAndParentsRoomExtension on Room { ), ) .toList(); + + String _nameIncludingParents(BuildContext context) { + String nameSoFar = getLocalizedDisplayname(MatrixLocals(L10n.of(context)!)); + Room currentRoom = this; + var i = 0; + while (i < 2) { + if (currentRoom.immediateClassParents.isEmpty) { + return nameSoFar; + } + currentRoom = currentRoom.immediateClassParents.first; + nameSoFar = + '${currentRoom.getLocalizedDisplayname(MatrixLocals(L10n.of(context)!))} > $nameSoFar'; + i++; + } + return nameSoFar; + } } diff --git a/lib/pangea/extensions/pangea_room_extension/pangea_room_extension.dart b/lib/pangea/extensions/pangea_room_extension/pangea_room_extension.dart index 25790f476..3ba902d96 100644 --- a/lib/pangea/extensions/pangea_room_extension/pangea_room_extension.dart +++ b/lib/pangea/extensions/pangea_room_extension/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/utils/matrix_sdk_extensions/matrix_locals.dart'; import 'package:fluffychat/widgets/matrix.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; @@ -89,7 +90,6 @@ extension PangeaRoom on Room { Future inviteTeachersToAnalyticsRoom() async => await _inviteTeachersToAnalyticsRoom(); - // Invite teachers of 1 space to all users' analytics rooms Future inviteSpaceTeachersToAnalyticsRooms() async => await _inviteSpaceTeachersToAnalyticsRooms(); @@ -116,6 +116,9 @@ extension PangeaRoom on Room { List get pangeaSpaceParents => _pangeaSpaceParents; + String nameIncludingParents(BuildContext context) => + _nameIncludingParents(context); + // class_and_exchange_settings DateTime? get rulesUpdatedAt => _rulesUpdatedAt; From 1e0a5e71fd6af0c43c365dbc42f95fd81763027f Mon Sep 17 00:00:00 2001 From: Kelrap Date: Fri, 14 Jun 2024 13:00:21 -0400 Subject: [PATCH 2/2] Shorten parent names --- .../children_and_parents_extension.dart | 22 ++++++++++--------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/lib/pangea/extensions/pangea_room_extension/children_and_parents_extension.dart b/lib/pangea/extensions/pangea_room_extension/children_and_parents_extension.dart index 5c3ffe0db..46cffea83 100644 --- a/lib/pangea/extensions/pangea_room_extension/children_and_parents_extension.dart +++ b/lib/pangea/extensions/pangea_room_extension/children_and_parents_extension.dart @@ -149,16 +149,18 @@ extension ChildrenAndParentsRoomExtension on Room { String _nameIncludingParents(BuildContext context) { String nameSoFar = getLocalizedDisplayname(MatrixLocals(L10n.of(context)!)); Room currentRoom = this; - var i = 0; - while (i < 2) { - if (currentRoom.immediateClassParents.isEmpty) { - return nameSoFar; - } - currentRoom = currentRoom.immediateClassParents.first; - nameSoFar = - '${currentRoom.getLocalizedDisplayname(MatrixLocals(L10n.of(context)!))} > $nameSoFar'; - i++; + if (currentRoom.immediateClassParents.isEmpty) { + return nameSoFar; + } + currentRoom = currentRoom.immediateClassParents.first; + var nameToAdd = + currentRoom.getLocalizedDisplayname(MatrixLocals(L10n.of(context)!)); + nameToAdd = + nameToAdd.length <= 10 ? nameToAdd : "${nameToAdd.substring(0, 10)}..."; + nameSoFar = '$nameToAdd > $nameSoFar'; + if (currentRoom.immediateClassParents.isEmpty) { + return nameSoFar; } - return nameSoFar; + return "... > $nameSoFar"; } }