manageCancelAndErrorMessage method

void manageCancelAndErrorMessage()

Implementation

void manageCancelAndErrorMessage() {
  isStreaming.value = false;
  _activeStreamingGroupId = null;
  setDefaultMessageInputFieldHeight();
  PupauMessage? userMessage = messages.firstWhereOrNull(
    (message) => message.status == MessageStatus.sent,
  );
  userMessage?.isCancelled = true;
  final String groupId = userMessage?.groupId.trim() ?? "";
  PupauMessage? assistantMessage = groupId.isEmpty
      ? null
      : messages.firstWhereOrNull(
          (PupauMessage message) =>
              message.status != MessageStatus.sent &&
              message.groupId.trim() == groupId &&
              message.sourceType == SourceType.llm,
        );
  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();
}