From dfec49b06fc305cc55631e5473b9ba19c729cd03 Mon Sep 17 00:00:00 2001 From: Linus Jahn Date: Mon, 21 Oct 2019 17:01:03 +0200 Subject: Port away from deprecated client extension getters of the QXmppClient This replaces the deprecated getters in the examples and in the documentation. --- src/client/QXmppClient.cpp | 29 +++++++++++++++++++---------- 1 file changed, 19 insertions(+), 10 deletions(-) (limited to 'src/client/QXmppClient.cpp') diff --git a/src/client/QXmppClient.cpp b/src/client/QXmppClient.cpp index deef3dbc..b71fd8e9 100644 --- a/src/client/QXmppClient.cpp +++ b/src/client/QXmppClient.cpp @@ -361,22 +361,31 @@ QXmppRosterManager& QXmppClient::rosterManager() /// is offline or not present in the roster, it will still send a message to /// the bareJid. /// +/// \note Usage of this method is discouraged because most modern clients use +/// carbon messages (XEP-0280: Message Carbons) and MAM (XEP-0313: Message +/// Archive Management) and so could possibly receive messages multiple times +/// or not receive them at all. +/// \c QXmppClient::sendPacket() should be used instead with a \c QXmppMessage. +/// /// \param bareJid bareJid of the receiving entity /// \param message Message string to be sent. void QXmppClient::sendMessage(const QString& bareJid, const QString& message) { - QStringList resources = rosterManager().getResources(bareJid); - if(!resources.isEmpty()) - { - for(int i = 0; i < resources.size(); ++i) - { - sendPacket(QXmppMessage("", bareJid + "/" + resources.at(i), message)); + QXmppRosterManager *rosterManager = findExtension(); + + const QStringList resources = rosterManager + ? rosterManager->getResources(bareJid) + : QStringList(); + + if (!resources.isEmpty()) { + for (const auto &resource : resources) { + sendPacket( + QXmppMessage({}, bareJid + QStringLiteral("/") + resource, message) + ); } - } - else - { - sendPacket(QXmppMessage("", bareJid, message)); + } else { + sendPacket(QXmppMessage({}, bareJid, message)); } } -- cgit v1.2.3