Skip to content
Snippets Groups Projects
Commit c8ecfc05 authored by Andreas Traczyk's avatar Andreas Traczyk Committed by Adrien Béraud
Browse files

vcard: don't use QTextStream to read vcards

Just read the binary data to avoid time consuming text processing
during the read in the case of oversized vcard images.

Change-Id: I009332a99b7057549da57fd7c432d6731ab752b8
parent 1a4ea369
No related branches found
No related tags found
No related merge requests found
...@@ -298,8 +298,7 @@ setProfile(const QString& accountId, const api::profile::Info& profileInfo, cons ...@@ -298,8 +298,7 @@ setProfile(const QString& accountId, const api::profile::Info& profileInfo, cons
qWarning().noquote() << "Can't open file for writing: " << file.fileName(); qWarning().noquote() << "Can't open file for writing: " << file.fileName();
return; return;
} }
QTextStream in(&file); QTextStream(&file) << vcard;
in << vcard;
file.close(); file.close();
lf.unlock(); lf.unlock();
} }
...@@ -361,8 +360,7 @@ getAccountAvatar(const QString& accountId) ...@@ -361,8 +360,7 @@ getAccountAvatar(const QString& accountId)
qWarning() << "Can't open file: " << filePath; qWarning() << "Can't open file: " << filePath;
return {}; return {};
} }
QTextStream in(&file); const auto vCard = lrc::vCard::utils::toHashMap(file.readAll());
const auto vCard = lrc::vCard::utils::toHashMap(in.readAll().toUtf8());
const auto photo = (vCard.find(vCard::Property::PHOTO_PNG) == vCard.end()) const auto photo = (vCard.find(vCard::Property::PHOTO_PNG) == vCard.end())
? vCard[vCard::Property::PHOTO_JPEG] ? vCard[vCard::Property::PHOTO_JPEG]
: vCard[vCard::Property::PHOTO_PNG]; : vCard[vCard::Property::PHOTO_PNG];
...@@ -398,9 +396,7 @@ buildContactFromProfile(const QString& accountId, ...@@ -398,9 +396,7 @@ buildContactFromProfile(const QString& accountId,
return {profileInfo, "", true, false}; return {profileInfo, "", true, false};
} }
} }
QTextStream in(&file); const auto vCard = lrc::vCard::utils::toHashMap(file.readAll());
QByteArray vcard = in.readAll().toUtf8();
const auto vCard = lrc::vCard::utils::toHashMap(vcard);
const auto alias = vCard[vCard::Property::FORMATTED_NAME]; const auto alias = vCard[vCard::Property::FORMATTED_NAME];
if (lrc::api::Lrc::cacheAvatars.load()) { if (lrc::api::Lrc::cacheAvatars.load()) {
for (const auto& key : vCard.keys()) { for (const auto& key : vCard.keys()) {
...@@ -424,9 +420,7 @@ avatar(const QString& accountId, const QString& contactId) ...@@ -424,9 +420,7 @@ avatar(const QString& accountId, const QString& contactId)
if (!file.open(QIODevice::ReadOnly)) { if (!file.open(QIODevice::ReadOnly)) {
return {}; return {};
} }
QTextStream in(&file); const auto vCard = lrc::vCard::utils::toHashMap(file.readAll());
QByteArray vcard = in.readAll().toUtf8();
const auto vCard = lrc::vCard::utils::toHashMap(vcard);
for (const auto& key : vCard.keys()) { for (const auto& key : vCard.keys()) {
if (key.contains("PHOTO")) if (key.contains("PHOTO"))
return vCard[key]; return vCard[key];
...@@ -434,7 +428,6 @@ avatar(const QString& accountId, const QString& contactId) ...@@ -434,7 +428,6 @@ avatar(const QString& accountId, const QString& contactId)
return {}; return {};
} }
VectorString VectorString
getAllConversations(Database& db) getAllConversations(Database& db)
{ {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment