diff --git a/src/ChatPage.cpp b/src/ChatPage.cpp
index 8efdab2e3104c69837817b184203f5f3e428b25e..f2d6b06cdb63dbd2e1ccc93d0c1a5a6573b7d3b3 100644
--- a/src/ChatPage.cpp
+++ b/src/ChatPage.cpp
@@ -901,17 +901,20 @@ void
 ChatPage::joinRoom(const QString &room)
 {
         const auto room_id = room.toStdString();
-        joinRoomVia(room_id, {});
+        joinRoomVia(room_id, {}, false);
 }
 
 void
-ChatPage::joinRoomVia(const std::string &room_id, const std::vector<std::string> &via)
+ChatPage::joinRoomVia(const std::string &room_id,
+                      const std::vector<std::string> &via,
+                      bool promptForConfirmation)
 {
-        if (QMessageBox::Yes !=
-            QMessageBox::question(
-              this,
-              tr("Confirm join"),
-              tr("Do you really want to join %1?").arg(QString::fromStdString(room_id))))
+        if (promptForConfirmation &&
+            QMessageBox::Yes !=
+              QMessageBox::question(
+                this,
+                tr("Confirm join"),
+                tr("Do you really want to join %1?").arg(QString::fromStdString(room_id))))
                 return;
 
         http::client()->join_room(
diff --git a/src/ChatPage.h b/src/ChatPage.h
index 6c16926d94bbfbc4389352689b25a4e959861ba2..f2078f45456773c5322449787dd47dd5e056e689 100644
--- a/src/ChatPage.h
+++ b/src/ChatPage.h
@@ -105,7 +105,9 @@ public slots:
         void leaveRoom(const QString &room_id);
         void createRoom(const mtx::requests::CreateRoom &req);
         void joinRoom(const QString &room);
-        void joinRoomVia(const std::string &room_id, const std::vector<std::string> &via);
+        void joinRoomVia(const std::string &room_id,
+                         const std::vector<std::string> &via,
+                         bool promptForConfirmation = true);
 
         void inviteUser(QString userid, QString reason);
         void kickUser(QString userid, QString reason);