From: AsamK Date: Sat, 11 Dec 2021 18:59:34 +0000 (+0100) Subject: Implement more methods for DbusManagerImpl X-Git-Tag: v0.10.0~3 X-Git-Url: https://git.nmode.ca/signal-cli/commitdiff_plain/d248f249e37f7b35a3b7dd69f2a06af8eddd3996?hp=4f50668fe360cc4d42d02ae36783952a9334a9d2 Implement more methods for DbusManagerImpl --- diff --git a/graalvm-config-dir/proxy-config.json b/graalvm-config-dir/proxy-config.json index 8f5752fe..77ae83b1 100644 --- a/graalvm-config-dir/proxy-config.json +++ b/graalvm-config-dir/proxy-config.json @@ -2,6 +2,12 @@ { "interfaces":["org.asamk.Signal"]} , + { + "interfaces":["org.asamk.Signal$Configuration"]} + , + { + "interfaces":["org.asamk.Signal$Device"]} + , { "interfaces":["org.asamk.Signal$Group"]} , diff --git a/graalvm-config-dir/reflect-config.json b/graalvm-config-dir/reflect-config.json index cb75cbd9..464706e0 100644 --- a/graalvm-config-dir/reflect-config.json +++ b/graalvm-config-dir/reflect-config.json @@ -326,7 +326,9 @@ , { "name":"org.asamk.Signal$StructDevice", - "allDeclaredFields":true} + "allDeclaredFields":true, + "queryAllDeclaredConstructors":true, + "methods":[{"name":"","parameterTypes":["org.freedesktop.dbus.DBusPath","java.lang.Long","java.lang.String"] }]} , { "name":"org.asamk.Signal$StructGroup", @@ -1472,6 +1474,10 @@ "name":"org.signal.storageservice.protos.groups.GroupChange$Actions$ModifyAddFromInviteLinkAccessControlAction", "fields":[{"name":"addFromInviteLinkAccess_"}]} , +{ + "name":"org.signal.storageservice.protos.groups.GroupChange$Actions$ModifyAnnouncementsOnlyAction", + "fields":[{"name":"announcementsOnly_"}]} +, { "name":"org.signal.storageservice.protos.groups.GroupChange$Actions$ModifyAttributesAccessControlAction", "fields":[{"name":"attributesAccess_"}]} diff --git a/src/main/java/org/asamk/Signal.java b/src/main/java/org/asamk/Signal.java index 35411bd0..4fca64f3 100644 --- a/src/main/java/org/asamk/Signal.java +++ b/src/main/java/org/asamk/Signal.java @@ -530,6 +530,8 @@ public interface Signal extends DBusInterface { void quitGroup() throws Error.Failure, Error.LastGroupAdmin; + void deleteGroup() throws Error.Failure; + void addMembers(List recipients) throws Error.Failure; void removeMembers(List recipients) throws Error.Failure; diff --git a/src/main/java/org/asamk/signal/dbus/DbusManagerImpl.java b/src/main/java/org/asamk/signal/dbus/DbusManagerImpl.java index c87a4a04..df21d94d 100644 --- a/src/main/java/org/asamk/signal/dbus/DbusManagerImpl.java +++ b/src/main/java/org/asamk/signal/dbus/DbusManagerImpl.java @@ -110,12 +110,28 @@ public class DbusManagerImpl implements Manager { @Override public Configuration getConfiguration() { - throw new UnsupportedOperationException(); + final var configuration = getRemoteObject(new DBusPath(signal.getObjectPath() + "/Configuration"), + Signal.Configuration.class).GetAll("org.asamk.Signal.Configuration"); + return new Configuration(Optional.of((Boolean) configuration.get("ReadReceipts").getValue()), + Optional.of((Boolean) configuration.get("UnidentifiedDeliveryIndicators").getValue()), + Optional.of((Boolean) configuration.get("TypingIndicators").getValue()), + Optional.of((Boolean) configuration.get("LinkPreviews").getValue())); } @Override - public void updateConfiguration(Configuration configuration) throws IOException { - throw new UnsupportedOperationException(); + public void updateConfiguration(Configuration newConfiguration) throws IOException { + final var configuration = getRemoteObject(new DBusPath(signal.getObjectPath() + "/Configuration"), + Signal.Configuration.class); + newConfiguration.readReceipts() + .ifPresent(v -> configuration.Set("org.asamk.Signal.Configuration", "ReadReceipts", v)); + newConfiguration.unidentifiedDeliveryIndicators() + .ifPresent(v -> configuration.Set("org.asamk.Signal.Configuration", + "UnidentifiedDeliveryIndicators", + v)); + newConfiguration.typingIndicators() + .ifPresent(v -> configuration.Set("org.asamk.Signal.Configuration", "TypingIndicators", v)); + newConfiguration.linkPreviews() + .ifPresent(v -> configuration.Set("org.asamk.Signal.Configuration", "LinkPreviews", v)); } @Override @@ -136,12 +152,12 @@ public class DbusManagerImpl implements Manager { @Override public void unregister() throws IOException { - throw new UnsupportedOperationException(); + signal.unregister(); } @Override public void deleteAccount() throws IOException { - throw new UnsupportedOperationException(); + signal.deleteAccount(); } @Override @@ -208,7 +224,8 @@ public class DbusManagerImpl implements Manager { @Override public void deleteGroup(final GroupId groupId) throws IOException { - throw new UnsupportedOperationException(); + final var group = getRemoteObject(signal.getGroup(groupId.serialize()), Signal.Group.class); + group.deleteGroup(); } @Override diff --git a/src/main/java/org/asamk/signal/dbus/DbusSignalImpl.java b/src/main/java/org/asamk/signal/dbus/DbusSignalImpl.java index d306b380..f2af8a3e 100644 --- a/src/main/java/org/asamk/signal/dbus/DbusSignalImpl.java +++ b/src/main/java/org/asamk/signal/dbus/DbusSignalImpl.java @@ -562,6 +562,7 @@ public class DbusSignalImpl implements Signal { final var memberIdentifiers = getSingleRecipientIdentifiers(members, m.getSelfNumber()); if (groupId == null) { final var results = m.createGroup(name, memberIdentifiers, avatar == null ? null : new File(avatar)); + updateGroups(); checkSendMessageResults(results.second().timestamp(), results.second().results()); return results.first().serialize(); } else { @@ -1152,6 +1153,16 @@ public class DbusSignalImpl implements Signal { } } + @Override + public void deleteGroup() throws Error.Failure, Error.LastGroupAdmin { + try { + m.deleteGroup(groupId); + } catch (IOException e) { + throw new Error.Failure(e.getMessage()); + } + updateGroups(); + } + @Override public void addMembers(final List recipients) throws Error.Failure { final var memberIdentifiers = getSingleRecipientIdentifiers(recipients, m.getSelfNumber());