archive account manager: save contacts after sync

Change-Id: I8e637ec1e5d00a62d2d19cc7bb5cc39c8da4be3a
This commit is contained in:
Adrien Béraud
2021-01-28 21:00:36 -05:00
parent 8550198606
commit 077838b7b4
5 changed files with 10 additions and 9 deletions

View File

@ -240,6 +240,7 @@ AccountManager::startSync()
v.confirm,
std::move(v.payload))) {
sendTrustRequestConfirm(peer_account);
info_->contacts->saveTrustRequests();
}
});
return true;

View File

@ -497,11 +497,12 @@ ArchiveAccountManager::onSyncData(DeviceSync&& sync)
// Sync contacts
for (const auto& peer : sync.peers)
info_->contacts->updateContact(peer.first, peer.second);
// saveContacts();
info_->contacts->saveContacts();
// Sync trust requests
for (const auto& tr : sync.trust_requests)
info_->contacts->onTrustRequest(tr.first, tr.second.device, tr.second.received, false, {});
info_->contacts->saveTrustRequests();
}
AccountArchive

View File

@ -81,7 +81,6 @@ ContactList::addContact(const dht::InfoHash& h, bool confirmed)
trust_.setCertificateStatus(hStr, tls::TrustStore::PermissionStatus::ALLOWED);
saveContacts();
callbacks_.contactAdded(hStr, c->second.confirmed);
// syncDevices();
return true;
}
@ -104,7 +103,6 @@ ContactList::removeContact(const dht::InfoHash& h, bool ban)
saveTrustRequests();
saveContacts();
callbacks_.contactRemoved(uri, ban);
// syncDevices();
return true;
}
@ -251,8 +249,6 @@ ContactList::onTrustRequest(const dht::InfoHash& peer_account,
if (not contact->second.confirmed) {
contact->second.confirmed = true;
callbacks_.contactAdded(peer_account.toString(), true);
saveContacts();
// syncDevices();
}
}
}
@ -275,7 +271,6 @@ ContactList::onTrustRequest(const dht::InfoHash& peer_account,
peer_account.toString().c_str());
}
}
saveTrustRequests();
callbacks_.trustRequest(req->first.toString(), req->second.payload, received);
}
return accept;

View File

@ -95,6 +95,9 @@ public:
void setContacts(const std::map<dht::InfoHash, Contact>&);
void updateContact(const dht::InfoHash&, const Contact&);
/** Should be called only after updateContact */
void saveContacts() const;
/* Contact requests */
/** Inform of a new contact request. Returns true if the request should be immediatly accepted
@ -108,6 +111,9 @@ public:
bool acceptTrustRequest(const dht::InfoHash& from);
bool discardTrustRequest(const dht::InfoHash& from);
/** Should be called only after onTrustRequest */
void saveTrustRequests() const;
/* Devices */
const std::map<dht::InfoHash, KnownDevice>& getKnownDevices() const { return knownDevices_; }
void foundAccountDevice(const dht::InfoHash& device,
@ -139,10 +145,7 @@ private:
OnChangeCallback callbacks_;
void loadContacts();
void saveContacts() const;
void loadTrustRequests();
void saveTrustRequests() const;
void loadKnownDevices();
void saveKnownDevices() const;

View File

@ -402,6 +402,7 @@ ServerAccountManager::syncDevices()
this_.info_->contacts
->updateContact(dht::InfoHash {e["uri"].asString()}, contact);
}
this_.info_->contacts->saveContacts();
}
} catch (const std::exception& e) {
JAMI_ERR("Error when iterating contact list: %s", e.what());