diff options
author | Christian Schneppe <christian@pix-art.de> | 2017-08-01 12:40:05 +0200 |
---|---|---|
committer | Christian Schneppe <christian@pix-art.de> | 2017-08-01 12:40:05 +0200 |
commit | e8c191dcd2e97977ee6a5e2738295d22e411ca9e (patch) | |
tree | 8c613061a3464a1349db216e442de08ef5282167 /src/main/java/de/pixart/messenger/crypto/axolotl/AxolotlService.java | |
parent | 8b6981c6ebf8286eb690764aaa8165a7a398c8da (diff) |
fetch device ids for muc members w/o known devices
Diffstat (limited to 'src/main/java/de/pixart/messenger/crypto/axolotl/AxolotlService.java')
-rw-r--r-- | src/main/java/de/pixart/messenger/crypto/axolotl/AxolotlService.java | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/src/main/java/de/pixart/messenger/crypto/axolotl/AxolotlService.java b/src/main/java/de/pixart/messenger/crypto/axolotl/AxolotlService.java index b444349b2..b3ceb3c55 100644 --- a/src/main/java/de/pixart/messenger/crypto/axolotl/AxolotlService.java +++ b/src/main/java/de/pixart/messenger/crypto/axolotl/AxolotlService.java @@ -210,7 +210,7 @@ public class AxolotlService implements OnAdvancedStreamFeaturesLoaded { putDevicesForJid(account.getJid().toBareJid().toPreppedString(), deviceIds, store); for (Contact contact : account.getRoster().getContacts()) { Jid bareJid = contact.getJid().toBareJid(); - String address = bareJid.toString(); + String address = bareJid.toPreppedString(); deviceIds = store.getSubDeviceSessions(address); putDevicesForJid(address, deviceIds, store); } @@ -838,6 +838,27 @@ public class AxolotlService implements OnAdvancedStreamFeaturesLoaded { } } + public boolean hasEmptyDeviceList(Jid jid) { + return !hasAny(jid) && (!deviceIds.containsKey(jid) || deviceIds.get(jid).isEmpty()); + } + + public void fetchDeviceIds(final Jid jid) { + Log.d(Config.LOGTAG, "fetching device ids for " + jid); + IqPacket packet = mXmppConnectionService.getIqGenerator().retrieveDeviceIds(jid); + mXmppConnectionService.sendIqPacket(account, packet, new OnIqPacketReceived() { + @Override + public void onIqPacketReceived(Account account, IqPacket packet) { + if (packet.getType() == IqPacket.TYPE.RESULT) { + Element item = mXmppConnectionService.getIqParser().getItem(packet); + Set<Integer> deviceIds = mXmppConnectionService.getIqParser().deviceIds(item); + registerDevices(jid, deviceIds); + } else { + Log.d(Config.LOGTAG, packet.toString()); + } + } + }); + } + private void buildSessionFromPEP(final SignalProtocolAddress address) { Log.i(Config.LOGTAG, AxolotlService.getLogprefix(account) + "Building new session for " + address.toString()); if (address.equals(getOwnAxolotlAddress())) { |