diff options
author | Kitsune Ral <Kitsune-Ral@users.sf.net> | 2017-10-19 08:12:50 +0900 |
---|---|---|
committer | Kitsune Ral <Kitsune-Ral@users.sf.net> | 2017-10-19 08:14:56 +0900 |
commit | ecc364d4ad752b34e41b717e3deff4d17a840378 (patch) | |
tree | ca1077fb3a751ad01f6638ee5733ddd4583d005f /user.cpp | |
parent | 8800690c691dc9534fdb0f2d902862f816704d50 (diff) | |
parent | f2f85ba093df5dcd991fd206af4d79d57f4c7fc8 (diff) | |
download | libquotient-ecc364d4ad752b34e41b717e3deff4d17a840378.tar.gz libquotient-ecc364d4ad752b34e41b717e3deff4d17a840378.zip |
Merge branch 'master' into kitsune-gtad
Diffstat (limited to 'user.cpp')
-rw-r--r-- | user.cpp | 38 |
1 files changed, 27 insertions, 11 deletions
@@ -22,7 +22,7 @@ #include "events/event.h" #include "events/roommemberevent.h" #include "jobs/mediathumbnailjob.h" -#include "util.h" +#include "jobs/generated/profile.h" #include <QtCore/QTimer> #include <QtCore/QDebug> @@ -80,6 +80,24 @@ QString User::name() const return d->name; } +void User::updateName(const QString& newName) +{ + const auto oldName = name(); + if (d->name != newName) + { + qCDebug(MAIN) << "Renaming" << id() + << "from" << oldName << "to" << newName; + d->name = newName; + emit nameChanged(this, oldName); + } +} + +void User::rename(const QString& newName) +{ + auto job = d->connection->callApi<SetDisplayNameJob>(id(), newName); + connect(job, &BaseJob::success, this, [=] { updateName(newName); }); +} + QString User::displayname() const { if( !d->name.isEmpty() ) @@ -140,18 +158,15 @@ void User::processEvent(Event* event) if (e->membership() == MembershipType::Leave) return; - if( d->name != e->displayName() ) + auto newName = e->displayName(); + QRegularExpression reSuffix(" \\((IRC|Gitter)\\)$"); + auto match = reSuffix.match(d->name); + if (match.hasMatch()) { - const auto oldName = d->name; - d->name = e->displayName(); - QRegularExpression reSuffix(" \\((IRC|Gitter)\\)$"); - auto match = reSuffix.match(d->name); - if (match.hasMatch()) { - d->bridged = match.captured(1); - d->name = d->name.left(match.capturedStart(0)); - } - emit nameChanged(this, oldName); + d->bridged = match.captured(1); + newName.truncate(match.capturedStart(0)); } + updateName(newName); if( d->avatarUrl != e->avatarUrl() ) { d->avatarUrl = e->avatarUrl(); @@ -176,3 +191,4 @@ void User::Private::requestAvatar() emit q->avatarChanged(q); }); } + |