From cd50460939a49084f28ce0e9bae63a49cd44a99b Mon Sep 17 00:00:00 2001 From: choreo development Date: Thu, 24 Oct 2024 16:36:29 -0400 Subject: [PATCH 1/2] 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; From fa8526d58d8d901927a579edc3b1d809c11ec642 Mon Sep 17 00:00:00 2001 From: ggurdin Date: Fri, 25 Oct 2024 09:15:12 -0400 Subject: [PATCH 2/2] added copy to arb file, added padding to widget to show text in toolbar --- assets/l10n/intl_en.arb | 3 +- lib/pangea/enum/message_mode_enum.dart | 6 --- .../widgets/chat/message_display_card.dart | 47 ------------------- lib/pangea/widgets/chat/message_toolbar.dart | 23 +++++---- ..._define.dart => message_display_card.dart} | 10 ++-- pubspec.yaml | 2 +- 6 files changed, 20 insertions(+), 71 deletions(-) delete mode 100644 lib/pangea/widgets/chat/message_display_card.dart rename lib/pangea/widgets/{select_to_define.dart => message_display_card.dart} (69%) diff --git a/assets/l10n/intl_en.arb b/assets/l10n/intl_en.arb index a9f2f1db0..c54d4e7b0 100644 --- a/assets/l10n/intl_en.arb +++ b/assets/l10n/intl_en.arb @@ -4365,5 +4365,6 @@ "chooseVoice": "Choose a voice", "enterLanguageLevel": "Please enter a language level", "enterDiscussionTopic": "Please enter a discussion topic", - "selectBotChatMode": "Select chat mode" + "selectBotChatMode": "Select chat mode", + "messageNotInTargetLang": "Message not in target language" } \ No newline at end of file diff --git a/lib/pangea/enum/message_mode_enum.dart b/lib/pangea/enum/message_mode_enum.dart index 544e2a270..cfc42f63b 100644 --- a/lib/pangea/enum/message_mode_enum.dart +++ b/lib/pangea/enum/message_mode_enum.dart @@ -9,7 +9,6 @@ enum MessageMode { definition, translation, speechToText, - nullMode } extension MessageModeExtension on MessageMode { @@ -26,7 +25,6 @@ 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 } @@ -44,7 +42,6 @@ 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 @@ -63,7 +60,6 @@ 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 @@ -78,8 +74,6 @@ extension MessageModeExtension on MessageMode { 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 deleted file mode 100644 index 9deba5d27..000000000 --- a/lib/pangea/widgets/chat/message_display_card.dart +++ /dev/null @@ -1,47 +0,0 @@ -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_toolbar.dart b/lib/pangea/widgets/chat/message_toolbar.dart index b17bf78a2..36b3cc45c 100644 --- a/lib/pangea/widgets/chat/message_toolbar.dart +++ b/lib/pangea/widgets/chat/message_toolbar.dart @@ -6,18 +6,18 @@ 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'; import 'package:fluffychat/pangea/widgets/chat/message_unsubscribed_card.dart'; import 'package:fluffychat/pangea/widgets/chat/tts_controller.dart'; import 'package:fluffychat/pangea/widgets/igc/word_data_card.dart'; +import 'package:fluffychat/pangea/widgets/message_display_card.dart'; import 'package:fluffychat/pangea/widgets/practice_activity/practice_activity_card.dart'; -import 'package:fluffychat/pangea/widgets/select_to_define.dart'; import 'package:fluffychat/widgets/matrix.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; +import 'package:flutter_gen/gen_l10n/l10n.dart'; const double minCardHeight = 70; @@ -33,7 +33,7 @@ class MessageToolbar extends StatelessWidget { required this.tts, }); - Widget get toolbarContent { + Widget toolbarContent(BuildContext context) { final bool subscribed = MatrixState.pangeaController.subscriptionController.isSubscribed; @@ -49,16 +49,13 @@ class MessageToolbar extends StatelessWidget { // If not in the target language, set to nullMode if (!messageInUserL2) { - overLayController.toolbarMode = MessageMode.nullMode; + return MessageDisplayCard( + displayText: + L10n.of(context)!.messageNotInTargetLang, // Pass the display text, + ); } 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, @@ -78,7 +75,9 @@ class MessageToolbar extends StatelessWidget { ); case MessageMode.definition: if (!overLayController.isSelection) { - return const SelectToDefine(); + return MessageDisplayCard( + displayText: L10n.of(context)!.selectToDefine, + ); } else { try { final selectedText = overLayController.targetText; @@ -143,7 +142,7 @@ class MessageToolbar extends StatelessWidget { child: SingleChildScrollView( child: AnimatedSize( duration: FluffyThemes.animationDuration, - child: toolbarContent, + child: toolbarContent(context), ), ), ); diff --git a/lib/pangea/widgets/select_to_define.dart b/lib/pangea/widgets/message_display_card.dart similarity index 69% rename from lib/pangea/widgets/select_to_define.dart rename to lib/pangea/widgets/message_display_card.dart index 968eaa147..8536f2c99 100644 --- a/lib/pangea/widgets/select_to_define.dart +++ b/lib/pangea/widgets/message_display_card.dart @@ -1,10 +1,12 @@ import 'package:fluffychat/pangea/utils/bot_style.dart'; import 'package:flutter/material.dart'; -import 'package:flutter_gen/gen_l10n/l10n.dart'; -class SelectToDefine extends StatelessWidget { - const SelectToDefine({ +class MessageDisplayCard extends StatelessWidget { + final String displayText; + + const MessageDisplayCard({ super.key, + required this.displayText, }); @override @@ -12,7 +14,7 @@ class SelectToDefine extends StatelessWidget { return Padding( padding: const EdgeInsets.fromLTRB(16, 20, 16, 16), child: Text( - L10n.of(context)!.selectToDefine, + displayText, style: BotStyle.text(context), textAlign: TextAlign.center, ), diff --git a/pubspec.yaml b/pubspec.yaml index 80906d77c..2ae643555 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -6,7 +6,7 @@ description: Learn a language while texting your friends. # Pangea# publish_to: none # On version bump also increase the build number for F-Droid -version: 1.22.6+3556 +version: 1.22.7+3557 environment: sdk: ">=3.0.0 <4.0.0"