From 54f1901620202daceaaceb65a531cc328a009417 Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Wed, 11 Mar 2020 15:42:29 +0100 Subject: [PATCH] add update message --- lib/src/channel_list_view.dart | 1 - lib/src/message_input.dart | 5 ++++- lib/src/message_widget.dart | 27 +++++++++++++++++++++++---- lib/src/stream_chat.dart | 5 ----- 4 files changed, 27 insertions(+), 11 deletions(-) diff --git a/lib/src/channel_list_view.dart b/lib/src/channel_list_view.dart index 622fc460..7272f851 100644 --- a/lib/src/channel_list_view.dart +++ b/lib/src/channel_list_view.dart @@ -106,7 +106,6 @@ class _ChannelListViewState extends State { final streamChat = StreamChat.of(context); return RefreshIndicator( onRefresh: () async { - streamChat.clearChannels(); return streamChat.queryChannels( filter: widget.filter, sortOptions: widget.sort, diff --git a/lib/src/message_input.dart b/lib/src/message_input.dart index 2c45d7a2..927643f7 100644 --- a/lib/src/message_input.dart +++ b/lib/src/message_input.dart @@ -664,7 +664,10 @@ class _MessageInputState extends State { sendingFuture = channel.sendMessage(message); } - sendingFuture = StreamChat.of(context).client.updateMessage(message); + sendingFuture = StreamChat.of(context).client.updateMessage( + message, + channel.cid, + ); } else { message = Message( parentId: widget.parentMessage?.id, diff --git a/lib/src/message_widget.dart b/lib/src/message_widget.dart index 9ec1ca7a..b2cb6755 100644 --- a/lib/src/message_widget.dart +++ b/lib/src/message_widget.dart @@ -161,7 +161,8 @@ class _MessageWidgetState extends State ), ), if (_isMyMessage && - widget.message.status == MessageSendingStatus.SENDING) + (widget.message.status == MessageSendingStatus.SENDING || + widget.message.status == MessageSendingStatus.UPDATING)) Padding( padding: const EdgeInsets.symmetric( horizontal: 1.0, @@ -177,7 +178,8 @@ class _MessageWidgetState extends State ), ), if (_isMyMessage && - widget.message.status == MessageSendingStatus.FAILED) + (widget.message.status == MessageSendingStatus.FAILED || + widget.message.status == MessageSendingStatus.FAILED_UPDATE)) Padding( padding: const EdgeInsets.symmetric( horizontal: 1.0, @@ -372,8 +374,16 @@ class _MessageWidgetState extends State ), ), onTap: () { + final channel = StreamChannel.of(context).channel; if (widget.message.status == MessageSendingStatus.FAILED) { - StreamChannel.of(context).channel.sendMessage(widget.message); + channel.sendMessage(widget.message); + return; + } + if (widget.message.status == MessageSendingStatus.FAILED_UPDATE) { + StreamChat.of(context).client.updateMessage( + widget.message, + channel.cid, + ); return; } }, @@ -466,6 +476,14 @@ class _MessageWidgetState extends State fontSize: 11, ), ), + if (widget.message.status == MessageSendingStatus.FAILED_UPDATE) + Text( + 'MESSAGE UPDATE FAILED ยท CLICK TO TRY AGAIN', + style: _messageTheme.messageText.copyWith( + color: Colors.black.withOpacity(.5), + fontSize: 11, + ), + ), MarkdownBody( data: text, onTapLink: (link) { @@ -989,7 +1007,8 @@ class _MessageWidgetState extends State topRight: Radius.circular((_isMyMessage && rectBorders) ? 2 : 16), bottomRight: Radius.circular(_isMyMessage ? 2 : 16), ), - color: widget.message.status == MessageSendingStatus.FAILED + color: (widget.message.status == MessageSendingStatus.FAILED || + widget.message.status == MessageSendingStatus.FAILED_UPDATE) ? Color(0xffd0021B).withAlpha(26) : _messageTheme.messageBackgroundColor, ); diff --git a/lib/src/stream_chat.dart b/lib/src/stream_chat.dart index c002721b..f35515ce 100644 --- a/lib/src/stream_chat.dart +++ b/lib/src/stream_chat.dart @@ -214,11 +214,6 @@ class StreamChatState extends State { } } - /// Clear the current channel list - void clearChannels() { - channels.clear(); - } - @override void dispose() { widget.client.dispose();