From 8978cb0035696b25583d6b27e195ea27caf06a35 Mon Sep 17 00:00:00 2001 From: Sahil Kumar Date: Mon, 5 Jun 2023 16:55:41 +0530 Subject: [PATCH] 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