fix message input quoted message

This commit is contained in:
Salvatore Giordano
2021-12-15 10:51:28 +01:00
parent ce20c247d7
commit ec28d00e81
5 changed files with 81 additions and 55 deletions
@@ -40,7 +40,10 @@ class MessageInputController extends ValueNotifier<Message> {
MessageInputController._({
required Message initialMessage,
}) : _textEditingController =
TextEditingController(text: initialMessage.text),
TextEditingController.fromValue(TextEditingValue(
text: initialMessage.text ?? '',
composing: TextRange.collapsed(initialMessage.text?.length ?? 0),
)),
_initialMessage = initialMessage,
super(initialMessage) {
addListener(_textEditingSyncer);
@@ -83,6 +86,22 @@ class MessageInputController extends ValueNotifier<Message> {
value = message;
}
/// Sets the message that's being quoted.
set quotedMessage(Message message) {
value = value.copyWith(
quotedMessage: message,
quotedMessageId: message.id,
);
}
/// Clears the quoted message.
void clearQuotedMessage() {
value = value.copyWith(
quotedMessageId: null,
quotedMessage: null,
);
}
/// Sets a command for the message.
set command(Command command) {
value = value.copyWith(
@@ -3,28 +3,12 @@ import 'package:stream_chat_flutter_core/stream_chat_flutter_core.dart';
void main() {
testWidgets(
'should instantiate a new MessageInputController with default validator'
' and empty message',
'should instantiate a new MessageInputController with empty message',
(tester) async {
final controller = MessageInputController();
final controller = MessageInputController()..text = 'test';
expect(controller.isValid, false);
controller.text = 'test';
expect(controller.isValid, true);
},
);
testWidgets(
'should instantiate a new MessageInputController with default validator'
' and specified message',
(tester) async {
final message = Message(text: 'test');
final controller = MessageInputController(
message: message,
);
expect(controller.message, message);
expect(controller.isValid, true);
expect(controller.text, 'test');
expect(controller.message.text, 'test');
},
);
}