]> nmode's Git Repositories - signal-cli/blobdiff - src/main/java/org/asamk/signal/dbus/DbusManagerImpl.java
Replace deprecated DBusMap
[signal-cli] / src / main / java / org / asamk / signal / dbus / DbusManagerImpl.java
index 4573b861734a05bd1ac6570c0404b78393d18f41..9ae3001a6cf55975d7adff3c5e175e51b7709a21 100644 (file)
@@ -41,6 +41,7 @@ import org.asamk.signal.manager.api.StickerPack;
 import org.asamk.signal.manager.api.StickerPackId;
 import org.asamk.signal.manager.api.StickerPackInvalidException;
 import org.asamk.signal.manager.api.StickerPackUrl;
+import org.asamk.signal.manager.api.TrustLevel;
 import org.asamk.signal.manager.api.TypingAction;
 import org.asamk.signal.manager.api.UnregisteredRecipientException;
 import org.asamk.signal.manager.api.UpdateGroup;
@@ -48,7 +49,6 @@ import org.asamk.signal.manager.api.UpdateProfile;
 import org.asamk.signal.manager.api.UserStatus;
 import org.asamk.signal.manager.api.UsernameLinkUrl;
 import org.asamk.signal.manager.api.UsernameStatus;
-import org.freedesktop.dbus.DBusMap;
 import org.freedesktop.dbus.DBusPath;
 import org.freedesktop.dbus.connections.impl.DBusConnection;
 import org.freedesktop.dbus.exceptions.DBusException;
@@ -759,12 +759,26 @@ public class DbusManagerImpl implements Manager {
 
     @Override
     public List<Identity> getIdentities() {
-        throw new UnsupportedOperationException();
+        final var identities = signal.listIdentities();
+        return identities.stream().map(Signal.StructIdentity::getObjectPath).map(this::getIdentity).toList();
     }
 
     @Override
     public List<Identity> getIdentities(final RecipientIdentifier.Single recipient) {
-        throw new UnsupportedOperationException();
+        final var path = signal.getIdentity(recipient.getIdentifier());
+        return List.of(getIdentity(path));
+    }
+
+    private Identity getIdentity(final DBusPath identityPath) {
+        final var group = getRemoteObject(identityPath, Signal.Identity.class).GetAll("org.asamk.Signal.Identity");
+        final var aci = (String) group.get("Uuid").getValue();
+        final var number = (String) group.get("Number").getValue();
+        return new Identity(new RecipientAddress(aci, null, number, null),
+                (byte[]) group.get("Fingerprint").getValue(),
+                (String) group.get("SafetyNumber").getValue(),
+                (byte[]) group.get("ScannableSafetyNumber").getValue(),
+                TrustLevel.valueOf((String) group.get("TrustLevel").getValue()),
+                (Long) group.get("AddedDate").getValue());
     }
 
     @Override
@@ -1048,7 +1062,7 @@ public class DbusManagerImpl implements Manager {
             return List.of();
         }
 
-        final List<DBusMap<String, Variant<?>>> attachments = getValue(extras, "attachments");
+        final List<Map<String, Variant<?>>> attachments = getValue(extras, "attachments");
         return attachments.stream().map(a -> {
             final String file = a.containsKey("file") ? getValue(a, "file") : null;
             return new MessageEnvelope.Data.Attachment(a.containsKey("remoteId")
@@ -1075,7 +1089,7 @@ public class DbusManagerImpl implements Manager {
             return List.of();
         }
 
-        final List<DBusMap<String, Variant<?>>> mentions = getValue(extras, "mentions");
+        final List<Map<String, Variant<?>>> mentions = getValue(extras, "mentions");
         return mentions.stream()
                 .map(a -> new MessageEnvelope.Data.Mention(new RecipientAddress(this.<String>getValue(a, "recipient")),
                         getValue(a, "start"),