diff --git a/src/authority/daemon.cpp b/src/authority/daemon.cpp index 1d93ad2b8cb3d2f50ad73acc75966baf4f97b1f5..8a3e5234632644058af34cddd79e0955ef771166 100644 --- a/src/authority/daemon.cpp +++ b/src/authority/daemon.cpp @@ -49,17 +49,17 @@ removeContact(const api::account::Info& owner, const std::string& contactUri, bo QString(contactUri.c_str()), banned); } -void +bool addContactFromPending(const api::account::Info& owner, const std::string& contactUri) { - ConfigurationManager::instance().acceptTrustRequest(QString(owner.id.c_str()), + return ConfigurationManager::instance().acceptTrustRequest(QString(owner.id.c_str()), QString(contactUri.c_str())); } -void +bool discardFromPending(const api::account::Info& owner, const std::string& contactUri) { - ConfigurationManager::instance().discardTrustRequest( + return ConfigurationManager::instance().discardTrustRequest( QString(owner.id.c_str()), QString(contactUri.c_str()) ); diff --git a/src/authority/daemon.h b/src/authority/daemon.h index 1ba8abece6a68a928a23d9cbfd4934eeca8c5629..49be4448f5b81cc5682ceebb7f50d23dca8d8e8a 100644 --- a/src/authority/daemon.h +++ b/src/authority/daemon.h @@ -54,14 +54,16 @@ void removeContact(const api::account::Info& owner, const std::string& contactUr * Ask the daemon to add a contact from the pending list. * @param owner * @param contactUri + * @return if operation succeed */ -void addContactFromPending(const api::account::Info& owner, const std::string& contactUri); +bool addContactFromPending(const api::account::Info& owner, const std::string& contactUri); /** * Ask the daemon to discard a pending. * @param owner * @param contactUri + * @return if operation succeed */ -void discardFromPending(const api::account::Info& owner, const std::string& contactUri); +bool discardFromPending(const api::account::Info& owner, const std::string& contactUri); } // namespace daemon diff --git a/src/contactmodel.cpp b/src/contactmodel.cpp index 81a684202ba5adf58f83aa7c3c4df5c441cfdc9a..30e6d3dc709e8173400aa8f6c5c06b45e6fe79f2 100644 --- a/src/contactmodel.cpp +++ b/src/contactmodel.cpp @@ -234,9 +234,11 @@ ContactModel::addContact(contact::Info contactInfo) #endif break; case profile::Type::PENDING: - daemon::addContactFromPending(owner, profile.uri); - emit pendingContactAccepted(profile.uri); - daemon::addContact(owner, profile.uri); // BUGS?: daemon::addContactFromPending not always add the contact + if (daemon::addContactFromPending(owner, profile.uri)) { + emit pendingContactAccepted(profile.uri); + } else { + return; + } break; case profile::Type::RING: case profile::Type::SIP: @@ -278,7 +280,10 @@ ContactModel::removeContact(const std::string& contactUri, bool banned) if (!banned && contact != pimpl_->contacts.end() && contact->second.profileInfo.type == profile::Type::PENDING) { // Discard the pending request and remove profile from db if necessary - daemon::discardFromPending(owner, contactUri); + if(!daemon::discardFromPending(owner, contactUri)) { + qDebug() << "Discard request for account " << owner.id.c_str() << " failed (" << contactUri.c_str() << ")"; + return; + } pimpl_->contacts.erase(contactUri); database::removeContact(pimpl_->db, owner.profileInfo.uri, contactUri); emitContactRemoved = true;