state method

ChatThreadStatusState state({
  1. required String path,
  2. ChatThreadStatusState? previous,
  3. required bool supportsAgentMessages,
})

Implementation

ChatThreadStatusState state({required String path, ChatThreadStatusState? previous, required bool supportsAgentMessages}) {
  final normalizedPath = path.trim();
  final status = _statusByThreadPath[normalizedPath];
  final pendingMessages = List<PendingAgentMessage>.unmodifiable(
    _pendingMessagesByThreadPath[normalizedPath]?.values ?? const <PendingAgentMessage>[],
  );

  if (status == null && pendingMessages.isEmpty) {
    return ChatThreadStatusState(supportsAgentMessages: supportsAgentMessages);
  }

  var startedAt = status?.startedAt;
  if (status?.text != null) startedAt ??= DateTime.now();

  return ChatThreadStatusState(
    text: status?.text,
    startedAt: startedAt,
    mode: status?.text == null ? status?.mode : status?.mode ?? "busy",
    turnId: status?.turnId,
    pendingMessages: pendingMessages,
    pendingItemId: status?.pendingItemId,
    totalBytes: status?.totalBytes,
    linesAdded: status?.linesAdded,
    linesRemoved: status?.linesRemoved,
    supportsAgentMessages: true,
  );
}