only explicitly request device list for users not in roster
This commit is contained in:
parent
34718bcbbc
commit
8f11febe84
3 changed files with 17 additions and 3 deletions
|
@ -749,6 +749,7 @@ public class MessageParser extends AbstractParser implements OnMessagePacketRece
|
|||
mXmppConnectionService.getAvatarService().clear(conversation);
|
||||
mXmppConnectionService.updateMucRosterUi();
|
||||
mXmppConnectionService.updateConversationUi();
|
||||
Contact contact = user.getContact();
|
||||
if (!user.getAffiliation().ranks(MucOptions.Affiliation.MEMBER)) {
|
||||
Jid jid = user.getRealJid();
|
||||
List<Jid> cryptoTargets = conversation.getAcceptedCryptoTargets();
|
||||
|
@ -757,7 +758,11 @@ public class MessageParser extends AbstractParser implements OnMessagePacketRece
|
|||
conversation.setAcceptedCryptoTargets(cryptoTargets);
|
||||
mXmppConnectionService.updateConversation(conversation);
|
||||
}
|
||||
} else if (isNew && user.getRealJid() != null && account.getAxolotlService().hasEmptyDeviceList(user.getRealJid())) {
|
||||
} else if (isNew
|
||||
&& user.getRealJid() != null
|
||||
&& conversation.getMucOptions().isPrivateAndNonAnonymous()
|
||||
&& (contact == null || !contact.mutualPresenceSubscription())
|
||||
&& account.getAxolotlService().hasEmptyDeviceList(user.getRealJid())) {
|
||||
account.getAxolotlService().fetchDeviceIds(user.getRealJid());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -76,7 +76,12 @@ public class PresenceParser extends AbstractParser implements
|
|||
}
|
||||
boolean isNew = mucOptions.updateUser(user);
|
||||
final AxolotlService axolotlService = conversation.getAccount().getAxolotlService();
|
||||
if (isNew && user.getRealJid() != null && mucOptions.isPrivateAndNonAnonymous() && axolotlService.hasEmptyDeviceList(user.getRealJid())) {
|
||||
Contact contact = user.getContact();
|
||||
if (isNew
|
||||
&& user.getRealJid() != null
|
||||
&& mucOptions.isPrivateAndNonAnonymous()
|
||||
&& (contact == null || !contact.mutualPresenceSubscription())
|
||||
&& axolotlService.hasEmptyDeviceList(user.getRealJid())) {
|
||||
axolotlService.fetchDeviceIds(user.getRealJid());
|
||||
}
|
||||
if (codes.contains(MucOptions.STATUS_CODE_ROOM_CREATED) && mucOptions.autoPushConfiguration()) {
|
||||
|
|
|
@ -2527,7 +2527,11 @@ public class XmppConnectionService extends Service {
|
|||
MucOptions.User user = AbstractParser.parseItem(conversation, child);
|
||||
if (!user.realJidMatchesAccount()) {
|
||||
boolean isNew = conversation.getMucOptions().updateUser(user);
|
||||
if (isNew && user.getRealJid() != null && axolotlService.hasEmptyDeviceList(user.getRealJid())) {
|
||||
Contact contact = user.getContact();
|
||||
if (isNew
|
||||
&& user.getRealJid() != null
|
||||
&& (contact == null || !contact.mutualPresenceSubscription())
|
||||
&& axolotlService.hasEmptyDeviceList(user.getRealJid())) {
|
||||
axolotlService.fetchDeviceIds(user.getRealJid());
|
||||
}
|
||||
}
|
||||
|
|
Reference in a new issue