onMessageRecalled method
Implementation
Future<void> onMessageRecalled(
List<ZIMRevokeMessage> recalledMessageList,
) async {
ZIMKitLogger.info('onMessageRecalled: ${recalledMessageList.length}');
for (final recalledMessage in recalledMessageList) {
final conversationID = recalledMessage.conversationID;
final conversationType = recalledMessage.conversationType;
if (db.messages(conversationID, conversationType).notInited) {
ZIMKitLogger.info(
'onMessageRecalled: notInited, loadMessageList first');
await getMessageListNotifier(conversationID, conversationType);
}
final index = db
.messages(conversationID, conversationType)
.notifier
.value
.indexWhere((e) =>
(e.value.info.messageID == recalledMessage.messageID) ||
(e.value.info.localMessageID == recalledMessage.localMessageID));
if (index == -1) {
ZIMKitLogger.warning("onMessageRecalled: can't find message");
} else {
db
.messages(conversationID, conversationType)
.notifier
.value[index]
.value = recalledMessage.toKIT();
ZIMKitLogger.info('recallMessage: success');
}
}
}