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/pages/login/login.dart b/lib/pages/login/login.dart index 61a4fe5c8..19ceadf18 100644 --- a/lib/pages/login/login.dart +++ b/lib/pages/login/login.dart @@ -1,16 +1,15 @@ import 'dart:async'; -import 'package:flutter/material.dart'; - import 'package:adaptive_dialog/adaptive_dialog.dart'; -import 'package:flutter_gen/gen_l10n/l10n.dart'; -import 'package:future_loading_dialog/future_loading_dialog.dart'; -import 'package:matrix/matrix.dart'; - import 'package:fluffychat/pangea/controllers/pangea_controller.dart'; import 'package:fluffychat/pangea/utils/firebase_analytics.dart'; import 'package:fluffychat/utils/localized_exception_extension.dart'; import 'package:fluffychat/widgets/matrix.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_gen/gen_l10n/l10n.dart'; +import 'package:future_loading_dialog/future_loading_dialog.dart'; +import 'package:matrix/matrix.dart'; + import '../../utils/platform_infos.dart'; import 'login_view.dart'; @@ -75,7 +74,13 @@ class LoginController extends State { _coolDown?.cancel(); try { - final username = usernameController.text; + // #Pangea + String username = usernameController.text; + if (RegExp(r'^@(\w+):').hasMatch(username)) { + username = + RegExp(r'^@(\w+):').allMatches(username).elementAt(0).group(1)!; + } + // Pangea# AuthenticationIdentifier identifier; if (username.isEmail) { identifier = AuthenticationThirdPartyIdentifier( diff --git a/lib/pages/login/login_view.dart b/lib/pages/login/login_view.dart index f4d2bf3af..65a297c66 100644 --- a/lib/pages/login/login_view.dart +++ b/lib/pages/login/login_view.dart @@ -89,7 +89,9 @@ class LoginView extends StatelessWidget { readOnly: controller.loading, autocorrect: false, autofocus: true, - onChanged: controller.checkWellKnownWithCoolDown, + // #Pangea + // onChanged: controller.checkWellKnownWithCoolDown, + // Pangea# controller: controller.usernameController, textInputAction: TextInputAction.next, keyboardType: TextInputType.emailAddress, 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;