diff --git a/src/authority/storagehelper.cpp b/src/authority/storagehelper.cpp index c6049d0b906ae6758d1af2e43293d34a4c6f6838..17b754884a86d6869b29e0eba47490a30074811d 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 a7731c66f92105c776d95c26fdfae08a436d5a5c..1e1f85d03494bca9d04826677b71767ec6383483 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);