fixed deletion off the main list and offline storage

This commit is contained in:
Deven Joshi
2021-11-25 16:54:23 +05:30
parent 5916a282d1
commit 065df414df
4 changed files with 27 additions and 5 deletions
@@ -1663,7 +1663,11 @@ class ChannelClientState {
void _listenMessageDeleted() {
_subscriptions.add(_channel.on(EventType.messageDeleted).listen((event) {
final message = event.message!;
addMessage(message);
if (event.hardDelete == true) {
removeMessage(message, hardDelete: true);
} else {
addMessage(message);
}
}));
}
@@ -1718,7 +1722,7 @@ class ChannelClientState {
}
/// Remove a [message] from this [channelState].
void removeMessage(Message message) {
void removeMessage(Message message, {bool hardDelete = false}) {
final parentId = message.parentId;
// i.e. it's a thread message
// 1. Remove the thread message
@@ -1740,7 +1744,10 @@ class ChannelClientState {
} else {
// Remove regular message
final allMessages = [...messages];
if (allMessages.remove(message)) {
if (hardDelete) {
allMessages.removeWhere((e) => e.id == message.id);
_channelState = _channelState.copyWith(messages: allMessages);
} else if (allMessages.remove(message)) {
_channelState = _channelState.copyWith(messages: allMessages);
}
}
@@ -1213,8 +1213,14 @@ class StreamChatClient {
);
/// Deletes the given message
Future<EmptyResponse> deleteMessage(String messageId, {bool? hard}) =>
_chatApi.message.deleteMessage(messageId, hard: hard);
Future<EmptyResponse> deleteMessage(String messageId, {bool? hard}) async {
final response =
await _chatApi.message.deleteMessage(messageId, hard: hard);
if (hard == true) {
await _chatPersistenceClient?.deleteMessageById(messageId);
}
return response;
}
/// Get a message by [messageId]
Future<GetMessageResponse> getMessage(String messageId) =>