From 08e61c0db1354f08576fbdb971bb071a16176327 Mon Sep 17 00:00:00 2001 From: Inex Code Date: Fri, 23 Oct 2020 15:45:22 +0000 Subject: [PATCH] fix: return text field to the previous state after editing message --- CHANGELOG.md | 1 + lib/views/chat.dart | 14 +++++++++++--- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3d111481..5dc25c96 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,6 +18,7 @@ - Show device name in account information correctly - Fix tapping on aliases / room pills not always working - Link clicking in web not always working +- Return message input field to previous state after editing message - Thanks @inexcode # Version 0.19.0 - 2020-09-21 ### Features diff --git a/lib/views/chat.dart b/lib/views/chat.dart index 50509a3a..5d8d7e4b 100644 --- a/lib/views/chat.dart +++ b/lib/views/chat.dart @@ -98,6 +98,8 @@ class _ChatState extends State<_Chat> { String inputText = ''; + String pendingText = ''; + bool get _canLoadMore => timeline.events.last.type != EventTypes.RoomCreate; void requestHistory() async { @@ -202,12 +204,13 @@ class _ChatState extends State<_Chat> { if (sendController.text.isEmpty) return; room.sendTextEvent(sendController.text, inReplyTo: replyEvent, editEventId: editEvent?.eventId); - sendController.text = ''; + sendController.text = pendingText; setState(() { - inputText = ''; + inputText = pendingText; replyEvent = null; editEvent = null; + pendingText = ''; }); } @@ -522,8 +525,9 @@ class _ChatState extends State<_Chat> { icon: Icon(Icons.edit), onPressed: () { setState(() { + pendingText = sendController.text; editEvent = selectedEvents.first; - sendController.text = editEvent + inputText = sendController.text = editEvent .getDisplayEvent(timeline) .getLocalizedBody(MatrixLocals(L10n.of(context)), withSenderNamePrefix: false, hideReply: true); @@ -787,6 +791,10 @@ class _ChatState extends State<_Chat> { IconButton( icon: Icon(Icons.close), onPressed: () => setState(() { + if (editEvent != null) { + inputText = sendController.text = pendingText; + pendingText = ''; + } replyEvent = null; editEvent = null; }),