diff --git a/src/CommunitiesList.cpp b/src/CommunitiesList.cpp
index 77e6368a0d32656823a66127c42eb1dc191467dd..8bc71d9129b4a55dfeacb2f2c9b6bddd28272fb0 100644
--- a/src/CommunitiesList.cpp
+++ b/src/CommunitiesList.cpp
@@ -65,6 +65,7 @@ CommunitiesList::setCommunities(const mtx::responses::JoinedGroups &response)
                 addCommunity(group);
 
         communities_["world"]->setPressedState(true);
+        selectedCommunity_ = "world";
         emit communityChanged("world");
         sortEntries();
 }
@@ -74,6 +75,7 @@ CommunitiesList::syncTags(const std::map<QString, RoomInfo> &info)
 {
         for (const auto &room : info)
                 setTagsForRoom(room.first, room.second.tags);
+        emit communityChanged(selectedCommunity_);
         sortEntries();
 }
 
@@ -231,6 +233,7 @@ CommunitiesList::highlightSelectedCommunity(const QString &community_id)
                 return;
         }
 
+        selectedCommunity_ = community_id;
         emit communityChanged(community_id);
 
         for (const auto &community : communities_) {
diff --git a/src/CommunitiesList.h b/src/CommunitiesList.h
index d62beb8d0e198d493046d2b6a4967e51f515d653..5113e7edc83b0f7819611737419ae4cd6ca9c4a2 100644
--- a/src/CommunitiesList.h
+++ b/src/CommunitiesList.h
@@ -53,6 +53,7 @@ private:
                 return communities_.find(id) != communities_.end();
         }
 
+        QString selectedCommunity_;
         QVBoxLayout *topLayout_;
         QVBoxLayout *contentsLayout_;
         QScrollArea *scrollArea_;
diff --git a/src/RoomList.cpp b/src/RoomList.cpp
index 764a8e42817c7d4ddfd9d9ed39d2b30c9afe8c91..67a7ac400396943687b7808a1ffe09f63d1e7b52 100644
--- a/src/RoomList.cpp
+++ b/src/RoomList.cpp
@@ -106,6 +106,10 @@ void
 RoomList::removeRoom(const QString &room_id, bool reset)
 {
         auto roomIt = rooms_.find(room_id);
+        if (roomIt == rooms_.end()) {
+                return;
+        }
+
         for (auto roomSortIt = rooms_sort_cache_.begin(); roomSortIt != rooms_sort_cache_.end();
              ++roomSortIt) {
                 if (roomIt->second == *roomSortIt) {
@@ -523,8 +527,11 @@ RoomList::firstRoom() const
                 auto item = qobject_cast<RoomInfoListItem *>(contentsLayout_->itemAt(i)->widget());
 
                 if (item) {
-                        return std::pair<QString, QSharedPointer<RoomInfoListItem>>(
-                          item->roomId(), rooms_.at(item->roomId()));
+                        auto topRoom = rooms_.find(item->roomId());
+                        if (topRoom != rooms_.end()) {
+                                return std::pair<QString, QSharedPointer<RoomInfoListItem>>(
+                                  item->roomId(), topRoom->second);
+                        }
                 }
         }
 
diff --git a/src/dialogs/InviteUsers.cpp b/src/dialogs/InviteUsers.cpp
index f85adb8ff7fa7437d8b05ea373433e3244b35f43..8f1097fa5ffb3daa66f294beaf61f0c38fabd02d 100644
--- a/src/dialogs/InviteUsers.cpp
+++ b/src/dialogs/InviteUsers.cpp
@@ -65,6 +65,10 @@ InviteUsers::InviteUsers(QWidget *parent)
 
         connect(inviteeInput_, &TextField::returnPressed, this, &InviteUsers::addUser);
         connect(confirmBtn_, &QPushButton::clicked, [this]() {
+                if (!inviteeInput_->text().trimmed().isEmpty()) {
+                        addUser();
+                }
+
                 emit sendInvites(invitedUsers());
 
                 inviteeInput_->clear();