scheduleMessageDelete method

void scheduleMessageDelete(
  1. int chatId,
  2. int messageId, {
  3. String? tag,
})

Mark message to be deleted with next call of deleteScheduledMessages

Sometimes we send some messages to notify about temporary progress or to make any choice. Sometimes it would be useful to delete such messages after operation is complete.

Use tag to mark message for future filtering

Implementation

void scheduleMessageDelete(int chatId, int messageId, {String? tag}) {
  var chatMessages = _messagesToDelete[chatId];
  if (chatMessages == null) {
    _messagesToDelete[chatId] = {};
    chatMessages = _messagesToDelete[chatId];
  }
  if (chatMessages == null) {
    throw ArgumentError.value(chatMessages, 'Unexpected null');
  }

  var existingTags = chatMessages[messageId];
  if (existingTags == null) {
    chatMessages[messageId] = [];
    existingTags = chatMessages[messageId];
  }
  if (existingTags == null) {
    throw ArgumentError.value(existingTags, 'Unexpected null');
  }

  if (tag != null) {
    existingTags.add(tag);
  }
}