add debounce to mentions overlay

This commit is contained in:
Salvatore Giordano
2020-11-24 16:02:02 +01:00
parent 84fea9f32b
commit 5a45454ac8
+21 -6
View File
@@ -380,11 +380,19 @@ class MessageInputState extends State<MessageInput> {
Future<List<Member>> queryMembers; Future<List<Member>> queryMembers;
if (query.isNotEmpty) { if (query.isNotEmpty) {
queryMembers = StreamChannel.of(context).channel.queryMembers(filter: { queryMembers = StreamChannel.of(context).channel.queryMembers(
'name': { filter: {
'\$autocomplete': query, 'name': {
'\$autocomplete': query,
},
}, },
}).then((res) => res.members); sort: [
SortOption(
'name',
direction: SortOption.ASC,
),
],
).then((res) => res.members);
} }
final members = StreamChannel.of(context).channel.state.members?.where((m) { final members = StreamChannel.of(context).channel.state.members?.where((m) {
@@ -952,6 +960,7 @@ class MessageInputState extends State<MessageInput> {
} }
} }
Timer _debounce;
void _onChange() { void _onChange() {
final s = textEditingController.text; final s = textEditingController.text;
StreamChannel.of(context).channel.keyStroke( StreamChannel.of(context).channel.keyStroke(
@@ -980,8 +989,14 @@ class MessageInputState extends State<MessageInput> {
.split(' ') .split(' ')
.last .last
.contains('@')) { .contains('@')) {
_mentionsOverlay = _buildMentionsOverlayEntry(); if (_debounce?.isActive == true) _debounce.cancel();
Overlay.of(context).insert(_mentionsOverlay); _debounce = Timer(
const Duration(milliseconds: 350),
() {
_mentionsOverlay = _buildMentionsOverlayEntry();
Overlay.of(context).insert(_mentionsOverlay);
},
);
} }
} }