From cd50460939a49084f28ce0e9bae63a49cd44a99b Mon Sep 17 00:00:00 2001 From: choreo development Date: Thu, 24 Oct 2024 16:36:29 -0400 Subject: [PATCH] got rid of practice activity for non target language --- lib/pangea/enum/message_mode_enum.dart | 10 +++- .../widgets/chat/message_display_card.dart | 47 +++++++++++++++++++ .../chat/message_selection_overlay.dart | 9 ++++ lib/pangea/widgets/chat/message_toolbar.dart | 16 +++++++ .../widgets/chat/message_toolbar_buttons.dart | 2 +- 5 files changed, 82 insertions(+), 2 deletions(-) create mode 100644 lib/pangea/widgets/chat/message_display_card.dart diff --git a/lib/pangea/enum/message_mode_enum.dart b/lib/pangea/enum/message_mode_enum.dart index c8659f0fc..544e2a270 100644 --- a/lib/pangea/enum/message_mode_enum.dart +++ b/lib/pangea/enum/message_mode_enum.dart @@ -9,6 +9,7 @@ enum MessageMode { definition, translation, speechToText, + nullMode } extension MessageModeExtension on MessageMode { @@ -25,6 +26,7 @@ extension MessageModeExtension on MessageMode { return Icons.book; case MessageMode.practiceActivity: return Symbols.fitness_center; + case MessageMode.nullMode: default: return Icons.error; // Icon to indicate an error or unsupported mode } @@ -42,6 +44,7 @@ extension MessageModeExtension on MessageMode { return L10n.of(context)!.definitions; case MessageMode.practiceActivity: return L10n.of(context)!.practice; + case MessageMode.nullMode: default: return L10n.of(context)! .oopsSomethingWentWrong; // Title to indicate an error or unsupported mode @@ -60,18 +63,23 @@ extension MessageModeExtension on MessageMode { return L10n.of(context)!.define; case MessageMode.practiceActivity: return L10n.of(context)!.practice; + case MessageMode.nullMode: default: return L10n.of(context)! .oopsSomethingWentWrong; // Title to indicate an error or unsupported mode } } - bool isValidMode(Event event) { + bool shouldShowAsToolbarButton(Event event) { switch (this) { case MessageMode.translation: + return event.messageType == MessageTypes.Text; case MessageMode.textToSpeech: + return event.messageType == MessageTypes.Text; case MessageMode.definition: return event.messageType == MessageTypes.Text; + case MessageMode.nullMode: + return false; case MessageMode.speechToText: return event.messageType == MessageTypes.Audio; case MessageMode.practiceActivity: diff --git a/lib/pangea/widgets/chat/message_display_card.dart b/lib/pangea/widgets/chat/message_display_card.dart new file mode 100644 index 000000000..9deba5d27 --- /dev/null +++ b/lib/pangea/widgets/chat/message_display_card.dart @@ -0,0 +1,47 @@ +import 'package:fluffychat/pangea/matrix_event_wrappers/pangea_message_event.dart'; +import 'package:fluffychat/pangea/utils/bot_style.dart'; +import 'package:flutter/material.dart'; + +class MessageDisplayCard extends StatelessWidget { + final PangeaMessageEvent messageEvent; + final String? displayText; + + const MessageDisplayCard({ + super.key, + required this.messageEvent, + required this.displayText, + }); + + @override + Widget build(BuildContext context) { + // If no display text is provided, show a message indicating no content + if (displayText == null || displayText!.isEmpty) { + return const Center( + child: Text( + 'No content available.', + style: TextStyle(color: Colors.black54, fontSize: 16), + ), + ); + } + + return Padding( + padding: const EdgeInsets.all(8), + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + Flexible( + child: Column( + children: [ + // Display the provided text + Text( + displayText!, + style: BotStyle.text(context), + ), + ], + ), + ), + ], + ), + ); + } +} diff --git a/lib/pangea/widgets/chat/message_selection_overlay.dart b/lib/pangea/widgets/chat/message_selection_overlay.dart index db421dd15..507c6c000 100644 --- a/lib/pangea/widgets/chat/message_selection_overlay.dart +++ b/lib/pangea/widgets/chat/message_selection_overlay.dart @@ -63,6 +63,10 @@ class MessageOverlayController extends State int activitiesLeftToComplete = neededActivities; + bool get messageInUserL2 => + pangeaMessageEvent.messageDisplayLangCode == + MatrixState.pangeaController.languageController.userL2?.langCode; + PangeaMessageEvent get pangeaMessageEvent => widget._pangeaMessageEvent; @override @@ -143,6 +147,11 @@ class MessageOverlayController extends State toolbarMode = MessageMode.speechToText; return; } + // if (!messageInUserL2) { + // activitiesLeftToComplete = 0; + // toolbarMode = MessageMode.nullMode; + // return; + // } if (activitiesLeftToComplete > 0) { toolbarMode = MessageMode.practiceActivity; diff --git a/lib/pangea/widgets/chat/message_toolbar.dart b/lib/pangea/widgets/chat/message_toolbar.dart index bcffbdf2a..dceffdf7f 100644 --- a/lib/pangea/widgets/chat/message_toolbar.dart +++ b/lib/pangea/widgets/chat/message_toolbar.dart @@ -6,6 +6,7 @@ import 'package:fluffychat/pangea/enum/message_mode_enum.dart'; import 'package:fluffychat/pangea/matrix_event_wrappers/pangea_message_event.dart'; import 'package:fluffychat/pangea/utils/error_handler.dart'; import 'package:fluffychat/pangea/widgets/chat/message_audio_card.dart'; +import 'package:fluffychat/pangea/widgets/chat/message_display_card.dart'; import 'package:fluffychat/pangea/widgets/chat/message_selection_overlay.dart'; import 'package:fluffychat/pangea/widgets/chat/message_speech_to_text_card.dart'; import 'package:fluffychat/pangea/widgets/chat/message_translation_card.dart'; @@ -39,7 +40,22 @@ class MessageToolbar extends StatelessWidget { ); } + // Check if the message is in the user's second language + final bool messageInUserL2 = pangeaMessageEvent.messageDisplayLangCode == + MatrixState.pangeaController.languageController.userL2?.langCode; + + // If not in the target language, set to nullMode + if (!messageInUserL2) { + overLayController.toolbarMode = MessageMode.nullMode; + } + switch (overLayController.toolbarMode) { + case MessageMode.nullMode: + return MessageDisplayCard( + messageEvent: pangeaMessageEvent, // Pass the message event here + displayText: + "Message not in target language", // Pass the display text, + ); case MessageMode.translation: return MessageTranslationCard( messageEvent: pangeaMessageEvent, diff --git a/lib/pangea/widgets/chat/message_toolbar_buttons.dart b/lib/pangea/widgets/chat/message_toolbar_buttons.dart index 41cd47c6a..190a0fdff 100644 --- a/lib/pangea/widgets/chat/message_toolbar_buttons.dart +++ b/lib/pangea/widgets/chat/message_toolbar_buttons.dart @@ -22,7 +22,7 @@ class ToolbarButtons extends StatelessWidget { overlayController.pangeaMessageEvent; List get modes => MessageMode.values - .where((mode) => mode.isValidMode(pangeaMessageEvent.event)) + .where((mode) => mode.shouldShowAsToolbarButton(pangeaMessageEvent.event)) .toList(); static const double iconWidth = 36.0;