// DragonX Wallet - ImGui Edition // Copyright 2024-2026 The Hush Developers // Released under the GPLv3 #include "console_model.h" #include namespace dragonx { namespace ui { void ConsoleModel::ingest(const std::string& text, ConsoleChannel channel, int foldSpan) { std::lock_guard lock(ingest_mutex_); ConsoleModelLine line; line.text = text; line.channel = channel; line.foldSpan = foldSpan; pending_.push_back(std::move(line)); } ConsoleModel::DrainResult ConsoleModel::drain() { std::vector incoming; { std::lock_guard lock(ingest_mutex_); if (pending_.empty()) return {}; incoming.swap(pending_); } DrainResult result; result.added = incoming.size(); for (auto& line : incoming) lines_.push_back(std::move(line)); while (lines_.size() > max_lines_) { lines_.pop_front(); ++result.popped; } return result; } void ConsoleModel::clear() { lines_.clear(); } bool ConsoleModel::toggleCollapsed(std::size_t i) { if (i >= lines_.size() || lines_[i].foldSpan <= 0) return false; lines_[i].collapsed = !lines_[i].collapsed; return lines_[i].collapsed; } } // namespace ui } // namespace dragonx