Add ability to fetch remote server avatars in usermodel avatar ImageResponse

Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
This commit is contained in:
Claudio Cambra 2024-10-21 01:46:56 +08:00
parent c38a51079e
commit bc74c5a887

View file

@ -1642,6 +1642,25 @@ public:
return; return;
} }
if (id.startsWith("user-id=")) {
// Format is "image://avatars/user-id=avatar-requested-user/local-user-id:0"
const auto userIdsString = id.split('=');
const auto userIds = userIdsString.last().split("/local-account:");
const auto avatarUserId = userIds.first();
const auto accountString = userIds.last();
const auto accountState = AccountManager::instance()->account(accountString);
Q_ASSERT(accountState);
if (!accountState) {
qCWarning(lcActivity) << "Account not found:" << accountString;
return;
}
const auto avatarJob = new AvatarJob(accountState->account(), avatarUserId, requestedSize.width());
connect(avatarJob, &AvatarJob::avatarPixmap, this, [&](const QImage &avatarImg) {
handleDone(AvatarJob::makeCircularAvatar(avatarImg));
});
avatarJob->start();
return;
}
handleDone(UserModel::instance()->avatarById(id.toInt())); handleDone(UserModel::instance()->avatarById(id.toInt()));
} }