diff --git a/src/jamidht/account_manager.cpp b/src/jamidht/account_manager.cpp index aa2c122aced8d692d933c64284198a099af2dbcb..2cfbd9d786119de42f9063fc37398c53b947556e 100644 --- a/src/jamidht/account_manager.cpp +++ b/src/jamidht/account_manager.cpp @@ -240,6 +240,7 @@ AccountManager::startSync() v.confirm, std::move(v.payload))) { sendTrustRequestConfirm(peer_account); + info_->contacts->saveTrustRequests(); } }); return true; diff --git a/src/jamidht/archive_account_manager.cpp b/src/jamidht/archive_account_manager.cpp index 925b3f3eae26b49e71dd458531a39873f7fa4f00..3f4a49b04072d319e2ae77225d6aca3e3d0b6504 100644 --- a/src/jamidht/archive_account_manager.cpp +++ b/src/jamidht/archive_account_manager.cpp @@ -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 diff --git a/src/jamidht/contact_list.cpp b/src/jamidht/contact_list.cpp index 0a31fb39f56f7cc9ce54fbeaf5762a3907c68641..ad8ff44460f417ca1452cfe704c5bdc1081729ff 100644 --- a/src/jamidht/contact_list.cpp +++ b/src/jamidht/contact_list.cpp @@ -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; diff --git a/src/jamidht/contact_list.h b/src/jamidht/contact_list.h index ea31ccc65476017cde33f716417ee23bc35a63a9..0fe48aa80de9953fefbd96030098d276f0a59f36 100644 --- a/src/jamidht/contact_list.h +++ b/src/jamidht/contact_list.h @@ -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; diff --git a/src/jamidht/server_account_manager.cpp b/src/jamidht/server_account_manager.cpp index 76f05fb0f6511efb9535c915960f2c644627398f..20937e3dcb14e9345b5b08c7c07e69c6bfc78a27 100644 --- a/src/jamidht/server_account_manager.cpp +++ b/src/jamidht/server_account_manager.cpp @@ -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());