Read member edit capabilities and fields in one GUI snapshot
This commit is contained in:
1 parent
84bf74e034
commit
8f02e1ec2d
1 file changed
+7
-11
@@ -31,15 +31,6 @@ MemberPropsDialog::MemberPropsDialog(DbManager* db, const QString& channelId,
|
||||
setMinimumWidth(340);
|
||||
setModal(true);
|
||||
|
||||
/* channel private key (for enabling admin/super checkboxes) */
|
||||
auto chs = m_db && m_db->m_db ? m_db->getChannels() : QList<ChannelRow>();
|
||||
for (const auto& ch : chs) {
|
||||
if (ch.channelId == channelId) {
|
||||
m_haveAdminKey = ch.ed25519_privkey.size() == 32;
|
||||
break;
|
||||
}
|
||||
}
|
||||
bool haveKey = m_haveAdminKey;
|
||||
bool isOwn = m_isOwn = m_db && m_nodeId == (uint64_t)m_db->myNodeId();
|
||||
|
||||
bool isAdmin = (m_flags & CHAT_MEMBER_FLAG_ADMIN) != 0;
|
||||
@@ -55,11 +46,14 @@ MemberPropsDialog::MemberPropsDialog(DbManager* db, const QString& channelId,
|
||||
if (m_db && m_db->m_db) {
|
||||
QString tbl = m_db->peersTableName(channelId);
|
||||
QByteArray sql = QString(
|
||||
"SELECT adm_tags, local_nick FROM \"%1\" WHERE node_id=?"
|
||||
"SELECT p.adm_tags,p.local_nick,length(c.ed25519_privkey) FROM \"%1\" p "
|
||||
"JOIN channels c ON c.channel_id=? WHERE p.node_id=?"
|
||||
).arg(tbl).toUtf8();
|
||||
sqlite3_stmt* st = nullptr;
|
||||
int rc = sqlite3_prepare_v2(m_db->m_db, sql.constData(), -1, &st, nullptr);
|
||||
if (rc == SQLITE_OK) rc = sqlite3_bind_int64(st, 1, (sqlite3_int64)nodeId);
|
||||
const QByteArray channel = channelId.toUtf8();
|
||||
if (rc == SQLITE_OK) rc = sqlite3_bind_text(st, 1, channel.constData(), channel.size(), SQLITE_STATIC);
|
||||
if (rc == SQLITE_OK) rc = sqlite3_bind_int64(st, 2, (sqlite3_int64)nodeId);
|
||||
if (rc == SQLITE_OK) rc = sqlite3_step(st);
|
||||
if (rc == SQLITE_ROW) {
|
||||
const QJsonObject tags = QJsonDocument::fromJson(DbManager::colText(st, 0).toUtf8()).object();
|
||||
@@ -68,6 +62,7 @@ MemberPropsDialog::MemberPropsDialog(DbManager* db, const QString& channelId,
|
||||
curDeleted = tags.value("deleted").toString() == "yes";
|
||||
curStorage = tags.value("storage").toString() == "yes";
|
||||
curNick = DbManager::colText(st, 1);
|
||||
m_haveAdminKey = sqlite3_column_int(st, 2) == 32;
|
||||
}
|
||||
int finish = sqlite3_finalize(st); loaded = rc == SQLITE_ROW && finish == SQLITE_OK;
|
||||
if (!loaded) DEBUG_ERROR(DEBUG_CATEGORY_CHAT_SYNC, "member properties: read ch=%s node=%016llx rc=%d finalize=%d: %s",
|
||||
@@ -75,6 +70,7 @@ MemberPropsDialog::MemberPropsDialog(DbManager* db, const QString& channelId,
|
||||
} else {
|
||||
DEBUG_WARN(DEBUG_CATEGORY_CHAT_SYNC, "member properties: database unavailable at open");
|
||||
}
|
||||
const bool haveKey = m_haveAdminKey;
|
||||
|
||||
auto* layout = new QVBoxLayout(this);
|
||||
layout->setSpacing(12);
|
||||
|
||||
Reference in new issue
Block a user