Merge branch 'bugfix/deleting_thread_messages' into develop
This commit is contained in:
@@ -1083,7 +1083,7 @@ class Channel {
|
|||||||
} else {
|
} else {
|
||||||
// remove the passed message if response does
|
// remove the passed message if response does
|
||||||
// not contain message
|
// not contain message
|
||||||
state!.removeMessage(message);
|
state!.removeMessage(message, decreaseReplyCount: true);
|
||||||
await _client.chatPersistenceClient?.deleteMessageById(messageId);
|
await _client.chatPersistenceClient?.deleteMessageById(messageId);
|
||||||
}
|
}
|
||||||
return res;
|
return res;
|
||||||
@@ -1758,6 +1758,7 @@ class ChannelClientState {
|
|||||||
_subscriptions.add(_channel.on(EventType.messageDeleted).listen((event) {
|
_subscriptions.add(_channel.on(EventType.messageDeleted).listen((event) {
|
||||||
final message = event.message!;
|
final message = event.message!;
|
||||||
if (event.hardDelete == true) {
|
if (event.hardDelete == true) {
|
||||||
|
//do not decrease reply count here - it is done in _listenMessageUpdated
|
||||||
removeMessage(message, hardDelete: true);
|
removeMessage(message, hardDelete: true);
|
||||||
} else {
|
} else {
|
||||||
addMessage(message);
|
addMessage(message);
|
||||||
@@ -1816,24 +1817,30 @@ class ChannelClientState {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Remove a [message] from this [channelState].
|
/// Remove a [message] from this [channelState].
|
||||||
void removeMessage(Message message, {bool hardDelete = false}) {
|
void removeMessage(
|
||||||
|
Message message, {
|
||||||
|
bool hardDelete = false,
|
||||||
|
bool decreaseReplyCount = false,
|
||||||
|
}) {
|
||||||
final parentId = message.parentId;
|
final parentId = message.parentId;
|
||||||
// i.e. it's a thread message
|
// i.e. it's a thread message
|
||||||
// 1. Remove the thread message
|
// 1. Remove the thread message
|
||||||
// 2. Reduce total reply count of parent message
|
// 2. Reduce total reply count of parent message
|
||||||
if (parentId != null) {
|
if (parentId != null) {
|
||||||
final allMessages = [...messages];
|
if (decreaseReplyCount) {
|
||||||
final parentMessage = allMessages.firstWhereOrNull(
|
final allMessages = [...messages];
|
||||||
(it) => it.id == parentId,
|
final parentMessage = allMessages.firstWhereOrNull(
|
||||||
);
|
(it) => it.id == parentId,
|
||||||
|
);
|
||||||
|
|
||||||
// return if message not available in the memory
|
// return if message not available in the memory
|
||||||
if (parentMessage == null) return;
|
if (parentMessage == null) return;
|
||||||
final replyCount = parentMessage.replyCount;
|
final replyCount = parentMessage.replyCount;
|
||||||
// return if reply count is null or zero
|
// return if reply count is null or zero
|
||||||
if (replyCount == null || replyCount == 0) return;
|
if (replyCount == null || replyCount == 0) return;
|
||||||
|
|
||||||
addMessage(parentMessage.copyWith(replyCount: replyCount - 1));
|
addMessage(parentMessage.copyWith(replyCount: replyCount - 1));
|
||||||
|
}
|
||||||
updateThreadInfo(
|
updateThreadInfo(
|
||||||
parentId,
|
parentId,
|
||||||
threads[parentId]!
|
threads[parentId]!
|
||||||
|
|||||||
Reference in New Issue
Block a user