X-Git-Url: https://git.nmode.ca/signal-cli/blobdiff_plain/32818a8608f5bddc46ad5c7dc442f509c939791c..e22cc457ae91e22deb54373078bef7e8cd22edcb:/src/main/java/org/asamk/signal/dbus/DbusManagerImpl.java diff --git a/src/main/java/org/asamk/signal/dbus/DbusManagerImpl.java b/src/main/java/org/asamk/signal/dbus/DbusManagerImpl.java index 0d5ed98e..c8dd1d45 100644 --- a/src/main/java/org/asamk/signal/dbus/DbusManagerImpl.java +++ b/src/main/java/org/asamk/signal/dbus/DbusManagerImpl.java @@ -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 getAttachments(final Map> extras) { if (!extras.containsKey("attachments")) { return List.of();