Fix devicelist update handling

Andreas Straub created

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

src/main/java/eu/siacs/conversations/crypto/axolotl/AxolotlService.java 🔗

@@ -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() {

src/main/java/eu/siacs/conversations/parser/MessageParser.java 🔗

@@ -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();
 		}
 	}