diff --git a/assets/l10n/intl_en.arb b/assets/l10n/intl_en.arb index 1c19caa8..d6e67214 100644 --- a/assets/l10n/intl_en.arb +++ b/assets/l10n/intl_en.arb @@ -1529,11 +1529,6 @@ "type": "text", "placeholders": {} }, - "renderRichContent": "Render rich message content", - "@renderRichContent": { - "type": "text", - "placeholders": {} - }, "replaceRoomWithNewerVersion": "Replace room with newer version", "@replaceRoomWithNewerVersion": { "type": "text", @@ -2417,5 +2412,10 @@ "roomName": {} } }, - "sendReadReceipts": "Send read receipts" + "sendReadReceipts": "Send read receipts", + "sendTypingNotificationsDescription": "Other participants in a chat can see when you are typing a new message.", + "sendReadReceiptsDescription": "Andere Teilnehmer in einem Chat können sehen, ob du eine Nachricht gelesen hast.", + "formattedMessages": "Formatted messages", + "formattedMessagesDescription": "Display rich message content like bold text using markdown." + } \ No newline at end of file diff --git a/lib/pages/settings_chat/settings_chat_view.dart b/lib/pages/settings_chat/settings_chat_view.dart index 39404254..b2d4a40a 100644 --- a/lib/pages/settings_chat/settings_chat_view.dart +++ b/lib/pages/settings_chat/settings_chat_view.dart @@ -33,7 +33,8 @@ class SettingsChatView extends StatelessWidget { ), const Divider(), SettingsSwitchListTile.adaptive( - title: L10n.of(context)!.renderRichContent, + title: L10n.of(context)!.formattedMessages, + subtitle: L10n.of(context)!.formattedMessagesDescription, onChanged: (b) => AppConfig.renderHtml = b, storeKey: SettingKeys.renderHtml, defaultValue: AppConfig.renderHtml, @@ -64,18 +65,6 @@ class SettingsChatView extends StatelessWidget { defaultValue: AppConfig.autoplayImages, ), const Divider(), - SettingsSwitchListTile.adaptive( - title: L10n.of(context)!.sendTypingNotifications, - onChanged: (b) => AppConfig.sendTypingNotifications = b, - storeKey: SettingKeys.sendTypingNotifications, - defaultValue: AppConfig.sendTypingNotifications, - ), - SettingsSwitchListTile.adaptive( - title: L10n.of(context)!.sendReadReceipts, - onChanged: (b) => AppConfig.sendPublicReadReceipts = b, - storeKey: SettingKeys.sendPublicReadReceipts, - defaultValue: AppConfig.sendPublicReadReceipts, - ), SettingsSwitchListTile.adaptive( title: L10n.of(context)!.sendOnEnter, onChanged: (b) => AppConfig.sendOnEnter = b, diff --git a/lib/pages/settings_security/settings_security_view.dart b/lib/pages/settings_security/settings_security_view.dart index 6cbc377a..69753f0b 100644 --- a/lib/pages/settings_security/settings_security_view.dart +++ b/lib/pages/settings_security/settings_security_view.dart @@ -3,11 +3,14 @@ import 'package:flutter/material.dart'; import 'package:flutter_gen/gen_l10n/l10n.dart'; import 'package:go_router/go_router.dart'; +import 'package:fluffychat/config/app_config.dart'; +import 'package:fluffychat/config/setting_keys.dart'; import 'package:fluffychat/utils/beautify_string_extension.dart'; import 'package:fluffychat/utils/localized_exception_extension.dart'; import 'package:fluffychat/utils/platform_infos.dart'; import 'package:fluffychat/widgets/layouts/max_width_body.dart'; import 'package:fluffychat/widgets/matrix.dart'; +import 'package:fluffychat/widgets/settings_switch_list_tile.dart'; import 'settings_security.dart'; class SettingsSecurityView extends StatelessWidget { @@ -105,7 +108,6 @@ class SettingsSecurityView extends StatelessWidget { const Divider(height: 1), ListTile( leading: const Icon(Icons.tap_and_play), - trailing: const Icon(Icons.chevron_right_outlined), title: Text( L10n.of(context)!.dehydrate, style: const TextStyle(color: Colors.red), @@ -114,7 +116,6 @@ class SettingsSecurityView extends StatelessWidget { ), ListTile( leading: const Icon(Icons.delete_outlined), - trailing: const Icon(Icons.chevron_right_outlined), title: Text( L10n.of(context)!.deleteAccount, style: const TextStyle(color: Colors.red), @@ -129,6 +130,22 @@ class SettingsSecurityView extends StatelessWidget { ), leading: const Icon(Icons.vpn_key_outlined), ), + const Divider(height: 1), + SettingsSwitchListTile.adaptive( + title: L10n.of(context)!.sendTypingNotifications, + subtitle: + L10n.of(context)!.sendTypingNotificationsDescription, + onChanged: (b) => AppConfig.sendTypingNotifications = b, + storeKey: SettingKeys.sendTypingNotifications, + defaultValue: AppConfig.sendTypingNotifications, + ), + SettingsSwitchListTile.adaptive( + title: L10n.of(context)!.sendReadReceipts, + subtitle: L10n.of(context)!.sendReadReceiptsDescription, + onChanged: (b) => AppConfig.sendPublicReadReceipts = b, + storeKey: SettingKeys.sendPublicReadReceipts, + defaultValue: AppConfig.sendPublicReadReceipts, + ), ], ); }, diff --git a/lib/widgets/settings_switch_list_tile.dart b/lib/widgets/settings_switch_list_tile.dart index 8f4285a4..f49b9759 100644 --- a/lib/widgets/settings_switch_list_tile.dart +++ b/lib/widgets/settings_switch_list_tile.dart @@ -6,6 +6,7 @@ class SettingsSwitchListTile extends StatefulWidget { final bool defaultValue; final String storeKey; final String title; + final String? subtitle; final Function(bool)? onChanged; const SettingsSwitchListTile.adaptive({ @@ -13,6 +14,7 @@ class SettingsSwitchListTile extends StatefulWidget { this.defaultValue = false, required this.storeKey, required this.title, + this.subtitle, this.onChanged, }); @@ -23,10 +25,12 @@ class SettingsSwitchListTile extends StatefulWidget { class SettingsSwitchListTileState extends State { @override Widget build(BuildContext context) { + final subtitle = widget.subtitle; return SwitchListTile.adaptive( value: Matrix.of(context).store.getBool(widget.storeKey) ?? widget.defaultValue, title: Text(widget.title), + subtitle: subtitle == null ? null : Text(subtitle), onChanged: (bool newValue) async { widget.onChanged?.call(newValue); await Matrix.of(context).store.setBool(widget.storeKey, newValue);