diff options
-rw-r--r-- | lib/user.cpp | 21 | ||||
-rw-r--r-- | lib/user.h | 15 |
2 files changed, 18 insertions, 18 deletions
diff --git a/lib/user.cpp b/lib/user.cpp index 6e377de8..b610573d 100644 --- a/lib/user.cpp +++ b/lib/user.cpp @@ -45,12 +45,9 @@ class User::Private { public: static Avatar makeAvatar(QUrl url) { return Avatar(move(url)); } - Private(QString userId) - : userId(move(userId)) - , hueF(stringToHueF(this->userId)) - {} + Private(QString userId) : id(move(userId)), hueF(stringToHueF(id)) { } - QString userId; + QString id; QString mostUsedName; QMultiHash<QString, const Room*> otherNames; @@ -200,14 +197,14 @@ Connection* User::connection() const User::~User() = default; -QString User::id() const { return d->userId; } +QString User::id() const { return d->id; } bool User::isGuest() const { - Q_ASSERT(!d->userId.isEmpty() && d->userId.startsWith('@')); - auto it = std::find_if_not(d->userId.begin() + 1, d->userId.end(), + Q_ASSERT(!d->id.isEmpty() && d->id.startsWith('@')); + auto it = std::find_if_not(d->id.begin() + 1, d->id.end(), [](QChar c) { return c.isDigit(); }); - Q_ASSERT(it != d->userId.end()); + Q_ASSERT(it != d->id.end()); return *it == ':'; } @@ -293,7 +290,7 @@ bool User::isIgnored() const { return connection()->isIgnored(this); } void User::Private::setAvatarOnServer(QString contentUri, User* q) { - auto* j = q->connection()->callApi<SetAvatarUrlJob>(userId, contentUri); + auto* j = q->connection()->callApi<SetAvatarUrlJob>(id, contentUri); connect(j, &BaseJob::success, q, [=] { q->updateAvatarUrl(contentUri, avatarUrlForRoom(nullptr)); }); } @@ -304,13 +301,13 @@ QString User::displayname(const Room* room) const return room->roomMembername(this); const auto name = d->nameForRoom(nullptr); - return name.isEmpty() ? d->userId : name; + return name.isEmpty() ? d->id : name; } QString User::fullName(const Room* room) const { const auto name = d->nameForRoom(room); - return name.isEmpty() ? d->userId : name % " (" % d->userId % ')'; + return name.isEmpty() ? id() : name % " (" % id() % ')'; } QString User::bridged() const { return {}; } @@ -21,7 +21,6 @@ #include "avatar.h" #include <QtCore/QObject> -#include <QtCore/QString> namespace Quotient { class Connection; @@ -109,6 +108,10 @@ public: int hue() const; qreal hueF() const; + /// Get a reference to a user avatar object for a given room + /*! This reference should be considered short-lived: processing the next + * room member event for this user may (or may not) invalidate it. + */ const Avatar& avatarObject(const Room* room = nullptr) const; Q_INVOKABLE QImage avatar(int dimension, const Quotient::Room* room = nullptr); @@ -135,16 +138,16 @@ public slots: bool setAvatar(const QString& fileName); /** Upload contents of the QIODevice and set that as an avatar */ bool setAvatar(QIODevice* source); - /** Create or find a direct chat with this user - * The resulting chat is returned asynchronously via + /// Create or find a direct chat with this user + /*! The resulting chat is returned asynchronously via * Connection::directChatAvailable() */ void requestDirectChat(); - /** Add the user to the ignore list */ + /// Add the user to the ignore list void ignore(); - /** Remove the user from the ignore list */ + /// Remove the user from the ignore list void unmarkIgnore(); - /** Check whether the user is in ignore list */ + /// Check whether the user is in ignore list bool isIgnored() const; signals: |