diff --git a/src/contactmodel.cpp b/src/contactmodel.cpp index dd2b33d10bda0fb3a486e0a497622ee3abdbe6b9..b73de18f01559608901c50e2e7c7b4027acfb733 100644 --- a/src/contactmodel.cpp +++ b/src/contactmodel.cpp @@ -1171,7 +1171,6 @@ ContactModelPimpl::slotProfileReceived(const QString& accountId, in.setCodec("UTF-8"); auto vCard = in.readAll(); - vCardFile.remove(); profile::Info profileInfo; profileInfo.uri = peer; @@ -1183,6 +1182,21 @@ ContactModelPimpl::slotProfileReceived(const QString& accountId, else if (e.contains("FN")) profileInfo.alias = e.split(":")[1]; + if (peer == linked.owner.profileInfo.uri) { + if (linked.owner.profileInfo.avatar.isEmpty() && !profileInfo.avatar.isEmpty()) { + auto dest = storage::getPath() + accountId + "/profile.vcf"; + QFile oldvCard(dest); + if (oldvCard.exists()) + oldvCard.remove(); + vCardFile.rename(dest); + linked.owner.accountModel->setAlias(linked.owner.id, profileInfo.alias); + linked.owner.accountModel->setAvatar(linked.owner.id, profileInfo.avatar); + emit linked.profileUpdated(peer); + } + return; + } + vCardFile.remove(); + contact::Info contactInfo; contactInfo.profileInfo = profileInfo;