Block property saves without a successfully read member snapshot

This commit is contained in:
evgeny committed 2026-10-28 00:58:59 +01:00
1 parent d73d62db48
commit 49cbfe1ae0
2 files changed
+5 -2

No files matched your search

+4 -2
View File
@@ -32,7 +32,7 @@ MemberPropsDialog::MemberPropsDialog(DbManager* db, const QString& channelId,
setModal(true);
/* channel private key (for enabling admin/super checkboxes) */
auto chs = m_db ? m_db->getChannels() : QList<ChannelRow>();
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;
@@ -154,6 +154,7 @@ MemberPropsDialog::MemberPropsDialog(DbManager* db, const QString& channelId,
auto* saveBtn = new QPushButton(QCoreApplication::translate("ChatGui", "Save"), this);
m_saveBtn = saveBtn;
m_loaded = loaded; m_saveBtn->setEnabled(m_loaded);
saveBtn->setMinimumWidth(90);
saveBtn->setDefault(true);
saveBtn->setStyleSheet(
@@ -170,7 +171,7 @@ MemberPropsDialog::MemberPropsDialog(DbManager* db, const QString& channelId,
}
void MemberPropsDialog::setSaving(bool saving) {
m_saveBtn->setEnabled(!saving); m_nickEdit->setEnabled(!saving && !m_isOwn);
m_saveBtn->setEnabled(m_loaded && !saving); m_nickEdit->setEnabled(!saving && !m_isOwn);
for (auto* box : {m_adminCb, m_superCb, m_storageCb, m_verifiedCb, m_deletedCb}) box->setEnabled(!saving && m_haveAdminKey);
m_transferBtn->setEnabled(!saving && m_haveAdminKey && !m_isOwn);
}
@@ -185,6 +186,7 @@ void MemberPropsDialog::finishSave(int result) {
void MemberPropsDialog::onSave() {
if (m_saveContext) return;
if (!m_loaded) { finishSave(-1); return; }
int ver = m_currentVer;
QString json;
json += QString("{\"ver\":\"%1\"").arg(ver);
+1
View File
@@ -49,4 +49,5 @@ private:
QPushButton* m_saveBtn; // Отключена во время записи.
QLabel* m_errorLabel; // Ошибка без технических подробностей; причина остаётся в логе.
QObject* m_saveContext = nullptr; // Собственный context запроса; уничтожение снимает callback в мосте.
bool m_loaded = false; // Начальный SQL-снимок прочитан; иначе Save заблокирован.
};