[Message Input] Fix replyToMessage cleared bug
Signed-off-by: Sahil Kumar <[email protected]>
This commit is contained in:
@@ -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);
|
||||||
|
},
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -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 {
|
||||||
|
|||||||
Reference in New Issue
Block a user