]> nmode's Git Repositories - signal-cli/blobdiff - src/main/java/org/asamk/signal/dbus/DbusManagerImpl.java
Include unrestricted unidentified access state in getUserStatus response
[signal-cli] / src / main / java / org / asamk / signal / dbus / DbusManagerImpl.java
index 51323395fa3576bee1c4b16a1b85dec73fa8f293..05ba6b9983d943a2f3d5bf3df496b849e8683483 100644 (file)
@@ -22,6 +22,7 @@ import org.asamk.signal.manager.api.StickerPackInvalidException;
 import org.asamk.signal.manager.api.StickerPackUrl;
 import org.asamk.signal.manager.api.TypingAction;
 import org.asamk.signal.manager.api.UpdateGroup;
+import org.asamk.signal.manager.api.UserStatus;
 import org.asamk.signal.manager.groups.GroupId;
 import org.asamk.signal.manager.groups.GroupInviteLinkUrl;
 import org.asamk.signal.manager.groups.GroupNotFoundException;
@@ -50,9 +51,9 @@ import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
+import java.util.Objects;
 import java.util.Optional;
 import java.util.Set;
-import java.util.UUID;
 import java.util.concurrent.atomic.AtomicLong;
 import java.util.function.Function;
 import java.util.function.Supplier;
@@ -86,14 +87,16 @@ public class DbusManagerImpl implements Manager {
     }
 
     @Override
-    public Map<String, Pair<String, UUID>> areUsersRegistered(final Set<String> numbers) throws IOException {
+    public Map<String, UserStatus> getUserStatus(final Set<String> numbers) throws IOException {
         final var numbersList = new ArrayList<>(numbers);
         final var registered = signal.isRegistered(numbersList);
 
-        final var result = new HashMap<String, Pair<String, UUID>>();
+        final var result = new HashMap<String, UserStatus>();
         for (var i = 0; i < numbersList.size(); i++) {
             result.put(numbersList.get(i),
-                    new Pair<>(numbersList.get(i), registered.get(i) ? RecipientAddress.UNKNOWN_UUID : null));
+                    new UserStatus(numbersList.get(i),
+                            registered.get(i) ? RecipientAddress.UNKNOWN_UUID : null,
+                            false));
         }
         return result;
     }
@@ -540,7 +543,14 @@ public class DbusManagerImpl implements Manager {
 
     @Override
     public List<Pair<RecipientAddress, Contact>> getContacts() {
-        throw new UnsupportedOperationException();
+        return signal.listNumbers().stream().map(n -> {
+            final var contactName = signal.getContactName(n);
+            if (contactName.length() == 0) {
+                return null;
+            }
+            return new Pair<>(new RecipientAddress(null, n),
+                    new Contact(contactName, null, 0, signal.isContactBlocked(n), false));
+        }).filter(Objects::nonNull).toList();
     }
 
     @Override
@@ -575,6 +585,9 @@ public class DbusManagerImpl implements Manager {
                     ((List<String>) group.get("Admins").getValue()).stream()
                             .map(m -> new RecipientAddress(null, m))
                             .collect(Collectors.toSet()),
+                    ((List<String>) group.get("Banned").getValue()).stream()
+                            .map(m -> new RecipientAddress(null, m))
+                            .collect(Collectors.toSet()),
                     (boolean) group.get("IsBlocked").getValue(),
                     (int) group.get("MessageExpirationTimer").getValue(),
                     GroupPermission.valueOf((String) group.get("PermissionAddMember").getValue()),
@@ -775,7 +788,7 @@ public class DbusManagerImpl implements Manager {
                                         ? Optional.empty()
                                         : Optional.of(new RecipientAddress(null, syncReceived.getDestination())),
                                 Set.of(),
-                                new MessageEnvelope.Data(syncReceived.getTimestamp(),
+                                Optional.of(new MessageEnvelope.Data(syncReceived.getTimestamp(),
                                         syncReceived.getGroupId().length > 0
                                                 ? Optional.of(new MessageEnvelope.Data.GroupContext(GroupId.unknownVersion(
                                                 syncReceived.getGroupId()), false, 0))
@@ -795,7 +808,7 @@ public class DbusManagerImpl implements Manager {
                                         Optional.empty(),
                                         List.of(),
                                         List.of(),
-                                        List.of()))),
+                                        List.of())))),
                                 Optional.empty(),
                                 List.of(),
                                 List.of(),