aboutsummaryrefslogtreecommitdiff
path: root/lib/connection.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lib/connection.cpp')
-rw-r--r--lib/connection.cpp12
1 files changed, 8 insertions, 4 deletions
diff --git a/lib/connection.cpp b/lib/connection.cpp
index 2c5bf574..25f1c3f6 100644
--- a/lib/connection.cpp
+++ b/lib/connection.cpp
@@ -534,10 +534,14 @@ JoinRoomJob* Connection::joinRoom(const QString& roomAlias,
const QStringList& serverNames)
{
auto job = callApi<JoinRoomJob>(roomAlias, serverNames);
- // Upon completion, ensure a room object in Join state is created but only
- // if it's not already there due to a sync completing earlier.
- connect(job, &JoinRoomJob::success, this,
- [this, job] { provideRoom(job->roomId()); });
+ // Upon completion, ensure a room object in Join state is created
+ // (or it might already be there due to a sync completing earlier).
+ // finished() is used here instead of success() to overtake clients
+ // that may add their own slots to finished().
+ connect(job, &BaseJob::finished, this, [this, job] {
+ if (job->status().good())
+ provideRoom(job->roomId());
+ });
return job;
}