summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--include/RoomState.h4
-rw-r--r--src/RoomList.cc10
-rw-r--r--src/RoomState.cc33
3 files changed, 25 insertions, 22 deletions
diff --git a/include/RoomState.h b/include/RoomState.h
index 976e0079..edef2f5a 100644
--- a/include/RoomState.h
+++ b/include/RoomState.h
@@ -110,8 +110,8 @@ RoomState::updateFromEvents(const std::vector<Collection> &collection)
                 } else if (mpark::holds_alternative<Name>(event)) {
                         this->name = mpark::get<Name>(event);
                 } else if (mpark::holds_alternative<Member>(event)) {
-                        auto membership = mpark::get<Member>(event);
-                        this->memberships.emplace(membership.state_key, membership);
+                        auto membership                   = mpark::get<Member>(event);
+                        memberships[membership.state_key] = membership;
                 } else if (mpark::holds_alternative<PowerLevels>(event)) {
                         this->power_levels = mpark::get<PowerLevels>(event);
                 } else if (mpark::holds_alternative<Topic>(event)) {
diff --git a/src/RoomList.cc b/src/RoomList.cc
index 13bc0d48..866d28ae 100644
--- a/src/RoomList.cc
+++ b/src/RoomList.cc
@@ -199,15 +199,9 @@ RoomList::sync(const std::map<QString, QSharedPointer<RoomState>> &states,
                         addRoom(settings.at(state.first), state.second, state.first);
 
                 auto room       = rooms_[state.first];
-                auto room_state = room->state();
+                auto new_avatar = state.second->getAvatar();
 
-                if (room_state) {
-                        auto current_avatar = room_state->getAvatar();
-                        auto new_avatar     = state.second->getAvatar();
-
-                        if (current_avatar != new_avatar && !new_avatar.toString().isEmpty())
-                                updateAvatar(state.first, new_avatar.toString());
-                }
+                updateAvatar(state.first, new_avatar.toString());
 
                 room->setState(state.second);
         }
diff --git a/src/RoomState.cc b/src/RoomState.cc
index 244d9e51..de816524 100644
--- a/src/RoomState.cc
+++ b/src/RoomState.cc
@@ -51,32 +51,41 @@ RoomState::resolveName()
         }
 
         QSettings settings;
-        auto user_id = settings.value("auth/user_id");
+        auto user_id = settings.value("auth/user_id").toString();
 
         // TODO: Display names should be sorted alphabetically.
         for (const auto membership : memberships) {
                 const auto stateKey = QString::fromStdString(membership.second.state_key);
 
-                if (stateKey == user_id)
+                if (stateKey == user_id) {
+                        name_ = QString::fromStdString(membership.second.content.display_name);
+
+                        if (name_.isEmpty())
+                                name_ = stateKey;
+
+                        userAvatar_ = stateKey;
+
                         continue;
+                }
 
-                if (membership.second.content.membership == mtx::events::state::Membership::Join) {
+                if (membership.second.content.membership == mtx::events::state::Membership::Join ||
+                    membership.second.content.membership ==
+                      mtx::events::state::Membership::Invite) {
                         userAvatar_ = stateKey;
-                        auto displayName =
-                          QString::fromStdString(membership.second.content.display_name);
 
-                        if (displayName.isEmpty())
+                        name_ = QString::fromStdString(membership.second.content.display_name);
+
+                        if (name_.isEmpty())
                                 name_ = stateKey;
-                        else
-                                name_ = displayName;
 
+                        // TODO: pluralization
+                        if (memberships.size() > 2)
+                                name_ = QString("%1 and %2 others")
+                                          .arg(name_)
+                                          .arg(memberships.size() - 2);
                         break;
                 }
         }
-
-        // TODO: pluralization
-        if (memberships.size() > 2)
-                name_ = QString("%1 and %2 others").arg(name_).arg(memberships.size());
 }
 
 void