Browse Source

Expose read-only channel membership for invitation UI

master
evgeny 1 week ago
parent
commit
55d9e79983
  1. 11
      tools/chatgui/db/db_manager.cpp
  2. 1
      tools/chatgui/db/db_manager.h

11
tools/chatgui/db/db_manager.cpp

@ -144,6 +144,17 @@ QList<ChannelRow> DbManager::getChannels(ChannelSortMode sort) const {
return list;
}
bool DbManager::isChannelMember(const QString& chId, quint64 nodeId) const {
const QByteArray sql = QStringLiteral("SELECT 1 FROM \"%1\" WHERE node_id=?").arg(peersTableName(chId)).toUtf8();
sqlite3_stmt* statement = prepareOrNull(sql.constData());
if (!statement) return false;
sqlite3_bind_int64(statement, 1, (sqlite3_int64)nodeId);
const int result = sqlite3_step(statement);
if (result != SQLITE_ROW && result != SQLITE_DONE) GUI_ERROR("channel membership read failed ch=%s rc=%d", qPrintable(chId), result);
sqlite3_finalize(statement);
return result == SQLITE_ROW;
}
/* Формирует человекочитаемое тело превью последнего сообщения по content_type и "d"-полю. */
static QString mediaPreviewBody(const QString& ct, const QByteArray& d) {
bool isText = ct.isEmpty() || ct == QStringLiteral("text/plain") ||

1
tools/chatgui/db/db_manager.h

@ -113,6 +113,7 @@ public:
void cleanOrphanedPeers(const QString& chId) const;
QString getDisplayName(quint64 nodeId) const;
QMap<quint64, QString> getLocalNicknames(const QString& chId) const;
bool isChannelMember(const QString& chId, quint64 nodeId) const;
/* ── Узлы ── */
QByteArray loadNodeInfo(quint64 nodeId) const;

Loading…
Cancel
Save