diff --git a/lib/cwtch/gomobile.dart b/lib/cwtch/gomobile.dart index 07501e17..91a08cec 100644 --- a/lib/cwtch/gomobile.dart +++ b/lib/cwtch/gomobile.dart @@ -196,7 +196,7 @@ class CwtchGomobile implements Cwtch { @override // ignore: non_constant_identifier_names void DeleteContact(String profileOnion, int conversation) { - cwtchPlatform.invokeMethod("DeleteContact", {"ProfileOnion": profileOnion, "conversation": conversation}); + cwtchPlatform.invokeMethod("DeleteConversation", {"ProfileOnion": profileOnion, "conversation": conversation}); } @override diff --git a/lib/models/contact.dart b/lib/models/contact.dart index 04c97a5c..81669a8c 100644 --- a/lib/models/contact.dart +++ b/lib/models/contact.dart @@ -2,7 +2,6 @@ import 'package:cwtch/widgets/messagerow.dart'; import 'package:flutter/widgets.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart'; - import 'message.dart'; import 'messagecache.dart'; diff --git a/lib/settings.dart b/lib/settings.dart index 2462cbb3..3b9a80cd 100644 --- a/lib/settings.dart +++ b/lib/settings.dart @@ -296,16 +296,21 @@ class Settings extends ChangeNotifier { static String notificationPolicyToString(NotificationPolicy np, BuildContext context) { switch (np) { - case NotificationPolicy.Mute: return AppLocalizations.of(context)!.notificationPolicyMute; - case NotificationPolicy.OptIn: return AppLocalizations.of(context)!.notificationPolicyOptIn; - case NotificationPolicy.DefaultAll: return AppLocalizations.of(context)!.notificationPolicyDefaultAll; + case NotificationPolicy.Mute: + return AppLocalizations.of(context)!.notificationPolicyMute; + case NotificationPolicy.OptIn: + return AppLocalizations.of(context)!.notificationPolicyOptIn; + case NotificationPolicy.DefaultAll: + return AppLocalizations.of(context)!.notificationPolicyDefaultAll; } } static String notificationContentToString(NotificationContent nc, BuildContext context) { switch (nc) { - case NotificationContent.SimpleEvent: return AppLocalizations.of(context)!.notificationContentSimpleEvent; - case NotificationContent.ContactInfo: return AppLocalizations.of(context)!.notificationContentContactInfo; + case NotificationContent.SimpleEvent: + return AppLocalizations.of(context)!.notificationContentSimpleEvent; + case NotificationContent.ContactInfo: + return AppLocalizations.of(context)!.notificationContentContactInfo; } } diff --git a/lib/views/globalsettingsview.dart b/lib/views/globalsettingsview.dart index 3d14065e..f7d040bd 100644 --- a/lib/views/globalsettingsview.dart +++ b/lib/views/globalsettingsview.dart @@ -137,21 +137,23 @@ class _GlobalSettingsViewState extends State { style: TextStyle(color: settings.current().mainTextColor), ), leading: Icon(Icons.table_chart, color: settings.current().mainTextColor), - trailing: DropdownButton( - value: settings.uiColumnModeLandscape.toString(), - onChanged: (String? newValue) { - settings.uiColumnModeLandscape = Settings.uiColumnModeFromString(newValue!); - saveSettings(context); - }, - items: Settings.uiColumnModeOptions(true).map>((DualpaneMode value) { - return DropdownMenuItem( - value: value.toString(), - child: Text( - Settings.uiColumnModeToString(value, context), - overflow: TextOverflow.ellipsis, - ), - ); - }).toList())), + trailing: Container( + width: MediaQuery.of(context).size.width / 4, + child: DropdownButton( + value: settings.uiColumnModeLandscape.toString(), + onChanged: (String? newValue) { + settings.uiColumnModeLandscape = Settings.uiColumnModeFromString(newValue!); + saveSettings(context); + }, + items: Settings.uiColumnModeOptions(true).map>((DualpaneMode value) { + return DropdownMenuItem( + value: value.toString(), + child: Text( + Settings.uiColumnModeToString(value, context), + overflow: TextOverflow.ellipsis, + ), + ); + }).toList()))), SwitchListTile( title: Text(AppLocalizations.of(context)!.streamerModeLabel, style: TextStyle(color: settings.current().mainTextColor)), subtitle: Text(AppLocalizations.of(context)!.descriptionStreamerMode), @@ -192,21 +194,23 @@ class _GlobalSettingsViewState extends State { ListTile( title: Text(AppLocalizations.of(context)!.notificationContentSettingLabel), subtitle: Text(AppLocalizations.of(context)!.notificationContentSettingDescription), - trailing: DropdownButton( - value: settings.notificationContent, - onChanged: (NotificationContent? newValue) { - settings.notificationContent = newValue!; - saveSettings(context); - }, - items: NotificationContent.values.map>((NotificationContent value) { - return DropdownMenuItem( - value: value, - child: Text( - Settings.notificationContentToString(value, context), - overflow: TextOverflow.ellipsis, - ), - ); - }).toList()), + trailing: Container( + width: MediaQuery.of(context).size.width / 4, + child: DropdownButton( + value: settings.notificationContent, + onChanged: (NotificationContent? newValue) { + settings.notificationContent = newValue!; + saveSettings(context); + }, + items: NotificationContent.values.map>((NotificationContent value) { + return DropdownMenuItem( + value: value, + child: Text( + Settings.notificationContentToString(value, context), + overflow: TextOverflow.ellipsis, + ), + ); + }).toList())), leading: Icon(CwtchIcons.chat_bubble_empty_24px, color: settings.current().mainTextColor), ), SwitchListTile( diff --git a/lib/views/messageview.dart b/lib/views/messageview.dart index d82f2e35..ecdc6527 100644 --- a/lib/views/messageview.dart +++ b/lib/views/messageview.dart @@ -197,6 +197,10 @@ class _MessageViewState extends State { static const GroupMessageLengthMax = 1600; void _sendMessage([String? ignoredParam]) { + // Trim message + final messageWithoutNewLine = ctrlrCompose.value.text.trimRight(); + ctrlrCompose.value = TextEditingValue(text: messageWithoutNewLine); + var isGroup = Provider.of(context, listen: false).contactList.getContact(Provider.of(context, listen: false).selectedConversation!)!.isGroup; // peers and groups currently have different length constraints (servers can store less)... @@ -372,11 +376,9 @@ class _MessageViewState extends State { } // Send the message if enter is pressed without the shift key... - void handleKeyPress(event) { - var data = event.data as RawKeyEventData; - if (data.logicalKey == LogicalKeyboardKey.enter && !event.isShiftPressed) { - final messageWithoutNewLine = ctrlrCompose.value.text.trimRight(); - ctrlrCompose.value = TextEditingValue(text: messageWithoutNewLine); + void handleKeyPress(RawKeyEvent event) { + var data = event.data; + if ((data.logicalKey == LogicalKeyboardKey.enter && !event.isShiftPressed) || data.logicalKey == LogicalKeyboardKey.numpadEnter && !event.isShiftPressed) { _sendMessage(); } } diff --git a/lib/views/splashView.dart b/lib/views/splashView.dart index 47b504ed..1beedc8d 100644 --- a/lib/views/splashView.dart +++ b/lib/views/splashView.dart @@ -17,7 +17,7 @@ class _SplashViewState extends State { Widget build(BuildContext context) { var cwtch = Provider.of(context, listen: false).cwtch; if (!cwtch.isL10nInit()) { - if (AppLocalizations.of(context) != null && AppLocalizations.of(context)!.newMessageNotificationSimple.isNotEmpty ) { + if (AppLocalizations.of(context) != null && AppLocalizations.of(context)!.newMessageNotificationSimple.isNotEmpty) { cwtch.l10nInit(AppLocalizations.of(context)!.newMessageNotificationSimple, AppLocalizations.of(context)!.newMessageNotificationConversationInfo); } } diff --git a/pubspec.yaml b/pubspec.yaml index 5c0d3327..706c652d 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -15,7 +15,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev # In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion. # Read more about iOS versioning at # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html -version: 1.6.0+25 +version: 1.6.1+26 environment: sdk: ">=2.15.0 <3.0.0"