]> nmode's Git Repositories - signal-cli/blobdiff - src/main/java/org/asamk/signal/dbus/DbusManagerImpl.java
Implement getConfiguration method in Manager
[signal-cli] / src / main / java / org / asamk / signal / dbus / DbusManagerImpl.java
index 0d5ed98e5a662be69821dc4090993d9a457ecd6f..c8dd1d45b3b85cddd06c479c171e6dd10fee648e 100644 (file)
@@ -7,6 +7,7 @@ import org.asamk.signal.manager.Manager;
 import org.asamk.signal.manager.NotMasterDeviceException;
 import org.asamk.signal.manager.StickerPackInvalidException;
 import org.asamk.signal.manager.UntrustedIdentityException;
+import org.asamk.signal.manager.api.Configuration;
 import org.asamk.signal.manager.api.Device;
 import org.asamk.signal.manager.api.Group;
 import org.asamk.signal.manager.api.Identity;
@@ -106,12 +107,12 @@ public class DbusManagerImpl implements Manager {
     }
 
     @Override
-    public void updateConfiguration(
-            final Boolean readReceipts,
-            final Boolean unidentifiedDeliveryIndicators,
-            final Boolean typingIndicators,
-            final Boolean linkPreviews
-    ) throws IOException {
+    public Configuration getConfiguration() {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void updateConfiguration(Configuration configuration) throws IOException {
         throw new UnsupportedOperationException();
     }
 
@@ -437,13 +438,7 @@ public class DbusManagerImpl implements Manager {
         synchronized (messageHandlers) {
             messageHandlers.remove(handler);
             if (messageHandlers.size() == 0) {
-                try {
-                    connection.removeSigHandler(Signal.MessageReceivedV2.class, signal, this.dbusMsgHandler);
-                    connection.removeSigHandler(Signal.ReceiptReceivedV2.class, signal, this.dbusRcptHandler);
-                    connection.removeSigHandler(Signal.SyncMessageReceivedV2.class, signal, this.dbusSyncHandler);
-                } catch (DBusException e) {
-                    e.printStackTrace();
-                }
+                uninstallMessageHandlers();
             }
         }
     }
@@ -583,6 +578,13 @@ public class DbusManagerImpl implements Manager {
 
     @Override
     public void close() throws IOException {
+        synchronized (this) {
+            this.notify();
+        }
+        synchronized (messageHandlers) {
+            messageHandlers.clear();
+            uninstallMessageHandlers();
+        }
     }
 
     private SendMessageResults handleMessage(
@@ -757,6 +759,16 @@ public class DbusManagerImpl implements Manager {
         }
     }
 
+    private void uninstallMessageHandlers() {
+        try {
+            connection.removeSigHandler(Signal.MessageReceivedV2.class, signal, this.dbusMsgHandler);
+            connection.removeSigHandler(Signal.ReceiptReceivedV2.class, signal, this.dbusRcptHandler);
+            connection.removeSigHandler(Signal.SyncMessageReceivedV2.class, signal, this.dbusSyncHandler);
+        } catch (DBusException e) {
+            e.printStackTrace();
+        }
+    }
+
     private List<MessageEnvelope.Data.Attachment> getAttachments(final Map<String, Variant<?>> extras) {
         if (!extras.containsKey("attachments")) {
             return List.of();