From 54aacc1c35bff24e7404d8bc7ed8f78c15e157a6 Mon Sep 17 00:00:00 2001 From: Christian Pauly Date: Tue, 24 Aug 2021 20:43:21 +0200 Subject: [PATCH] feat: Send on enter --- assets/l10n/intl_en.arb | 1 + lib/config/app_config.dart | 1 + lib/config/setting_keys.dart | 1 + lib/pages/views/chat_view.dart | 5 ++++- lib/pages/views/settings_chat_view.dart | 8 ++++++++ lib/widgets/matrix.dart | 3 +++ 6 files changed, 18 insertions(+), 1 deletion(-) diff --git a/assets/l10n/intl_en.arb b/assets/l10n/intl_en.arb index 84848a41..e545fb1b 100644 --- a/assets/l10n/intl_en.arb +++ b/assets/l10n/intl_en.arb @@ -174,6 +174,7 @@ "supportedVersions": {} } }, + "sendOnEnter": "Send on enter", "badServerVersionsException": "The homeserver supports the Spec versions:\n{serverVersions}\nBut this app supports only {supportedVersions}", "@badServerVersionsException": { "type": "text", diff --git a/lib/config/app_config.dart b/lib/config/app_config.dart index c6f04334..31f722dd 100644 --- a/lib/config/app_config.dart +++ b/lib/config/app_config.dart @@ -30,6 +30,7 @@ abstract class AppConfig { static bool hideRedactedEvents = false; static bool hideUnknownEvents = true; static bool autoplayImages = true; + static bool sendOnEnter = false; static const bool hideTypingUsernames = false; static const bool hideAllStateEvents = false; static const String inviteLinkPrefix = 'https://matrix.to/#/'; diff --git a/lib/config/setting_keys.dart b/lib/config/setting_keys.dart index d0bd7e66..4143417d 100644 --- a/lib/config/setting_keys.dart +++ b/lib/config/setting_keys.dart @@ -21,4 +21,5 @@ abstract class SettingKeys { static const String dontAskForBootstrapKey = 'chat.fluffychat.dont_ask_bootstrap'; static const String autoplayImages = 'chat.fluffy.autoplay_images'; + static const String sendOnEnter = 'chat.fluffy.send_on_enter'; } diff --git a/lib/pages/views/chat_view.dart b/lib/pages/views/chat_view.dart index 12f18552..2016fe48 100644 --- a/lib/pages/views/chat_view.dart +++ b/lib/pages/views/chat_view.dart @@ -1,6 +1,7 @@ import 'dart:ui'; import 'package:emoji_picker_flutter/emoji_picker_flutter.dart'; +import 'package:fluffychat/config/app_config.dart'; import 'package:matrix/matrix.dart'; import 'package:fluffychat/pages/chat.dart'; import 'package:fluffychat/widgets/avatar.dart'; @@ -697,7 +698,9 @@ class ChatView extends StatelessWidget { minLines: 1, maxLines: 8, autofocus: !PlatformInfos.isMobile, - keyboardType: TextInputType.multiline, + keyboardType: AppConfig.sendOnEnter + ? null + : TextInputType.multiline, onSubmitted: controller.onInputBarSubmitted, focusNode: controller.inputFocus, diff --git a/lib/pages/views/settings_chat_view.dart b/lib/pages/views/settings_chat_view.dart index b517092c..715ee030 100644 --- a/lib/pages/views/settings_chat_view.dart +++ b/lib/pages/views/settings_chat_view.dart @@ -1,5 +1,6 @@ import 'package:fluffychat/config/app_config.dart'; import 'package:fluffychat/config/setting_keys.dart'; +import 'package:fluffychat/utils/platform_infos.dart'; import 'package:fluffychat/widgets/layouts/max_width_body.dart'; import 'package:fluffychat/widgets/settings_switch_list_tile.dart'; import 'package:flutter/material.dart'; @@ -55,6 +56,13 @@ class SettingsChatView extends StatelessWidget { storeKey: SettingKeys.autoplayImages, defaultValue: AppConfig.autoplayImages, ), + if (PlatformInfos.isMobile) + SettingsSwitchListTile( + title: L10n.of(context).sendOnEnter, + onChanged: (b) => AppConfig.sendOnEnter = b, + storeKey: SettingKeys.sendOnEnter, + defaultValue: AppConfig.sendOnEnter, + ), ], ), ), diff --git a/lib/widgets/matrix.dart b/lib/widgets/matrix.dart index e86fc2de..c1b7f877 100644 --- a/lib/widgets/matrix.dart +++ b/lib/widgets/matrix.dart @@ -419,6 +419,9 @@ class MatrixState extends State with WidgetsBindingObserver { store .getItemBool(SettingKeys.autoplayImages, AppConfig.autoplayImages) .then((value) => AppConfig.autoplayImages = value); + store + .getItemBool(SettingKeys.sendOnEnter, AppConfig.sendOnEnter) + .then((value) => AppConfig.sendOnEnter = value); } }