From 3d2af27dbba9bf9de238002cb64d6f8046a25a2b Mon Sep 17 00:00:00 2001 From: Alexey Rusakov Date: Wed, 14 Jul 2021 19:55:46 +0200 Subject: User::rename(): actually build on the current state This is a further extension of #481 fix that takes the whole current state event content, rather than just the avatar URL. --- lib/user.cpp | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) (limited to 'lib') diff --git a/lib/user.cpp b/lib/user.cpp index 7143620f..f0831733 100644 --- a/lib/user.cpp +++ b/lib/user.cpp @@ -171,13 +171,11 @@ void User::rename(const QString& newName, const Room* r) rename(newName); return; } - Q_ASSERT_X(r->memberJoinState(this) == JoinState::Join, __FUNCTION__, + // #481: take the current state and update it with the new name + auto evtC = r->getCurrentState(id())->content(); + Q_ASSERT_X(evtC.membership == MembershipType::Join, __FUNCTION__, "Attempt to rename a user that's not a room member"); - const auto actualNewName = sanitized(newName); - MemberEventContent evtC; - evtC.displayName = actualNewName; - // #481: fill in the current avatar URL in order to not clear it out - evtC.avatarUrl = r->getCurrentState(id())->avatarUrl(); + evtC.displayName = sanitized(newName); r->setState(id(), move(evtC)); // The state will be updated locally after it arrives with sync } -- cgit v1.2.3