summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorKonstantinos Sideris <sideris.konstantin@gmail.com>2018-03-12 00:15:06 +0200
committerKonstantinos Sideris <sideris.konstantin@gmail.com>2018-03-12 00:15:06 +0200
commit39a8150faea00a6ba6202df3f0bc1a0bb4868646 (patch)
treec4eaed6868e79bcd88ee92dcc1cc6e08d74568c8 /src
parentAdd context menu option to mark events individually as read (diff)
downloadnheko-39a8150faea00a6ba6202df3f0bc1a0bb4868646.tar.xz
Update room name & avatar on new rooms
fixes #253
Diffstat (limited to 'src')
-rw-r--r--src/RoomList.cc10
-rw-r--r--src/RoomState.cc33
2 files changed, 23 insertions, 20 deletions
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