diff --git a/AGENTS.md b/AGENTS.md index c0657df2..94497bbc 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -28,6 +28,8 @@ This file contains essential information for AI coding agents working in the uTu Для поиска выстараивай информативные логи. По которым максимально чётко понятно что происходит. Если какие-то места которые могут иметь отношение к ошибке в логах пропущены - это повод доработать логи и прогнать еще раз. Всегда отладку выстраивай через доработку логов, пока точно и однозначно не будет видно в каком точно месте проблема. +По хорошей диагностике сразу должно быть понятно что происходит, в том числе точную причину проблемы. Если приходится догадываться или плохо понятно - это значит что надо улучшать диагностику. + ## Quick Reference **Repository:** uTun - Secure VPN tunnel with ETCP protocol diff --git a/tools/chatgui/src/accountlist.cpp b/tools/chatgui/src/accountlist.cpp index fbb19acc..eb7669a2 100644 --- a/tools/chatgui/src/accountlist.cpp +++ b/tools/chatgui/src/accountlist.cpp @@ -65,15 +65,16 @@ AccountList::AccountList(DbManager* db, QWidget *parent) , m_model(new MemberListModel(this)) , m_db(db) , m_detailPanel(nullptr) + , m_header(nullptr) { auto *layout = new QVBoxLayout(this); layout->setContentsMargins(0, 0, 0, 0); layout->setSpacing(0); - auto *header = new QLabel("Members", this); - header->setAlignment(Qt::AlignCenter); - header->setStyleSheet("font-weight: bold; padding: 8px; background: palette(window);"); - layout->addWidget(header); + m_header = new QLabel("Members", this); + m_header->setAlignment(Qt::AlignCenter); + m_header->setStyleSheet("font-weight: bold; padding: 8px; background: palette(window);"); + layout->addWidget(m_header); m_listView->setModel(m_model); m_listView->setItemDelegate(new AccountDelegate(m_listView)); @@ -154,6 +155,16 @@ void AccountList::setChannel(const QString& channelId) { m_detailNodeId = 0; m_detailHeader->setText("Select a member"); m_detailText->clear(); + + bool isOwner = false; + if (m_db && m_db->isOpen()) { + const auto chs = m_db->getChannels(); + for (const auto& ch : chs) { + if (ch.channelId == channelId) { isOwner = (ch.ed25519_privkey.size() == 32); break; } + } + } + m_header->setText(isOwner ? QStringLiteral("Members \xF0\x9F\x94\x91") : QStringLiteral("Members")); + m_header->setToolTip(isOwner ? QStringLiteral("Channel owner (has private key)") : QString()); } void AccountList::refresh() { m_model->refresh(); } diff --git a/tools/chatgui/src/accountlist.h b/tools/chatgui/src/accountlist.h index 2d28f09b..e8e77f66 100644 --- a/tools/chatgui/src/accountlist.h +++ b/tools/chatgui/src/accountlist.h @@ -82,6 +82,7 @@ private: QListView *m_listView; MemberListModel *m_model; DbManager *m_db; + QLabel *m_header; QWidget *m_detailPanel; QLabel *m_detailHeader; QTextEdit *m_detailText;