Block property saves without a successfully read member snapshot
This commit is contained in:
1 parent
d73d62db48
commit
49cbfe1ae0
2 files changed
+5
-2
No files matched your search
@@ -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);
|
||||
|
||||
@@ -49,4 +49,5 @@ private:
|
||||
QPushButton* m_saveBtn; // Отключена во время записи.
|
||||
QLabel* m_errorLabel; // Ошибка без технических подробностей; причина остаётся в логе.
|
||||
QObject* m_saveContext = nullptr; // Собственный context запроса; уничтожение снимает callback в мосте.
|
||||
bool m_loaded = false; // Начальный SQL-снимок прочитан; иначе Save заблокирован.
|
||||
};
|
||||
Reference in new issue
Block a user