mirror of
https://github.com/krille-chan/fluffychat
synced 2024-09-10 11:45:10 +00:00
feat: option to not send typing notifications
This commit is contained in:
parent
4bb3434519
commit
57b026b913
6 changed files with 36 additions and 13 deletions
|
@ -189,6 +189,8 @@
|
|||
"supportedVersions": {}
|
||||
}
|
||||
},
|
||||
"sendTypingNotifications": "Send typing notifications",
|
||||
"@sendTypingNotifications": {},
|
||||
"sendOnEnter": "Send on enter",
|
||||
"@sendOnEnter": {},
|
||||
"badServerVersionsException": "The homeserver supports the Spec versions:\n{serverVersions}\nBut this app supports only {supportedVersions}",
|
||||
|
|
|
@ -49,6 +49,7 @@ abstract class AppConfig {
|
|||
static bool showDirectChatsInSpaces = true;
|
||||
static bool separateChatTypes = false;
|
||||
static bool autoplayImages = true;
|
||||
static bool sendTypingNotifications = true;
|
||||
static bool sendOnEnter = false;
|
||||
static bool experimentalVoip = false;
|
||||
static const bool hideTypingUsernames = false;
|
||||
|
|
|
@ -26,6 +26,8 @@ abstract class SettingKeys {
|
|||
static const String dontAskForBootstrapKey =
|
||||
'chat.fluffychat.dont_ask_bootstrap';
|
||||
static const String autoplayImages = 'chat.fluffy.autoplay_images';
|
||||
static const String sendTypingNotifications =
|
||||
'chat.fluffy.send_typing_notifications';
|
||||
static const String sendOnEnter = 'chat.fluffy.send_on_enter';
|
||||
static const String experimentalVoip = 'chat.fluffy.experimental_voip';
|
||||
}
|
||||
|
|
|
@ -19,6 +19,7 @@ import 'package:scroll_to_index/scroll_to_index.dart';
|
|||
import 'package:shared_preferences/shared_preferences.dart';
|
||||
import 'package:vrouter/vrouter.dart';
|
||||
|
||||
import 'package:fluffychat/config/app_config.dart';
|
||||
import 'package:fluffychat/pages/chat/chat_view.dart';
|
||||
import 'package:fluffychat/pages/chat/event_info_dialog.dart';
|
||||
import 'package:fluffychat/pages/chat/recording_dialog.dart';
|
||||
|
@ -1139,19 +1140,24 @@ class ChatController extends State<ChatPageWithRoom> {
|
|||
}
|
||||
}
|
||||
}
|
||||
typingCoolDown?.cancel();
|
||||
typingCoolDown = Timer(const Duration(seconds: 2), () {
|
||||
typingCoolDown = null;
|
||||
currentlyTyping = false;
|
||||
room.setTyping(false);
|
||||
});
|
||||
typingTimeout ??= Timer(const Duration(seconds: 30), () {
|
||||
typingTimeout = null;
|
||||
currentlyTyping = false;
|
||||
});
|
||||
if (!currentlyTyping) {
|
||||
currentlyTyping = true;
|
||||
room.setTyping(true, timeout: const Duration(seconds: 30).inMilliseconds);
|
||||
if (AppConfig.sendTypingNotifications) {
|
||||
typingCoolDown?.cancel();
|
||||
typingCoolDown = Timer(const Duration(seconds: 2), () {
|
||||
typingCoolDown = null;
|
||||
currentlyTyping = false;
|
||||
room.setTyping(false);
|
||||
});
|
||||
typingTimeout ??= Timer(const Duration(seconds: 30), () {
|
||||
typingTimeout = null;
|
||||
currentlyTyping = false;
|
||||
});
|
||||
if (!currentlyTyping) {
|
||||
currentlyTyping = true;
|
||||
room.setTyping(
|
||||
true,
|
||||
timeout: const Duration(seconds: 30).inMilliseconds,
|
||||
);
|
||||
}
|
||||
}
|
||||
setState(() => inputText = text);
|
||||
}
|
||||
|
|
|
@ -66,6 +66,12 @@ 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)!.sendOnEnter,
|
||||
onChanged: (b) => AppConfig.sendOnEnter = b,
|
||||
|
|
|
@ -489,6 +489,12 @@ class MatrixState extends State<Matrix> with WidgetsBindingObserver {
|
|||
store
|
||||
.getItemBool(SettingKeys.autoplayImages, AppConfig.autoplayImages)
|
||||
.then((value) => AppConfig.autoplayImages = value);
|
||||
store
|
||||
.getItemBool(
|
||||
SettingKeys.sendTypingNotifications,
|
||||
AppConfig.sendTypingNotifications,
|
||||
)
|
||||
.then((value) => AppConfig.sendTypingNotifications = value);
|
||||
store
|
||||
.getItemBool(SettingKeys.sendOnEnter, AppConfig.sendOnEnter)
|
||||
.then((value) => AppConfig.sendOnEnter = value);
|
||||
|
|
Loading…
Reference in a new issue