aboutsummaryrefslogtreecommitdiff
path: root/user.cpp
diff options
context:
space:
mode:
authorKitsune Ral <Kitsune-Ral@users.sf.net>2017-10-19 08:12:50 +0900
committerKitsune Ral <Kitsune-Ral@users.sf.net>2017-10-19 08:14:56 +0900
commitecc364d4ad752b34e41b717e3deff4d17a840378 (patch)
treeca1077fb3a751ad01f6638ee5733ddd4583d005f /user.cpp
parent8800690c691dc9534fdb0f2d902862f816704d50 (diff)
parentf2f85ba093df5dcd991fd206af4d79d57f4c7fc8 (diff)
downloadlibquotient-ecc364d4ad752b34e41b717e3deff4d17a840378.tar.gz
libquotient-ecc364d4ad752b34e41b717e3deff4d17a840378.zip
Merge branch 'master' into kitsune-gtad
Diffstat (limited to 'user.cpp')
-rw-r--r--user.cpp38
1 files changed, 27 insertions, 11 deletions
diff --git a/user.cpp b/user.cpp
index 12eb2e0b..171d6d6c 100644
--- a/user.cpp
+++ b/user.cpp
@@ -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);
});
}
+