From 7cceb59f0a9942b6d41865cade3d1e5f499c078d Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Fri, 18 Dec 2020 11:58:45 +0100 Subject: [PATCH 1/3] implement shadowban --- lib/src/channel_preview.dart | 2 +- lib/src/message_list_view.dart | 3 ++- lib/src/stream_chat.dart | 1 + pubspec.yaml | 2 +- 4 files changed, 5 insertions(+), 3 deletions(-) diff --git a/lib/src/channel_preview.dart b/lib/src/channel_preview.dart index 95fa4a3d..c01ccd5d 100644 --- a/lib/src/channel_preview.dart +++ b/lib/src/channel_preview.dart @@ -128,7 +128,7 @@ class ChannelPreview extends StatelessWidget { stream: channel.state.messagesStream, initialData: channel.state.messages, builder: (context, snapshot) { - final lastMessage = channel.state.lastMessage; + final lastMessage = snapshot.data.lastWhere((m) => m.shadowed != true); if (lastMessage == null) { return SizedBox(); } diff --git a/lib/src/message_list_view.dart b/lib/src/message_list_view.dart index 2bbf4b82..f1d1a2ce 100644 --- a/lib/src/message_list_view.dart +++ b/lib/src/message_list_view.dart @@ -522,7 +522,8 @@ class _MessageListViewState extends State { .map((messages) => messages ?.where((m) => - !(m.status == MessageSendingStatus.FAILED && m.isDeleted)) + !(m.status == MessageSendingStatus.FAILED && m.isDeleted) && + m.shadowed != true) ?.toList() ?? []) .listen((newMessages) { diff --git a/lib/src/stream_chat.dart b/lib/src/stream_chat.dart index f5b91349..040409db 100644 --- a/lib/src/stream_chat.dart +++ b/lib/src/stream_chat.dart @@ -184,6 +184,7 @@ class StreamChatState extends State with WidgetsBindingObserver { .on(EventType.messageNew) .where((e) => e.user?.id != user.id) .where((e) => e.message.silent != true) + .where((e) => e.message.shadowed != true) .listen((event) async { final channel = client.channel( event.channelType, diff --git a/pubspec.yaml b/pubspec.yaml index dd5273b7..d3a0993c 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -23,7 +23,7 @@ dependencies: file_picker: ^2.0.12 image_picker: ^0.6.7+2 flutter_keyboard_visibility: ^4.0.1 - stream_chat: ^0.2.13 + stream_chat: ^0.2.19 mime: ^0.9.6+3 visibility_detector: ^0.1.5 http_parser: ^3.1.4 From c0d7936f57e268f47744fe92ab01a1e0b3467c8f Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Fri, 18 Dec 2020 11:59:23 +0100 Subject: [PATCH 2/3] version bp --- CHANGELOG.md | 4 ++++ pubspec.yaml | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c91502be..327807a8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.2.18 + +- Implement shadowban + ## 0.2.17+2 - Expose ChannelsBloc.channelsComparator to sort channels on message.new event diff --git a/pubspec.yaml b/pubspec.yaml index d3a0993c..a50abbf3 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,7 +1,7 @@ name: stream_chat_flutter homepage: https://github.com/GetStream/stream-chat-flutter description: Stream Chat official Flutter SDK. Build your own chat experience using Dart and Flutter. -version: 0.2.17+2 +version: 0.2.18 repository: https://github.com/GetStream/stream-chat-flutter issue_tracker: https://github.com/GetStream/stream-chat-flutter/issues From b56fe4729b8447e4069af110d59dfc1e6eefed1f Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Wed, 23 Dec 2020 12:33:03 +0100 Subject: [PATCH 3/3] fix tests --- lib/src/channel_preview.dart | 2 +- test/src/channel_preview_test.dart | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/lib/src/channel_preview.dart b/lib/src/channel_preview.dart index c01ccd5d..58557180 100644 --- a/lib/src/channel_preview.dart +++ b/lib/src/channel_preview.dart @@ -128,7 +128,7 @@ class ChannelPreview extends StatelessWidget { stream: channel.state.messagesStream, initialData: channel.state.messages, builder: (context, snapshot) { - final lastMessage = snapshot.data.lastWhere((m) => m.shadowed != true); + final lastMessage = snapshot.data?.lastWhere((m) => m.shadowed != true); if (lastMessage == null) { return SizedBox(); } diff --git a/test/src/channel_preview_test.dart b/test/src/channel_preview_test.dart index f5e0fbd0..a7173628 100644 --- a/test/src/channel_preview_test.dart +++ b/test/src/channel_preview_test.dart @@ -24,6 +24,11 @@ void main() { 'name': 'test name', }); when(channelState.unreadCount).thenReturn(1); + when(channelState.messages).thenReturn([ + Message( + text: 'hello', + ) + ]); when(channelState.lastMessage).thenReturn(Message( text: 'hello', ));