Skip to content

Commit e196980

Browse files
committed
fix: delete messages from threads when user is banned
When a user is banned, their messages in threads are now also marked as deleted, in addition to their messages directly in the channel.
1 parent e436739 commit e196980

File tree

1 file changed

+11
-10
lines changed

1 file changed

+11
-10
lines changed

packages/stream_chat/lib/src/client/channel.dart

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3445,17 +3445,18 @@ class ChannelClientState {
34453445
bool hardDelete = false,
34463446
DateTime? deletedAt,
34473447
}) {
3448-
final userMessages = [
3449-
...messages.where((it) => it.user?.id == userId).map((it) {
3450-
return it.copyWith(
3451-
type: MessageType.deleted,
3452-
deletedAt: deletedAt ?? DateTime.now(),
3453-
state: MessageState.deleted(hard: hardDelete),
3454-
);
3455-
}),
3456-
];
3448+
final userMessages = <String, Message>{};
3449+
for (final message in [...messages, ...threads.values.flattened]) {
3450+
if (message.user?.id != userId) continue;
3451+
userMessages[message.id] = message.copyWith(
3452+
type: MessageType.deleted,
3453+
deletedAt: deletedAt ?? DateTime.now(),
3454+
state: MessageState.deleted(hard: hardDelete),
3455+
);
3456+
}
34573457

3458-
return _deleteMessages(userMessages, hardDelete: hardDelete);
3458+
final messagesToDelete = userMessages.values.toList();
3459+
return _deleteMessages(messagesToDelete, hardDelete: hardDelete);
34593460
}
34603461

34613462
void _deleteMessages(

0 commit comments

Comments
 (0)