aboutsummaryrefslogtreecommitdiff
path: root/src/client/QXmppClient.cpp
diff options
context:
space:
mode:
authorLinus Jahn <lnj@kaidan.im>2019-10-21 17:01:03 +0200
committerLNJ <lnj@kaidan.im>2019-10-23 12:13:18 +0200
commitdfec49b06fc305cc55631e5473b9ba19c729cd03 (patch)
tree268083483bec5f41ce9b4dab1f0a9ece3f5258ed /src/client/QXmppClient.cpp
parent91157d28b88ef3bab80100cd816c643809944a27 (diff)
downloadqxmpp-dfec49b06fc305cc55631e5473b9ba19c729cd03.tar.gz
Port away from deprecated client extension getters of the QXmppClient
This replaces the deprecated getters in the examples and in the documentation.
Diffstat (limited to 'src/client/QXmppClient.cpp')
-rw-r--r--src/client/QXmppClient.cpp29
1 files changed, 19 insertions, 10 deletions
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<QXmppRosterManager>();
+
+ 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));
}
}