diff --git a/src/ChatPage.cpp b/src/ChatPage.cpp
index 9ba2cc87..aae9271d 100644
--- a/src/ChatPage.cpp
+++ b/src/ChatPage.cpp
@@ -253,6 +253,7 @@ ChatPage::ChatPage(QSharedPointer<UserSettings> userSettings, QWidget *parent)
this, &ChatPage::updateGroupsInfo, communitiesList_, &CommunitiesList::setCommunities);
connect(this, &ChatPage::leftRoom, this, &ChatPage::removeRoom);
+ connect(this, &ChatPage::newRoom, this, &ChatPage::changeRoom, Qt::QueuedConnection);
connect(this, &ChatPage::notificationsRetrieved, this, &ChatPage::sendNotifications);
connect(this,
&ChatPage::highlightedNotifsRetrieved,
@@ -967,8 +968,9 @@ ChatPage::createRoom(const mtx::requests::CreateRoom &req)
return;
}
- emit showNotification(
- tr("Room %1 created.").arg(QString::fromStdString(res.room_id.to_string())));
+ QString newRoomId = QString::fromStdString(res.room_id.to_string());
+ emit showNotification(tr("Room %1 created.").arg(newRoomId));
+ emit newRoom(newRoomId);
});
}
@@ -990,6 +992,13 @@ ChatPage::leaveRoom(const QString &room_id)
}
void
+ChatPage::changeRoom(const QString &room_id)
+{
+ view_manager_->setHistoryView(room_id);
+ room_list_->highlightSelectedRoom(room_id);
+}
+
+void
ChatPage::inviteUser(QString userid, QString reason)
{
auto room = current_room_;
diff --git a/src/ChatPage.h b/src/ChatPage.h
index 917bd785..dc6b8299 100644
--- a/src/ChatPage.h
+++ b/src/ChatPage.h
@@ -154,6 +154,7 @@ signals:
void tryInitialSyncCb();
void newSyncResponse(const mtx::responses::Sync &res);
void leftRoom(const QString &room_id);
+ void newRoom(const QString &room_id);
void initializeRoomList(QMap<QString, RoomInfo>);
void initializeViews(const mtx::responses::Rooms &rooms);
@@ -201,6 +202,7 @@ signals:
private slots:
void logout();
void removeRoom(const QString &room_id);
+ void changeRoom(const QString &room_id);
void dropToLoginPage(const QString &msg);
void handleSyncResponse(const mtx::responses::Sync &res);
diff --git a/src/LoginPage.cpp b/src/LoginPage.cpp
index 26a170c5..cd54431d 100644
--- a/src/LoginPage.cpp
+++ b/src/LoginPage.cpp
@@ -192,6 +192,11 @@ LoginPage::LoginPage(QWidget *parent)
connect(sso_login_button_, &RaisedButton::clicked, this, [this]() {
onLoginButtonClicked(LoginMethod::SSO);
});
+ connect(this,
+ &LoginPage::showErrorMessage,
+ this,
+ static_cast<void (LoginPage::*)(QLabel *, const QString &)>(&LoginPage::showError),
+ Qt::QueuedConnection);
connect(matrixid_input_, SIGNAL(returnPressed()), login_button_, SLOT(click()));
connect(password_input_, SIGNAL(returnPressed()), login_button_, SLOT(click()));
connect(deviceName_, SIGNAL(returnPressed()), login_button_, SLOT(click()));
@@ -422,8 +427,8 @@ LoginPage::onLoginButtonClicked(LoginMethod loginMethod)
: deviceName_->text().toStdString(),
[this](const mtx::responses::Login &res, mtx::http::RequestErr err) {
if (err) {
- showError(error_label_,
- QString::fromStdString(err->matrix_error.error));
+ showErrorMessage(error_label_,
+ QString::fromStdString(err->matrix_error.error));
emit errorOccurred();
return;
}
@@ -448,7 +453,7 @@ LoginPage::onLoginButtonClicked(LoginMethod loginMethod)
http::client()->login(
req, [this](const mtx::responses::Login &res, mtx::http::RequestErr err) {
if (err) {
- showError(
+ showErrorMessage(
error_label_,
QString::fromStdString(err->matrix_error.error));
emit errorOccurred();
@@ -467,7 +472,7 @@ LoginPage::onLoginButtonClicked(LoginMethod loginMethod)
sso->deleteLater();
});
connect(sso, &SSOHandler::ssoFailed, this, [this, sso]() {
- showError(error_label_, tr("SSO login failed"));
+ showErrorMessage(error_label_, tr("SSO login failed"));
emit errorOccurred();
sso->deleteLater();
});
diff --git a/src/LoginPage.h b/src/LoginPage.h
index 2341c0ce..f6428cbb 100644
--- a/src/LoginPage.h
+++ b/src/LoginPage.h
@@ -59,6 +59,7 @@ signals:
void versionOkCb(bool passwordSupported, bool ssoSupported);
void loginOk(const mtx::responses::Login &res);
+ void showErrorMessage(QLabel *label, const QString &msg);
protected:
void paintEvent(QPaintEvent *event) override;
diff --git a/src/RegisterPage.cpp b/src/RegisterPage.cpp
index 44ad7a3d..004d5b98 100644
--- a/src/RegisterPage.cpp
+++ b/src/RegisterPage.cpp
@@ -277,6 +277,7 @@ RegisterPage::RegisterPage(QWidget *parent)
if (!err) {
http::client()->set_user(res.user_id);
http::client()->set_access_token(res.access_token);
+ http::client()->set_device_id(res.device_id);
emit registerOk();
return;
|