]> nmode's Git Repositories - signal-cli/blobdiff - src/main/java/org/asamk/signal/dbus/DbusManagerImpl.java
Handle mentions when receiving from dbus
[signal-cli] / src / main / java / org / asamk / signal / dbus / DbusManagerImpl.java
index e149e58ce97f2f8d741e6e918c9b30aa6b135741..9ba193489cc1713c3b8daf1c7cd8447da76343f5 100644 (file)
@@ -121,7 +121,9 @@ public class DbusManagerImpl implements Manager {
     }
 
     @Override
-    public void updateAccountAttributes(final String deviceName) throws IOException {
+    public void updateAccountAttributes(
+            final String deviceName, final Boolean unrestrictedUnidentifiedSender
+    ) throws IOException {
         if (deviceName != null) {
             final var devicePath = signal.getThisDevice();
             getRemoteObject(devicePath, Signal.Device.class).Set("org.asamk.Signal.Device", "Name", deviceName);
@@ -847,7 +849,7 @@ public class DbusManagerImpl implements Manager {
                                 Optional.empty(),
                                 Optional.empty(),
                                 List.of(),
-                                List.of(),
+                                getMentions(extras),
                                 List.of(),
                                 List.of())),
                         Optional.empty(),
@@ -891,7 +893,7 @@ public class DbusManagerImpl implements Manager {
                                         Optional.empty(),
                                         Optional.empty(),
                                         List.of(),
-                                        List.of(),
+                                        getMentions(extras),
                                         List.of(),
                                         List.of()))),
                         Optional.empty(),
@@ -968,7 +970,7 @@ public class DbusManagerImpl implements Manager {
                                         Optional.empty(),
                                         Optional.empty(),
                                         List.of(),
-                                        List.of(),
+                                        getMentions(extras),
                                         List.of(),
                                         List.of())),
                                 Optional.empty(),
@@ -1037,6 +1039,19 @@ public class DbusManagerImpl implements Manager {
         }).toList();
     }
 
+    private List<MessageEnvelope.Data.Mention> getMentions(final Map<String, Variant<?>> extras) {
+        if (!extras.containsKey("mentions")) {
+            return List.of();
+        }
+
+        final List<DBusMap<String, Variant<?>>> mentions = getValue(extras, "mentions");
+        return mentions.stream()
+                .map(a -> new MessageEnvelope.Data.Mention(new RecipientAddress(null, getValue(a, "recipient")),
+                        getValue(a, "start"),
+                        getValue(a, "length")))
+                .toList();
+    }
+
     @Override
     public InputStream retrieveAttachment(final String id) throws IOException {
         throw new UnsupportedOperationException();