contacts-cache: handle 'personal' mail for groups

When passing a vec of _all_ contacts for some message, mark _all_ of them as
personal if at least _one_ is a personal address.
This commit is contained in:
Dirk-Jan C. Binnema
2022-04-30 08:58:58 +03:00
parent d0619b1db2
commit bb6d271a23
2 changed files with 21 additions and 8 deletions

View File

@ -194,10 +194,10 @@ ContactsCache::add(Contact&& contact)
if (it == priv_->contacts_.end()) { // completely new contact
contact.name = contact.name;
contact.name = contact.name;
if (!contact.personal)
contact.personal = is_personal(contact.email);
contact.tstamp = g_get_monotonic_time();
contact.tstamp = g_get_monotonic_time();
auto email{contact.email};
// return priv_->contacts_.emplace(ContactUMap::value_type(email, std::move(contact)))
@ -219,6 +219,20 @@ ContactsCache::add(Contact&& contact)
}
}
void
ContactsCache::add(Contacts&& contacts)
{
const auto personal = seq_find_if(contacts,[&](auto&& c){
return is_personal(c.email); }) != contacts.cend();
for (auto&& contact: contacts) {
contact.personal = personal;
add(std::move(contact));
}
}
const Contact*
ContactsCache::_find(const std::string& email) const
{