]> 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 f684871abdc7bde96c230db95145b0045ff29f7b..9ae3001a6cf55975d7adff3c5e175e51b7709a21 100644 (file)
@@ -41,13 +41,14 @@ 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;
 import org.asamk.signal.manager.api.UpdateProfile;
 import org.asamk.signal.manager.api.UserStatus;
 import org.asamk.signal.manager.api.UsernameLinkUrl;
-import org.freedesktop.dbus.DBusMap;
+import org.asamk.signal.manager.api.UsernameStatus;
 import org.freedesktop.dbus.DBusPath;
 import org.freedesktop.dbus.connections.impl.DBusConnection;
 import org.freedesktop.dbus.exceptions.DBusException;
@@ -122,6 +123,11 @@ public class DbusManagerImpl implements Manager {
         return result;
     }
 
+    @Override
+    public Map<String, UsernameStatus> getUsernameStatus(final Set<String> usernames) {
+        throw new UnsupportedOperationException();
+    }
+
     @Override
     public void updateAccountAttributes(
             final String deviceName,
@@ -472,6 +478,14 @@ public class DbusManagerImpl implements Manager {
         return new SendMessageResults(0, Map.of());
     }
 
+    @Override
+    public SendMessageResults sendMessageRequestResponse(
+            final MessageEnvelope.Sync.MessageRequestResponse.Type type,
+            final Set<RecipientIdentifier> recipientIdentifiers
+    ) {
+        throw new UnsupportedOperationException();
+    }
+
     public void hideRecipient(final RecipientIdentifier.Single recipient) {
         throw new UnsupportedOperationException();
     }
@@ -676,8 +690,11 @@ public class DbusManagerImpl implements Manager {
                 return null;
             }
             return Recipient.newBuilder()
-                    .withAddress(new RecipientAddress(null, n))
+                    .withAddress(new RecipientAddress(n))
                     .withContact(new Contact(contactName,
+                            null,
+                            null,
+                            null,
                             null,
                             null,
                             null,
@@ -714,19 +731,19 @@ public class DbusManagerImpl implements Manager {
                     (String) group.get("Description").getValue(),
                     GroupInviteLinkUrl.fromUri((String) group.get("GroupInviteLink").getValue()),
                     ((List<String>) group.get("Members").getValue()).stream()
-                            .map(m -> new RecipientAddress(null, m))
+                            .map(m -> new RecipientAddress(m))
                             .collect(Collectors.toSet()),
                     ((List<String>) group.get("PendingMembers").getValue()).stream()
-                            .map(m -> new RecipientAddress(null, m))
+                            .map(m -> new RecipientAddress(m))
                             .collect(Collectors.toSet()),
                     ((List<String>) group.get("RequestingMembers").getValue()).stream()
-                            .map(m -> new RecipientAddress(null, m))
+                            .map(m -> new RecipientAddress(m))
                             .collect(Collectors.toSet()),
                     ((List<String>) group.get("Admins").getValue()).stream()
-                            .map(m -> new RecipientAddress(null, m))
+                            .map(m -> new RecipientAddress(m))
                             .collect(Collectors.toSet()),
                     ((List<String>) group.get("Banned").getValue()).stream()
-                            .map(m -> new RecipientAddress(null, m))
+                            .map(m -> new RecipientAddress(m))
                             .collect(Collectors.toSet()),
                     (boolean) group.get("IsBlocked").getValue(),
                     (int) group.get("MessageExpirationTimer").getValue(),
@@ -742,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
@@ -837,8 +868,7 @@ public class DbusManagerImpl implements Manager {
         try {
             this.dbusMsgHandler = messageReceived -> {
                 final var extras = messageReceived.getExtras();
-                final var envelope = new MessageEnvelope(Optional.of(new RecipientAddress(null,
-                        messageReceived.getSender())),
+                final var envelope = new MessageEnvelope(Optional.of(new RecipientAddress(messageReceived.getSender())),
                         0,
                         messageReceived.getTimestamp(),
                         0,
@@ -879,8 +909,7 @@ public class DbusManagerImpl implements Manager {
             connection.addSigHandler(Signal.MessageReceivedV2.class, signal, this.dbusMsgHandler);
             this.dbusEditMsgHandler = messageReceived -> {
                 final var extras = messageReceived.getExtras();
-                final var envelope = new MessageEnvelope(Optional.of(new RecipientAddress(null,
-                        messageReceived.getSender())),
+                final var envelope = new MessageEnvelope(Optional.of(new RecipientAddress(messageReceived.getSender())),
                         0,
                         messageReceived.getTimestamp(),
                         0,
@@ -928,8 +957,7 @@ public class DbusManagerImpl implements Manager {
                     case "delivery" -> MessageEnvelope.Receipt.Type.DELIVERY;
                     default -> MessageEnvelope.Receipt.Type.UNKNOWN;
                 };
-                final var envelope = new MessageEnvelope(Optional.of(new RecipientAddress(null,
-                        receiptReceived.getSender())),
+                final var envelope = new MessageEnvelope(Optional.of(new RecipientAddress(receiptReceived.getSender())),
                         0,
                         receiptReceived.getTimestamp(),
                         0,
@@ -950,8 +978,7 @@ public class DbusManagerImpl implements Manager {
 
             this.dbusSyncHandler = syncReceived -> {
                 final var extras = syncReceived.getExtras();
-                final var envelope = new MessageEnvelope(Optional.of(new RecipientAddress(null,
-                        syncReceived.getSource())),
+                final var envelope = new MessageEnvelope(Optional.of(new RecipientAddress(syncReceived.getSource())),
                         0,
                         syncReceived.getTimestamp(),
                         0,
@@ -965,7 +992,7 @@ public class DbusManagerImpl implements Manager {
                                 syncReceived.getTimestamp(),
                                 syncReceived.getDestination().isEmpty()
                                         ? Optional.empty()
-                                        : Optional.of(new RecipientAddress(null, syncReceived.getDestination())),
+                                        : Optional.of(new RecipientAddress(syncReceived.getDestination())),
                                 Set.of(),
                                 Optional.of(new MessageEnvelope.Data(syncReceived.getTimestamp(),
                                         syncReceived.getGroupId().length > 0
@@ -1035,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")
@@ -1062,9 +1089,9 @@ 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(null, getValue(a, "recipient")),
+                .map(a -> new MessageEnvelope.Data.Mention(new RecipientAddress(this.<String>getValue(a, "recipient")),
                         getValue(a, "start"),
                         getValue(a, "length")))
                 .toList();