canUpdateMessage method

bool canUpdateMessage(
  1. CollectionEventSource eventSource,
  2. RootMessage originalMessage,
  3. RootMessage updatedMessage
)

Implementation

bool canUpdateMessage(
  CollectionEventSource eventSource,
  RootMessage originalMessage,
  RootMessage updatedMessage,
) {
  bool canUpdate = false;

  if (!canAddMessage(eventSource, updatedMessage)) {
    return false;
  }

  if (eventSource == CollectionEventSource.pollChangeLogs ||
      eventSource == CollectionEventSource.eventPollVoted ||
      eventSource == CollectionEventSource.eventPollUpdated) {
    if (originalMessage is UserMessage &&
        originalMessage.poll != null &&
        updatedMessage is UserMessage &&
        updatedMessage.poll != null &&
        originalMessage.poll!.updatedAt <= updatedMessage.poll!.updatedAt) {
      canUpdate = true;
    }
  } else if (eventSource == CollectionEventSource.eventReactionUpdated) {
    // Check updatedAt (?)
    canUpdate = true;
  } else if (eventSource == CollectionEventSource.eventThreadInfoUpdated) {
    // Check updatedAt (?)
    canUpdate = true;
  } else if (originalMessage.updatedAt < updatedMessage.updatedAt) {
    canUpdate = true;
  } else if (updatedMessage is BaseMessage &&
      (updatedMessage.sendingStatus == SendingStatus.failed ||
          updatedMessage.sendingStatus == SendingStatus.pending)) {
    canUpdate = true;
  }

  return canUpdate;
}