Retrieve the current room state from cache when the edit modal opens

This commit is contained in:
Konstantinos Sideris 2018-05-18 21:43:58 +03:00
parent d88dee3185
commit 9eb1c496a0
2 changed files with 16 additions and 8 deletions

View file

@ -93,6 +93,8 @@ private:
void setAvatar(const QImage &img) { avatarImg_ = img; } void setAvatar(const QImage &img) { avatarImg_ = img; }
void setupEditButton(); void setupEditButton();
//! Retrieve the current room information from cache.
void retrieveRoomInfo();
//! Whether the user would be able to change the name or the topic of the room. //! Whether the user would be able to change the name or the topic of the room.
bool hasEditRights_ = true; bool hasEditRights_ = true;

View file

@ -182,14 +182,7 @@ RoomSettings::RoomSettings(const QString &room_id, QWidget *parent)
, room_id_{std::move(room_id)} , room_id_{std::move(room_id)}
{ {
setMaximumWidth(420); setMaximumWidth(420);
retrieveRoomInfo();
try {
info_ = cache::client()->singleRoomInfo(room_id_.toStdString());
setAvatar(QImage::fromData(cache::client()->image(info_.avatar_url)));
} catch (const lmdb::error &e) {
qWarning() << "failed to retrieve room info from cache" << room_id;
}
constexpr int SettingsMargin = 2; constexpr int SettingsMargin = 2;
@ -299,6 +292,8 @@ RoomSettings::setupEditButton()
editFieldsBtn_->setIconSize(QSize(iconSize, iconSize)); editFieldsBtn_->setIconSize(QSize(iconSize, iconSize));
connect(editFieldsBtn_, &QPushButton::clicked, this, [this]() { connect(editFieldsBtn_, &QPushButton::clicked, this, [this]() {
retrieveRoomInfo();
auto modal = new EditModal(room_id_, this->parentWidget()); auto modal = new EditModal(room_id_, this->parentWidget());
modal->setFields(QString::fromStdString(info_.name), modal->setFields(QString::fromStdString(info_.name),
QString::fromStdString(info_.topic)); QString::fromStdString(info_.topic));
@ -311,6 +306,17 @@ RoomSettings::setupEditButton()
editLayout_->addWidget(editFieldsBtn_, 0, Qt::AlignRight | Qt::AlignTop); editLayout_->addWidget(editFieldsBtn_, 0, Qt::AlignRight | Qt::AlignTop);
} }
void
RoomSettings::retrieveRoomInfo()
{
try {
info_ = cache::client()->singleRoomInfo(room_id_.toStdString());
setAvatar(QImage::fromData(cache::client()->image(info_.avatar_url)));
} catch (const lmdb::error &e) {
qWarning() << "failed to retrieve room info from cache" << room_id_;
}
}
void void
RoomSettings::saveSettings() RoomSettings::saveSettings()
{ {