Skip to content

Commit 5ee7729

Browse files
committed
compose: Maintain a MentionAutocompleteView when controller reports intent
1 parent 73a7e61 commit 5ee7729

File tree

1 file changed

+20
-0
lines changed

1 file changed

+20
-0
lines changed

lib/widgets/compose_box.dart

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import 'package:flutter/services.dart';
55
import 'package:image_picker/image_picker.dart';
66

77
import '../api/route/messages.dart';
8+
import '../model/autocomplete.dart';
89
import '../model/narrow.dart';
910
import 'dialog.dart';
1011
import 'store.dart';
@@ -170,6 +171,8 @@ class _StreamContentInput extends StatefulWidget {
170171
}
171172

172173
class _StreamContentInputState extends State<_StreamContentInput> {
174+
MentionAutocompleteView? _mentionAutocompleteView; // TODO different autocomplete view types
175+
173176
late String _topicTextNormalized;
174177

175178
_topicChanged() {
@@ -178,16 +181,33 @@ class _StreamContentInputState extends State<_StreamContentInput> {
178181
});
179182
}
180183

184+
_changed() {
185+
final newAutocompleteIntent = widget.controller.autocompleteIntent();
186+
if (newAutocompleteIntent != null) {
187+
final store = PerAccountStoreWidget.of(context);
188+
_mentionAutocompleteView ??= MentionAutocompleteView.init(
189+
store: store, narrow: widget.narrow);
190+
_mentionAutocompleteView!.query = newAutocompleteIntent.query;
191+
} else {
192+
if (_mentionAutocompleteView != null) {
193+
_mentionAutocompleteView!.dispose();
194+
_mentionAutocompleteView = null;
195+
}
196+
}
197+
}
198+
181199
@override
182200
void initState() {
183201
super.initState();
184202
_topicTextNormalized = widget.topicController.textNormalized();
185203
widget.topicController.addListener(_topicChanged);
204+
widget.controller.addListener(_changed);
186205
}
187206

188207
@override
189208
void dispose() {
190209
widget.topicController.removeListener(_topicChanged);
210+
widget.controller.removeListener(_changed);
191211
super.dispose();
192212
}
193213

0 commit comments

Comments
 (0)