From 8978cb0035696b25583d6b27e195ea27caf06a35 Mon Sep 17 00:00:00 2001 From: Sahil Kumar Date: Mon, 5 Jun 2023 16:55:41 +0530 Subject: [PATCH 1/2] fix(llc): Remove cached channel once left. Signed-off-by: xsahil03x --- .../stream_chat/lib/src/client/client.dart | 22 ++++++++++++++++++- packages/stream_chat/lib/src/event_type.dart | 4 ++-- 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/packages/stream_chat/lib/src/client/client.dart b/packages/stream_chat/lib/src/client/client.dart index 7627cf1d..d44750ed 100644 --- a/packages/stream_chat/lib/src/client/client.dart +++ b/packages/stream_chat/lib/src/client/client.dart @@ -1541,6 +1541,8 @@ class ClientState { currentUser = currentUser?.copyWith(totalUnreadCount: count); })); + _listenChannelLeft(); + _listenChannelDeleted(); _listenChannelHidden(); @@ -1601,12 +1603,30 @@ class ClientState { ); } + void _listenChannelLeft() { + _eventsSubscription?.add( + _client + .on( + EventType.memberRemoved, + EventType.notificationRemovedFromChannel, + ) + .listen((event) async { + final isCurrentUser = event.user!.id == currentUser!.id; + if (isCurrentUser) { + final eventChannel = event.channel!; + await _client.chatPersistenceClient + ?.deleteChannels([eventChannel.cid]); + channels.remove(eventChannel.cid)?.dispose(); + } + }), + ); + } + void _listenChannelDeleted() { _eventsSubscription?.add( _client .on( EventType.channelDeleted, - EventType.notificationRemovedFromChannel, EventType.notificationChannelDeleted, ) .listen((Event event) async { diff --git a/packages/stream_chat/lib/src/event_type.dart b/packages/stream_chat/lib/src/event_type.dart index f8fb7ed7..5bf6e0fd 100644 --- a/packages/stream_chat/lib/src/event_type.dart +++ b/packages/stream_chat/lib/src/event_type.dart @@ -63,7 +63,7 @@ class EventType { static const String notificationAddedToChannel = 'notification.added_to_channel'; - /// Event sent when the user is removed to a channel + /// Event sent when the user is removed from a channel static const String notificationRemovedFromChannel = 'notification.removed_from_channel'; @@ -76,7 +76,7 @@ class EventType { /// Event sent when a member is added to a channel static const String memberAdded = 'member.added'; - /// Event sent when a member is removed to a channel + /// Event sent when a member is removed from a channel static const String memberRemoved = 'member.removed'; /// Event sent when a member is updated in a channel From b6f4c194e5209420b954add295ff38b20f9b1d60 Mon Sep 17 00:00:00 2001 From: Sahil Kumar Date: Mon, 5 Jun 2023 16:57:15 +0530 Subject: [PATCH 2/2] chore: update CHANGELOG.md Signed-off-by: xsahil03x --- packages/stream_chat/CHANGELOG.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/packages/stream_chat/CHANGELOG.md b/packages/stream_chat/CHANGELOG.md index b001d99e..158a8722 100644 --- a/packages/stream_chat/CHANGELOG.md +++ b/packages/stream_chat/CHANGELOG.md @@ -1,3 +1,10 @@ +## Upcoming + +🐞 Fixed + +- [[#1585]](https://github.com/GetStream/stream-chat-flutter/issues/1585) Fixed channels left not being removed from + the persistent storage. + ## 6.2.0 🐞 Fixed