manageCancelAndErrorMessage method

void manageCancelAndErrorMessage()

Implementation

void manageCancelAndErrorMessage() {
  isStreaming.value = false;
  PupauMessage? userMessage = messages.firstWhereOrNull(
    (message) => message.status == MessageStatus.sent,
  );
  userMessage?.isCancelled = true;
  PupauMessage? assistantMessage = messages.firstWhereOrNull(
    (message) =>
        message.status != MessageStatus.sent && message.id == userMessage?.id,
  );
  if (assistantMessage != null) {
    assistantMessage.status = MessageStatus.received;
    assistantMessage.isCancelled = true;
    assistantMessage.createdAt = DateTime.now();
    assistantMessage.answer =
        messageNotifier.messages
            .firstWhereOrNull(
              (NotifierMessage notifierMessage) =>
                  notifierMessage.idMessage == assistantMessage.id,
            )
            ?.message ??
        "";
  }
  resetLoadingMessage();
  clearEmptyMessages();
  messages.refresh();
  update();
}