From 2bd8defe6d8e07d2887e605f6bd5ea3ff7477514 Mon Sep 17 00:00:00 2001 From: Sahil Kumar Date: Tue, 2 May 2023 18:51:29 +0530 Subject: [PATCH] fix(llc): Error while hiding channel and clearing message history. Signed-off-by: xsahil03x --- packages/stream_chat/CHANGELOG.md | 5 +++++ packages/stream_chat/lib/src/client/channel.dart | 10 +--------- packages/stream_chat/lib/src/client/client.dart | 8 ++++---- 3 files changed, 10 insertions(+), 13 deletions(-) diff --git a/packages/stream_chat/CHANGELOG.md b/packages/stream_chat/CHANGELOG.md index d0b8ad32..f7094a53 100644 --- a/packages/stream_chat/CHANGELOG.md +++ b/packages/stream_chat/CHANGELOG.md @@ -1,5 +1,10 @@ ## Upcoming +🐞 Fixed + +- [[#1355]](https://github.com/GetStream/stream-chat-flutter/issues/1355) Fixed error while hiding channel and clearing + message history. + ✅ Added - Expose `ChannelMute` class. [#1473](https://github.com/GetStream/stream-chat-flutter/issues/1473) diff --git a/packages/stream_chat/lib/src/client/channel.dart b/packages/stream_chat/lib/src/client/channel.dart index 7d8515c7..1d419cbb 100644 --- a/packages/stream_chat/lib/src/client/channel.dart +++ b/packages/stream_chat/lib/src/client/channel.dart @@ -1485,19 +1485,11 @@ class Channel { /// will be removed for the user. Future hide({bool clearHistory = false}) async { _checkInitialized(); - final response = await _client.hideChannel( + return _client.hideChannel( id!, type, clearHistory: clearHistory, ); - if (clearHistory) { - state!.truncate(); - final cid = _cid; - if (cid != null) { - await _client.chatPersistenceClient?.deleteMessageByCid(cid); - } - } - return response; } /// Removes the hidden status for the channel. diff --git a/packages/stream_chat/lib/src/client/client.dart b/packages/stream_chat/lib/src/client/client.dart index 4f2dbda3..6feb16d6 100644 --- a/packages/stream_chat/lib/src/client/client.dart +++ b/packages/stream_chat/lib/src/client/client.dart @@ -1567,7 +1567,7 @@ class ClientState { _client.on(EventType.channelHidden).listen((event) async { final eventChannel = event.channel!; await _client.chatPersistenceClient?.deleteChannels([eventChannel.cid]); - channels[eventChannel.cid]?.dispose(); + channels.remove(eventChannel.cid)?.dispose(); }), ); } @@ -1606,7 +1606,7 @@ class ClientState { .listen((Event event) async { final eventChannel = event.channel!; await _client.chatPersistenceClient?.deleteChannels([eventChannel.cid]); - channels[eventChannel.cid]?.dispose(); + channels.remove(eventChannel.cid)?.dispose(); }), ); } @@ -1713,9 +1713,9 @@ class ClientState { _unreadChannelsController.close(); _totalUnreadCountController.close(); - final channels = this.channels.values.toList(); + final channels = this.channels.keys; for (final channel in channels) { - channel.dispose(); + this.channels.remove(channel)?.dispose(); } _channelsController.close(); }