Fix devicelist update handling
Andreas Straub
created 10 years ago
No longer store own device ID (so that we don't encrypt messages for
ourselves), verify that own device ID is present in update list
(otherwise republish), reflect update in UI.
Change summary
src/main/java/eu/siacs/conversations/crypto/axolotl/AxolotlService.java | 5
src/main/java/eu/siacs/conversations/parser/MessageParser.java | 1
2 files changed, 6 insertions(+)
Detailed changes
@@ -640,10 +640,15 @@ public class AxolotlService {
}
public void registerDevices(final Jid jid, @NonNull final Set<Integer> deviceIds) {
+ if(deviceIds.contains(getOwnDeviceId())) {
+ Log.d(Config.LOGTAG, "Skipping own Device ID:"+ jid + ":"+getOwnDeviceId());
+ deviceIds.remove(getOwnDeviceId());
+ }
for(Integer i:deviceIds) {
Log.d(Config.LOGTAG, "Adding Device ID:"+ jid + ":"+i);
}
this.deviceIds.put(jid, deviceIds);
+ publishOwnDeviceIdIfNeeded();
}
public void publishOwnDeviceIdIfNeeded() {
@@ -194,6 +194,7 @@ public class MessageParser extends AbstractParser implements
Set<Integer> deviceIds = mXmppConnectionService.getIqParser().deviceIds(item);
AxolotlService axolotlService = account.getAxolotlService();
axolotlService.registerDevices(from, deviceIds);
+ mXmppConnectionService.updateAccountUi();
}
}