[Message Input] Fix replyToMessage cleared bug

Signed-off-by: Sahil Kumar <[email protected]>
This commit is contained in:
Sahil Kumar
2021-01-04 12:52:53 +05:30
parent 80cc5e7b26
commit a2b3f34a0f
2 changed files with 15 additions and 23 deletions
+6 -3
View File
@@ -434,7 +434,7 @@ class ChannelPage extends StatefulWidget {
} }
class _ChannelPageState extends State<ChannelPage> { class _ChannelPageState extends State<ChannelPage> {
Message _replyMessage; Message _replyToMessage;
FocusNode _focusNode; FocusNode _focusNode;
@override @override
@@ -450,7 +450,7 @@ class _ChannelPageState extends State<ChannelPage> {
} }
void _reply(Message message) { void _reply(Message message) {
setState(() => _replyMessage = message); setState(() => _replyToMessage = message);
_focusNode.requestFocus(); _focusNode.requestFocus();
} }
@@ -502,7 +502,10 @@ class _ChannelPageState extends State<ChannelPage> {
), ),
MessageInput( MessageInput(
focusNode: _focusNode, focusNode: _focusNode,
replyToMessage: _replyMessage, replyToMessage: _replyToMessage,
onReplyToMessageCleared: () {
setState(() => _replyToMessage = null);
},
), ),
], ],
), ),
+9 -20
View File
@@ -111,6 +111,7 @@ class MessageInput extends StatefulWidget {
this.attachmentThumbnailBuilders, this.attachmentThumbnailBuilders,
this.focusNode, this.focusNode,
this.replyToMessage, this.replyToMessage,
this.onReplyToMessageCleared,
}) : super(key: key); }) : super(key: key);
/// Message to edit /// Message to edit
@@ -162,6 +163,9 @@ class MessageInput extends StatefulWidget {
/// ///
final Message replyToMessage; final Message replyToMessage;
///
final VoidCallback onReplyToMessageCleared;
@override @override
MessageInputState createState() => MessageInputState(); MessageInputState createState() => MessageInputState();
@@ -203,9 +207,7 @@ class MessageInputState extends State<MessageInput> {
/// The editing controller passed to the input TextField /// The editing controller passed to the input TextField
TextEditingController textEditingController; TextEditingController textEditingController;
Message _replyToMessage; bool get _hasReplyToMessage => widget.replyToMessage != null;
bool get _hasReplyToMessage => _replyToMessage != null;
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
@@ -242,9 +244,7 @@ class MessageInputState extends State<MessageInput> {
IconButton( IconButton(
visualDensity: VisualDensity.compact, visualDensity: VisualDensity.compact,
icon: StreamSvgIcon.close_small(), icon: StreamSvgIcon.close_small(),
onPressed: () { onPressed: widget.onReplyToMessageCleared,
setState(() => _replyToMessage = null);
},
), ),
], ],
), ),
@@ -1353,7 +1353,7 @@ class MessageInputState extends State<MessageInput> {
if (!_hasReplyToMessage) { if (!_hasReplyToMessage) {
return Offstage(); return Offstage();
} }
final containsUrl = _replyToMessage.attachments final containsUrl = widget.replyToMessage.attachments
?.any((element) => element.ogScrapeUrl != null) == ?.any((element) => element.ogScrapeUrl != null) ==
true; true;
return Transform( return Transform(
@@ -1362,7 +1362,7 @@ class MessageInputState extends State<MessageInput> {
child: ReplyToMessageWidget( child: ReplyToMessageWidget(
reverse: true, reverse: true,
showBorder: !containsUrl, showBorder: !containsUrl,
message: _replyToMessage, message: widget.replyToMessage,
messageTheme: StreamChatTheme.of(context).otherMessageTheme, messageTheme: StreamChatTheme.of(context).otherMessageTheme,
), ),
); );
@@ -2015,7 +2015,7 @@ class MessageInputState extends State<MessageInput> {
textEditingController.clear(); textEditingController.clear();
_attachments.clear(); _attachments.clear();
_replyToMessage = null; widget.onReplyToMessageCleared();
setState(() { setState(() {
_messageIsPresent = false; _messageIsPresent = false;
@@ -2091,9 +2091,6 @@ class MessageInputState extends State<MessageInput> {
@override @override
void initState() { void initState() {
super.initState(); super.initState();
_replyToMessage = widget.replyToMessage;
_focusNode = widget.focusNode ?? FocusNode(); _focusNode = widget.focusNode ?? FocusNode();
_emojiNames = Emoji.all().map((e) => e.name); _emojiNames = Emoji.all().map((e) => e.name);
@@ -2155,14 +2152,6 @@ class MessageInputState extends State<MessageInput> {
} }
super.didChangeDependencies(); super.didChangeDependencies();
} }
@override
void didUpdateWidget(MessageInput oldWidget) {
super.didUpdateWidget(oldWidget);
if (widget.replyToMessage?.id != _replyToMessage?.id) {
_replyToMessage = widget.replyToMessage;
}
}
} }
class _SendingAttachment { class _SendingAttachment {