From 757ffae1bb86fc4182a899183f9d221832a772d0 Mon Sep 17 00:00:00 2001 From: Kelrap <99418823+Kelrap@users.noreply.github.com> Date: Mon, 12 May 2025 14:50:49 -0400 Subject: [PATCH] Invite page tweaks (#2735) * Remove buttons, fix web margin issue * generated * Don't share link for non-spaces * generated * Revert "generated" This reverts commit 93907a836d01063cf551f8da0dde2621ab201a62. * Hide share buttons if not space * dart-formatting * delete unused widgets --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: ggurdin --- .../invitation_selection_view.dart | 2 +- lib/pangea/analytics_misc/level_up.dart | 5 - .../pages/pangea_chat_details.dart | 9 +- ...lass_details_toggle_add_students_tile.dart | 47 ------- .../widgets/class_invitation_buttons.dart | 131 ------------------ .../widgets/space_invite_buttons.dart | 2 +- .../choreographer/widgets/igc/span_card.dart | 6 - .../extensions/pangea_room_extension.dart | 2 - 8 files changed, 3 insertions(+), 201 deletions(-) delete mode 100644 lib/pangea/chat_settings/widgets/class_details_toggle_add_students_tile.dart delete mode 100644 lib/pangea/chat_settings/widgets/class_invitation_buttons.dart diff --git a/lib/pages/invitation_selection/invitation_selection_view.dart b/lib/pages/invitation_selection/invitation_selection_view.dart index ac27bf091..05588a60e 100644 --- a/lib/pages/invitation_selection/invitation_selection_view.dart +++ b/lib/pages/invitation_selection/invitation_selection_view.dart @@ -54,7 +54,7 @@ class InvitationSelectionView extends StatelessWidget { title: Text(L10n.of(context).inviteContact), // #Pangea actions: [ - if (room.classCode(context) != null) + if (room.isSpace && room.classCode(context) != null) PopupMenuButton( icon: const Icon(Icons.share_outlined), onSelected: (value) async { diff --git a/lib/pangea/analytics_misc/level_up.dart b/lib/pangea/analytics_misc/level_up.dart index fab1f2473..4d6c10cb4 100644 --- a/lib/pangea/analytics_misc/level_up.dart +++ b/lib/pangea/analytics_misc/level_up.dart @@ -90,7 +90,6 @@ class LevelUpBannerState extends State bool _showedDetails = false; ConstructSummary? _constructSummary; - bool _loading = true; String? _error; @override @@ -151,10 +150,6 @@ class LevelUpBannerState extends State ); } catch (e) { _error = e.toString(); - } finally { - if (mounted) { - setState(() => _loading = false); - } } } diff --git a/lib/pangea/chat_settings/pages/pangea_chat_details.dart b/lib/pangea/chat_settings/pages/pangea_chat_details.dart index ac9e2480d..6a6549db0 100644 --- a/lib/pangea/chat_settings/pages/pangea_chat_details.dart +++ b/lib/pangea/chat_settings/pages/pangea_chat_details.dart @@ -10,7 +10,6 @@ import 'package:fluffychat/pages/chat_details/chat_details.dart'; import 'package:fluffychat/pages/chat_details/participant_list_item.dart'; import 'package:fluffychat/pangea/chat_settings/utils/download_chat.dart'; import 'package:fluffychat/pangea/chat_settings/utils/download_file.dart'; -import 'package:fluffychat/pangea/chat_settings/widgets/class_details_toggle_add_students_tile.dart'; import 'package:fluffychat/pangea/chat_settings/widgets/class_name_header.dart'; import 'package:fluffychat/pangea/chat_settings/widgets/conversation_bot/conversation_bot_settings.dart'; import 'package:fluffychat/pangea/chat_settings/widgets/download_space_analytics_button.dart'; @@ -275,7 +274,7 @@ class PangeaChatDetailsView extends StatelessWidget { if (room.canInvite && !room.isDirectChat) ListTile( title: Text( - L10n.of(context).inviteStudentByUserName, + L10n.of(context).inviteContact, style: TextStyle( color: Theme.of(context).colorScheme.secondary, fontWeight: FontWeight.bold, @@ -295,12 +294,6 @@ class PangeaChatDetailsView extends StatelessWidget { ), if (room.canInvite && !room.isDirectChat) Divider(color: theme.dividerColor, height: 1), - if (room.isSpace && room.isRoomAdmin) - SpaceDetailsToggleAddStudentsTile( - controller: controller, - ), - if (room.isSpace && room.isRoomAdmin) - Divider(color: theme.dividerColor, height: 1), if (isGroupChat && room.isRoomAdmin) ListTile( title: Text( diff --git a/lib/pangea/chat_settings/widgets/class_details_toggle_add_students_tile.dart b/lib/pangea/chat_settings/widgets/class_details_toggle_add_students_tile.dart deleted file mode 100644 index 46f6f54a9..000000000 --- a/lib/pangea/chat_settings/widgets/class_details_toggle_add_students_tile.dart +++ /dev/null @@ -1,47 +0,0 @@ -import 'package:flutter/material.dart'; - -import 'package:flutter_gen/gen_l10n/l10n.dart'; - -import 'package:fluffychat/pangea/chat_settings/widgets/class_invitation_buttons.dart'; -import '../../../pages/chat_details/chat_details.dart'; - -class SpaceDetailsToggleAddStudentsTile extends StatelessWidget { - const SpaceDetailsToggleAddStudentsTile({ - super.key, - required this.controller, - }); - - final ChatDetailsController controller; - - @override - Widget build(BuildContext context) { - return Column( - children: [ - ListTile( - title: Text( - L10n.of(context).addStudents, - style: TextStyle( - color: Theme.of(context).colorScheme.secondary, - fontWeight: FontWeight.bold, - ), - ), - leading: CircleAvatar( - backgroundColor: Theme.of(context).scaffoldBackgroundColor, - foregroundColor: Theme.of(context).textTheme.bodyLarge!.color, - child: const Icon( - Icons.add, - ), - ), - trailing: Icon( - controller.displayAddStudentOptions - ? Icons.keyboard_arrow_down_outlined - : Icons.keyboard_arrow_right_outlined, - ), - onTap: controller.toggleAddStudentOptions, - ), - if (controller.displayAddStudentOptions) - ClassInvitationButtons(roomId: controller.roomId!), - ], - ); - } -} diff --git a/lib/pangea/chat_settings/widgets/class_invitation_buttons.dart b/lib/pangea/chat_settings/widgets/class_invitation_buttons.dart deleted file mode 100644 index cb25ddab7..000000000 --- a/lib/pangea/chat_settings/widgets/class_invitation_buttons.dart +++ /dev/null @@ -1,131 +0,0 @@ -import 'package:flutter/foundation.dart'; -import 'package:flutter/material.dart'; -import 'package:flutter/services.dart'; - -import 'package:flutter_gen/gen_l10n/l10n.dart'; -import 'package:matrix/matrix.dart'; -import 'package:universal_html/html.dart' as html; - -import 'package:fluffychat/pangea/common/config/environment.dart'; -import 'package:fluffychat/pangea/extensions/pangea_room_extension.dart'; -import 'package:fluffychat/pangea/spaces/constants/space_constants.dart'; -import 'package:fluffychat/widgets/matrix.dart'; - -class ClassInvitationButtons extends StatelessWidget { - final String roomId; - const ClassInvitationButtons({super.key, required this.roomId}); - - @override - Widget build(BuildContext context) { - final Room? room = Matrix.of(context).client.getRoomById(roomId); - if (room == null) return Text(L10n.of(context).oopsSomethingWentWrong); - - final copyClassLinkListTile = ListTile( - title: Text( - L10n.of(context).copyClassLink, - style: TextStyle( - color: Theme.of(context).colorScheme.secondary, - fontWeight: FontWeight.bold, - ), - ), - subtitle: Text(L10n.of(context).copyClassLinkDesc), - leading: CircleAvatar( - backgroundColor: Theme.of(context).scaffoldBackgroundColor, - foregroundColor: Theme.of(context).textTheme.bodyLarge!.color, - child: const Icon( - Icons.copy_outlined, - ), - ), - onTap: () async { - final String initialUrl = - kIsWeb ? html.window.origin! : Environment.frontendURL; - final link = - "$initialUrl/#/join_with_link?${SpaceConstants.classCode}=${room.classCode(context)}"; - await Clipboard.setData(ClipboardData(text: link)); - ScaffoldMessenger.of(context).showSnackBar( - SnackBar(content: Text(L10n.of(context).copiedToClipboard)), - ); - }, - ); - - final spaceCode = room.classCode(context); - Widget? copyCodeListTile; - if (spaceCode != null) { - copyCodeListTile = ListTile( - title: Text( - "${L10n.of(context).copyClassCode}: $spaceCode", - style: TextStyle( - color: Theme.of(context).colorScheme.secondary, - fontWeight: FontWeight.bold, - ), - ), - subtitle: Text(L10n.of(context).copyClassCodeDesc), - leading: CircleAvatar( - backgroundColor: Theme.of(context).scaffoldBackgroundColor, - foregroundColor: Theme.of(context).textTheme.bodyLarge!.color, - child: const Icon( - Icons.copy, - ), - ), - onTap: () async { - //PTODO-Lala: Standarize toast - //PTODO - explore using Fluffyshare for this - await Clipboard.setData(ClipboardData(text: spaceCode)); - ScaffoldMessenger.of(context).showSnackBar( - SnackBar(content: Text(L10n.of(context).copiedToClipboard)), - ); - }, - ); - } - - // final inviateWithEmailListTile = ListTile( - // enabled: false, - // //PTODO - add to copy - // title: const Text("Invite with email"), - // subtitle: const Text("Coming soon"), - // leading: CircleAvatar( - // backgroundColor: Theme.of(context).primaryColor, - // foregroundColor: Colors.white, - // radius: Avatar.defaultSize / 2, - // child: const Icon(Icons.email_outlined), - // ), - // //PTODO: Add invite with email functionality - // // onTap: () => VRouter.of(context).to('invite'), - // ); - - // final addFromGoogleClassooomListTile = ListTile( - // enabled: false, - // //PTODO - add to copy - // title: Text( - // L10n.of(context).addFromGoogleClassroom, - // style: TextStyle( - // color: Theme.of(context).colorScheme.secondary, - // fontWeight: FontWeight.bold, - // ), - // ), - // subtitle: Text(L10n.of(context).addFromGoogleClassroomDesc), - // leading: CircleAvatar( - // backgroundColor: Theme.of(context).primaryColor, - // foregroundColor: Colors.white, - // radius: Avatar.defaultSize / 2, - // child: SvgPicture.asset( - // "assets/pangea/google.svg", - // height: 20, - // width: 20, - // ), - // ), - // //PTODO: Add via google classroom functionality - // // onTap: () => VRouter.of(context).to('invite'), - // ); - - return Column( - children: [ - // inviteStudentByUserNameTile, - copyClassLinkListTile, - if (copyCodeListTile != null) copyCodeListTile, - // inviateWithEmailListTile, - // addFromGoogleClassooomListTile, - ], - ); - } -} diff --git a/lib/pangea/chat_settings/widgets/space_invite_buttons.dart b/lib/pangea/chat_settings/widgets/space_invite_buttons.dart index 001e4c24b..eb18a8a95 100644 --- a/lib/pangea/chat_settings/widgets/space_invite_buttons.dart +++ b/lib/pangea/chat_settings/widgets/space_invite_buttons.dart @@ -51,7 +51,7 @@ class SpaceInviteButtonsController extends State { @override Widget build(BuildContext context) { final spaceCode = widget.room.classCode(context); - if (spaceCode == null) { + if (!widget.room.isSpace || spaceCode == null) { return const SizedBox.shrink(); } diff --git a/lib/pangea/choreographer/widgets/igc/span_card.dart b/lib/pangea/choreographer/widgets/igc/span_card.dart index 64bb7ee3a..0fd6b5bb1 100644 --- a/lib/pangea/choreographer/widgets/igc/span_card.dart +++ b/lib/pangea/choreographer/widgets/igc/span_card.dart @@ -9,7 +9,6 @@ import 'package:fluffychat/config/app_config.dart'; import 'package:fluffychat/pangea/bot/utils/bot_style.dart'; import 'package:fluffychat/pangea/choreographer/enums/span_data_type.dart'; import 'package:fluffychat/pangea/choreographer/models/span_data.dart'; -import 'package:fluffychat/pangea/choreographer/utils/match_copy.dart'; import 'package:fluffychat/pangea/choreographer/widgets/igc/card_error_widget.dart'; import 'package:fluffychat/pangea/common/utils/error_handler.dart'; import 'package:fluffychat/pangea/toolbar/controllers/tts_controller.dart'; @@ -215,11 +214,6 @@ class WordMatchContent extends StatelessWidget { ); } - final MatchCopy matchCopy = MatchCopy( - context, - controller.widget.scm.pangeaMatch!, - ); - final ScrollController scrollController = ScrollController(); try { diff --git a/lib/pangea/extensions/pangea_room_extension.dart b/lib/pangea/extensions/pangea_room_extension.dart index 6e02e124d..b4c758a5e 100644 --- a/lib/pangea/extensions/pangea_room_extension.dart +++ b/lib/pangea/extensions/pangea_room_extension.dart @@ -8,7 +8,6 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:collection/collection.dart'; -import 'package:flutter_gen/gen_l10n/l10n.dart'; import 'package:html_unescape/html_unescape.dart'; import 'package:http/http.dart' as http; import 'package:matrix/matrix.dart' as matrix; @@ -28,7 +27,6 @@ import 'package:fluffychat/pangea/common/utils/error_handler.dart'; import 'package:fluffychat/pangea/events/models/tokens_event_content_model.dart'; import 'package:fluffychat/pangea/extensions/pangea_room_extension.dart'; import 'package:fluffychat/pangea/spaces/constants/space_constants.dart'; -import 'package:fluffychat/pangea/spaces/models/space_model.dart'; import '../choreographer/models/choreo_record.dart'; import '../events/constants/pangea_event_types.dart'; import '../events/models/representation_content_model.dart';