From 0880f6d12097341a5b723231c7006da55022414b Mon Sep 17 00:00:00 2001 From: Gabby Gurdin Date: Mon, 25 Mar 2024 10:56:04 -0400 Subject: [PATCH] add toggle for auto-playing messages in learning settings --- assets/l10n/intl_en.arb | 4 +++- assets/l10n/intl_es.arb | 5 ++++- lib/pangea/constants/local.key.dart | 1 + .../settings_learning_view.dart | 19 ++++++++++++++----- .../utils/get_chat_list_item_subtitle.dart | 5 +++-- lib/pangea/widgets/chat/message_toolbar.dart | 9 ++++++++- 6 files changed, 33 insertions(+), 10 deletions(-) diff --git a/assets/l10n/intl_en.arb b/assets/l10n/intl_en.arb index d64b9d201..0783205a6 100644 --- a/assets/l10n/intl_en.arb +++ b/assets/l10n/intl_en.arb @@ -3950,5 +3950,7 @@ }, "kickBotWarning": "Kicking Pangea Bot will remove the conversation bot from this chat.", "joinToView": "Join this room to view details", - "refresh": "Refresh" + "refresh": "Refresh", + "autoPlayTitle": "Auto Play Messages", + "autoPlayDesc": "When enabled, the text-to-speech audio of messages will play automatically when selected." } \ No newline at end of file diff --git a/assets/l10n/intl_es.arb b/assets/l10n/intl_es.arb index 4f6ba040e..4a2825a2d 100644 --- a/assets/l10n/intl_es.arb +++ b/assets/l10n/intl_es.arb @@ -4583,5 +4583,8 @@ "selectToDefine": "Haga doble clic en una palabra para ver su definición.", "kickBotWarning": "Patear Pangea Bot eliminará el bot de conversación de este chat.", "activateTrial": "Activar prueba gratuita", - "refresh": "Actualizar" + "refresh": "Actualizar", + "joinToView": "Únete a esta sala para ver los detalles", + "autoPlayTitle": "Reproducción automática de mensajes", + "autoPlayDesc": "Cuando está activado, el audio de texto a voz de los mensajes se reproducirá automáticamente cuando se seleccione." } diff --git a/lib/pangea/constants/local.key.dart b/lib/pangea/constants/local.key.dart index a830b9f5a..839e6d89d 100644 --- a/lib/pangea/constants/local.key.dart +++ b/lib/pangea/constants/local.key.dart @@ -11,4 +11,5 @@ class PLocalKey { static const String activatedTrialKey = '7C4EuKIsph'; static const String dismissedPaywall = 'dismissedPaywall'; static const String paywallBackoff = 'paywallBackoff'; + static const String autoPlayMessages = 'autoPlayMessages'; } diff --git a/lib/pangea/pages/settings_learning/settings_learning_view.dart b/lib/pangea/pages/settings_learning/settings_learning_view.dart index 657ee0770..f397a834a 100644 --- a/lib/pangea/pages/settings_learning/settings_learning_view.dart +++ b/lib/pangea/pages/settings_learning/settings_learning_view.dart @@ -1,8 +1,4 @@ -import 'package:flutter/material.dart'; - -import 'package:flutter_gen/gen_l10n/l10n.dart'; -import 'package:future_loading_dialog/future_loading_dialog.dart'; - +import 'package:fluffychat/pangea/constants/local.key.dart'; import 'package:fluffychat/pangea/models/class_model.dart'; import 'package:fluffychat/pangea/pages/settings_learning/settings_learning.dart'; import 'package:fluffychat/pangea/utils/error_handler.dart'; @@ -10,6 +6,10 @@ import 'package:fluffychat/pangea/widgets/user_settings/country_picker_tile.dart import 'package:fluffychat/pangea/widgets/user_settings/language_tile.dart'; import 'package:fluffychat/pangea/widgets/user_settings/p_settings_switch_list_tile.dart'; import 'package:fluffychat/widgets/layouts/max_width_body.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_gen/gen_l10n/l10n.dart'; +import 'package:future_loading_dialog/future_loading_dialog.dart'; + import '../../../config/app_config.dart'; class SettingsLearningView extends StatelessWidget { @@ -60,6 +60,15 @@ class SettingsLearningView extends StatelessWidget { subtitle: setting.toolDescription(context), pStoreKey: setting.toString(), ), + PSettingsSwitchListTile.adaptive( + defaultValue: controller.pangeaController.pStoreService.read( + PLocalKey.autoPlayMessages, + ) ?? + true, + title: L10n.of(context)!.autoPlayTitle, + subtitle: L10n.of(context)!.autoPlayDesc, + pStoreKey: PLocalKey.autoPlayMessages, + ), ], ), ), diff --git a/lib/pangea/utils/get_chat_list_item_subtitle.dart b/lib/pangea/utils/get_chat_list_item_subtitle.dart index 4febedcb3..cddf31435 100644 --- a/lib/pangea/utils/get_chat_list_item_subtitle.dart +++ b/lib/pangea/utils/get_chat_list_item_subtitle.dart @@ -31,8 +31,9 @@ class GetChatListItemSubtitle { ); while (index < timeline.events.length && - timeline.events[index].content.tryGet(ModelKey.transcription) != - null) { + (timeline.events[index].content.tryGet(ModelKey.transcription) != + null || + timeline.events[index].type != EventTypes.Message)) { index++; } diff --git a/lib/pangea/widgets/chat/message_toolbar.dart b/lib/pangea/widgets/chat/message_toolbar.dart index f0d1dcad3..2e9627c71 100644 --- a/lib/pangea/widgets/chat/message_toolbar.dart +++ b/lib/pangea/widgets/chat/message_toolbar.dart @@ -2,6 +2,7 @@ import 'dart:async'; import 'package:fluffychat/config/themes.dart'; import 'package:fluffychat/pages/chat/chat.dart'; +import 'package:fluffychat/pangea/constants/local.key.dart'; import 'package:fluffychat/pangea/models/pangea_message_event.dart'; import 'package:fluffychat/pangea/utils/any_state_holder.dart'; import 'package:fluffychat/pangea/utils/error_handler.dart'; @@ -280,7 +281,13 @@ class MessageToolbarState extends State { }); WidgetsBinding.instance.addPostFrameCallback((timeStamp) { - updateMode(MessageMode.play); + final bool autoplay = MatrixState.pangeaController.pStoreService.read( + PLocalKey.autoPlayMessages, + ) ?? + true; + autoplay + ? updateMode(MessageMode.play) + : updateMode(MessageMode.translation); }); Timer? timer;