From 804451986fe4ba03917a531fe50fc7431514b149 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Blin?= <sebastien.blin@savoirfairelinux.com> Date: Thu, 21 May 2020 14:15:01 -0400 Subject: [PATCH] avatar: various fixes Avoid to write alias in the vCard Make PHOTO detection more generic Change-Id: Ie44630cbcee240befe70cdfbc8d68efc8c507877 --- src/authority/storagehelper.cpp | 8 ++++---- src/contactmodel.cpp | 19 +++++++++++-------- 2 files changed, 15 insertions(+), 12 deletions(-) diff --git a/src/authority/storagehelper.cpp b/src/authority/storagehelper.cpp index c6049d0b..17b75488 100644 --- a/src/authority/storagehelper.cpp +++ b/src/authority/storagehelper.cpp @@ -333,10 +333,10 @@ buildContactFromProfile(const QString & accountId, QByteArray vcard = in.readAll().toUtf8(); const auto vCard = lrc::vCard::utils::toHashMap(vcard); const auto alias = vCard[vCard::Property::FORMATTED_NAME]; - const auto photo = (vCard.find(vCard::Property::PHOTO_PNG) == vCard.end()) ? - vCard[vCard::Property::PHOTO_JPEG] : vCard[vCard::Property::PHOTO_PNG]; - - profileInfo.avatar = photo; + for (const auto& key: vCard.keys()) { + if (key.contains("PHOTO")) + profileInfo.avatar = vCard[key]; + } profileInfo.alias = alias; return { profileInfo, "", true, false }; } diff --git a/src/contactmodel.cpp b/src/contactmodel.cpp index a7731c66..1e1f85d0 100644 --- a/src/contactmodel.cpp +++ b/src/contactmodel.cpp @@ -551,10 +551,11 @@ ContactModelPimpl::fillWithJamiContacts() { const auto vCard = lrc::vCard::utils::toHashMap(payload); const auto alias = vCard["FN"]; - const auto photo = (vCard.find("PHOTO;ENCODING=BASE64;TYPE=PNG") != vCard.end()) ? - vCard["PHOTO;ENCODING=BASE64;TYPE=PNG"] : - vCard["PHOTO;ENCODING=BASE64;TYPE=JPEG"]; - + QByteArray photo; + for (const auto& key: vCard.keys()) { + if (key.contains("PHOTO")) + photo = vCard[key]; + } contactInfo.profileInfo.type = profile::Type::PENDING; if (!alias.isEmpty()) contactInfo.profileInfo.alias = alias.constData(); if (!photo.isEmpty()) contactInfo.profileInfo.avatar = photo.constData(); @@ -711,7 +712,7 @@ void ContactModelPimpl::addToContacts(const QString& contactUri, const profile::Type& type, const QString& displayName, bool banned) { // create a vcard if necessary - profile::Info profileInfo{ contactUri, displayName, {}, linked.owner.profileInfo.type }; + profile::Info profileInfo{ contactUri, {}, displayName, linked.owner.profileInfo.type }; storage::createOrUpdateProfile(linked.owner.id, profileInfo, true); auto contactInfo = storage::buildContactFromProfile(linked.owner.id, contactUri, type); @@ -801,9 +802,11 @@ ContactModelPimpl::slotIncomingContactRequest(const QString& accountId, if (contacts.find(contactUri) == contacts.end()) { const auto vCard = lrc::vCard::utils::toHashMap(payload.toUtf8()); const auto alias = vCard["FN"]; - const auto photo = (vCard.find("PHOTO;ENCODING=BASE64;TYPE=PNG") == vCard.end()) ? - vCard["PHOTO;ENCODING=BASE64;TYPE=JPEG"] : vCard["PHOTO;ENCODING=BASE64;TYPE=PNG"]; - + QByteArray photo; + for (const auto& key: vCard.keys()) { + if (key.contains("PHOTO")) + photo = vCard[key]; + } auto profileInfo = profile::Info {contactUri, photo, alias, profile::Type::PENDING}; auto contactInfo = contact::Info {profileInfo, "", false, false, false}; contacts.insert(contactUri, contactInfo); -- GitLab