Skip to content
This repository was archived by the owner on Mar 20, 2025. It is now read-only.

Commit 67e9849

Browse files
committed
Merge branch '1.9'
2 parents b9bfb32 + 1fd87ab commit 67e9849

File tree

3 files changed

+641
-486
lines changed

3 files changed

+641
-486
lines changed

src/client/QXmppMixManager.cpp

+20-7
Original file line numberDiff line numberDiff line change
@@ -121,17 +121,30 @@ static void serializeMixData(const MixData &d, QXmlStreamWriter &writer)
121121
/// connection:
122122
/// * participantSupport()
123123
/// * messageArchivingSupport()
124-
/// That is done via QXmppDiscoveryManager::requestInfo():
124+
/// That is done via QXmppDiscoveryManager::requestInfo() for the user JID (i.e., no recipient JID):
125125
/// \code
126-
/// client->findExtension<QXmppDiscoveryManager>()->requestInfo(client->configuration().domain());
126+
/// client->findExtension<QXmppDiscoveryManager>()->requestInfo({});
127127
/// \endcode
128128
///
129129
/// Before calling one of the following methods, you need to request the information once per
130130
/// connection:
131131
/// * services()
132-
/// That is done via QXmppDiscoveryManager::requestItems():
132+
/// That is done via QXmppDiscoveryManager::requestDiscoItems() for the server JID and
133+
/// QXmppDiscoveryManager::requestInfo() for each item it provides:
133134
/// \code
134-
/// client->findExtension<QXmppDiscoveryManager>()->requestItems(client->configuration().domain());
135+
/// const auto *discoveryManager = client->findExtension<QXmppDiscoveryManager>();
136+
/// discoveryManager->requestDiscoItems(client->configuration().domain())
137+
/// .then(this, [this](QXmppDiscoveryManager::ItemsResult &&result) {
138+
/// if (const auto *error = std::get_if<QXmppError>(&result)) {
139+
/// // Handle the error.
140+
/// } else {
141+
/// const auto items = std::get<QList<QXmppDiscoveryIq::Item>>(std::move(result));
142+
/// for (const auto &item : items) {
143+
/// discoveryManager->requestInfo(item.jid());
144+
/// }
145+
/// }
146+
/// }
147+
/// );
135148
/// \endcode
136149
///
137150
/// If you want to be informed about updates of the channel (e.g., its configuration or allowed
@@ -1394,7 +1407,7 @@ QXmppTask<QXmppClient::EmptyResult> QXmppMixManager::addJidToNode(const QString
13941407
void QXmppMixManager::handleDiscoInfo(const QXmppDiscoveryIq &iq)
13951408
{
13961409
// Check the server's functionality to support MIX clients.
1397-
if (iq.from().isEmpty() || iq.from() == client()->configuration().domain()) {
1410+
if (iq.from().isEmpty() || iq.from() == client()->configuration().jidBare()) {
13981411
// Check whether MIX is supported.
13991412
if (iq.features().contains(ns_mix_pam)) {
14001413
setParticipantSupport(QXmppMixManager::Support::Supported);
@@ -1409,7 +1422,7 @@ void QXmppMixManager::handleDiscoInfo(const QXmppDiscoveryIq &iq)
14091422
}
14101423
}
14111424

1412-
const auto jid = iq.from().isEmpty() ? client()->configuration().domain() : iq.from();
1425+
const auto jid = iq.from();
14131426

14141427
// If no MIX service is provided by the JID, remove it from the cache.
14151428
if (!iq.features().contains(ns_mix)) {
@@ -1424,7 +1437,7 @@ void QXmppMixManager::handleDiscoInfo(const QXmppDiscoveryIq &iq)
14241437
// ' || identity.type() == u"text"' is a workaround for older ejabberd versions.
14251438
if (identity.category() == u"conference" && (identity.type() == MIX_SERVICE_DISCOVERY_NODE || identity.type() == u"text")) {
14261439
Service service;
1427-
service.jid = iq.from().isEmpty() ? client()->configuration().domain() : iq.from();
1440+
service.jid = jid;
14281441
service.channelsSearchable = iq.features().contains(ns_mix_searchable);
14291442
service.channelCreationAllowed = iq.features().contains(ns_mix_create_channel);
14301443

src/client/QXmppMixManager.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ class QXMPP_EXPORT QXmppMixManager : public QXmppClientExtension, public QXmppPu
9898
QXmppTask<JoiningResult> joinChannel(const QXmppMixInvitation &invitation, const QString &nickname = {}, QXmppMixConfigItem::Nodes nodes = ~QXmppMixConfigItem::Nodes());
9999

100100
QXmppTask<NicknameResult> updateNickname(const QString &channelJid, const QString &nickname);
101-
QXmppTask<SubscriptionResult> updateSubscriptions(const QString &channelJid, QXmppMixConfigItem::Nodes subscriptionAdditions = ~QXmppMixConfigItem::Nodes(), QXmppMixConfigItem::Nodes subscriptionRemovals = ~QXmppMixConfigItem::Nodes());
101+
QXmppTask<SubscriptionResult> updateSubscriptions(const QString &channelJid, QXmppMixConfigItem::Nodes subscriptionAdditions = ~QXmppMixConfigItem::Nodes(), QXmppMixConfigItem::Nodes subscriptionRemovals = {});
102102

103103
QXmppTask<InvitationResult> requestInvitation(const QString &channelJid, const QString &inviteeJid);
104104

0 commit comments

Comments
 (0)