onMessageRecalled method

Future<void> onMessageRecalled(
  1. List<ZIMRevokeMessage> recalledMessageList
)

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');
    }
  }
}