]> nmode's Git Repositories - signal-cli/commitdiff
Implement sendGroupTying dbus method
authorAsamK <asamk@gmx.de>
Sat, 11 Dec 2021 18:26:15 +0000 (19:26 +0100)
committerAsamK <asamk@gmx.de>
Sat, 11 Dec 2021 18:38:06 +0000 (19:38 +0100)
man/signal-cli-dbus.5.adoc
src/main/java/org/asamk/Signal.java
src/main/java/org/asamk/signal/dbus/DbusManagerImpl.java
src/main/java/org/asamk/signal/dbus/DbusSignalImpl.java

index 5d3d214cedc6c1d3527694d87404dc5d1d81a370..e07e46668a803c34191fe70249e39328361d654e 100644 (file)
@@ -237,9 +237,9 @@ Exceptions: Failure, InvalidNumber
 
 sendTyping(recipient<s>, stop<b>) -> <>::
 * recipient : Phone number of a single recipient
 
 sendTyping(recipient<s>, stop<b>) -> <>::
 * recipient : Phone number of a single recipient
-* targetSentTimestamp : True, if typing state should be stopped
+* stop : True, if typing state should be stopped
 
 
-Exceptions: Failure, GroupNotFound, UntrustedIdentity
+Exceptions: Failure, UntrustedIdentity
 
 setContactBlocked(number<s>, block<b>) -> <>::
 * number : Phone number affected by method
 
 setContactBlocked(number<s>, block<b>) -> <>::
 * number : Phone number affected by method
@@ -353,6 +353,12 @@ sendGroupMessage(message<s>, attachments<as>, groupId<ay>) -> timestamp<x>::
 
 Exceptions: GroupNotFound, Failure, AttachmentInvalid, InvalidGroupId
 
 
 Exceptions: GroupNotFound, Failure, AttachmentInvalid, InvalidGroupId
 
+sendGroupTyping(groupId<ay>, stop<b>) -> <>::
+* groupId : Byte array representing the internal group identifier
+* stop : True, if typing state should be stopped
+
+Exceptions: Failure, GroupNotFound, UntrustedIdentity
+
 sendGroupMessageReaction(emoji<s>, remove<b>, targetAuthor<s>, targetSentTimestamp<x>, groupId<ay>) -> timestamp<x>::
 * emoji : Unicode grapheme cluster of the emoji
 * remove : Boolean, whether a previously sent reaction (emoji) should be removed
 sendGroupMessageReaction(emoji<s>, remove<b>, targetAuthor<s>, targetSentTimestamp<x>, groupId<ay>) -> timestamp<x>::
 * emoji : Unicode grapheme cluster of the emoji
 * remove : Boolean, whether a previously sent reaction (emoji) should be removed
index 421e5de5cd70e9aeb3933c19fdfc88db898c9b0c..35411bd0b4912158a82f7edfaf65cc89f6aa9b01 100644 (file)
@@ -36,7 +36,7 @@ public interface Signal extends DBusInterface {
 
     void sendTyping(
             String recipient, boolean stop
 
     void sendTyping(
             String recipient, boolean stop
-    ) throws Error.Failure, Error.GroupNotFound, Error.UntrustedIdentity;
+    ) throws Error.Failure, Error.UntrustedIdentity;
 
     void sendReadReceipt(
             String recipient, List<Long> messageIds
 
     void sendReadReceipt(
             String recipient, List<Long> messageIds
@@ -54,10 +54,6 @@ public interface Signal extends DBusInterface {
             long targetSentTimestamp, List<String> recipients
     ) throws Error.Failure, Error.InvalidNumber;
 
             long targetSentTimestamp, List<String> recipients
     ) throws Error.Failure, Error.InvalidNumber;
 
-    long sendGroupRemoteDeleteMessage(
-            long targetSentTimestamp, byte[] groupId
-    ) throws Error.Failure, Error.GroupNotFound, Error.InvalidGroupId;
-
     long sendMessageReaction(
             String emoji, boolean remove, String targetAuthor, long targetSentTimestamp, String recipient
     ) throws Error.InvalidNumber, Error.Failure;
     long sendMessageReaction(
             String emoji, boolean remove, String targetAuthor, long targetSentTimestamp, String recipient
     ) throws Error.InvalidNumber, Error.Failure;
@@ -84,6 +80,14 @@ public interface Signal extends DBusInterface {
             String message, List<String> attachments, byte[] groupId
     ) throws Error.GroupNotFound, Error.Failure, Error.AttachmentInvalid, Error.InvalidGroupId;
 
             String message, List<String> attachments, byte[] groupId
     ) throws Error.GroupNotFound, Error.Failure, Error.AttachmentInvalid, Error.InvalidGroupId;
 
+    void sendGroupTyping(
+            final byte[] groupId, final boolean stop
+    ) throws Error.Failure, Error.GroupNotFound, Error.UntrustedIdentity;
+
+    long sendGroupRemoteDeleteMessage(
+            long targetSentTimestamp, byte[] groupId
+    ) throws Error.Failure, Error.GroupNotFound, Error.InvalidGroupId;
+
     long sendGroupMessageReaction(
             String emoji, boolean remove, String targetAuthor, long targetSentTimestamp, byte[] groupId
     ) throws Error.GroupNotFound, Error.Failure, Error.InvalidNumber, Error.InvalidGroupId;
     long sendGroupMessageReaction(
             String emoji, boolean remove, String targetAuthor, long targetSentTimestamp, byte[] groupId
     ) throws Error.GroupNotFound, Error.Failure, Error.InvalidNumber, Error.InvalidGroupId;
index 446a7b527db7ffa5ba6d50b8c2196afe5f8d1226..c87a4a04a1a9f22431a6dfde69d6bc5123ad54a5 100644 (file)
@@ -301,7 +301,8 @@ public class DbusManagerImpl implements Manager {
             signal.sendTyping(signal.getSelfNumber(), action == TypingAction.STOP);
             return 0L;
         }, groupId -> {
             signal.sendTyping(signal.getSelfNumber(), action == TypingAction.STOP);
             return 0L;
         }, groupId -> {
-            throw new UnsupportedOperationException();
+            signal.sendGroupTyping(groupId, action == TypingAction.STOP);
+            return 0L;
         });
     }
 
         });
     }
 
index 4a07e55e79a8c044836cd986d16571aaef9e1a35..d306b3803b9810ee3e3d8fd08316c89ab551c64e 100644 (file)
@@ -238,22 +238,6 @@ public class DbusSignalImpl implements Signal {
         }
     }
 
         }
     }
 
-    @Override
-    public long sendGroupRemoteDeleteMessage(
-            final long targetSentTimestamp, final byte[] groupId
-    ) {
-        try {
-            final var results = m.sendRemoteDeleteMessage(targetSentTimestamp,
-                    Set.of(new RecipientIdentifier.Group(getGroupId(groupId))));
-            checkSendMessageResults(results.timestamp(), results.results());
-            return results.timestamp();
-        } catch (IOException e) {
-            throw new Error.Failure(e.getMessage());
-        } catch (GroupNotFoundException | NotAGroupMemberException | GroupSendingNotAllowedException e) {
-            throw new Error.GroupNotFound(e.getMessage());
-        }
-    }
-
     @Override
     public long sendMessageReaction(
             final String emoji,
     @Override
     public long sendMessageReaction(
             final String emoji,
@@ -401,7 +385,7 @@ public class DbusSignalImpl implements Signal {
     public long sendGroupMessage(final String message, final List<String> attachments, final byte[] groupId) {
         try {
             var results = m.sendMessage(new Message(message, attachments, List.of(), Optional.empty()),
     public long sendGroupMessage(final String message, final List<String> attachments, final byte[] groupId) {
         try {
             var results = m.sendMessage(new Message(message, attachments, List.of(), Optional.empty()),
-                    Set.of(new RecipientIdentifier.Group(getGroupId(groupId))));
+                    Set.of(getGroupRecipientIdentifier(groupId)));
             checkSendMessageResults(results.timestamp(), results.results());
             return results.timestamp();
         } catch (IOException e) {
             checkSendMessageResults(results.timestamp(), results.results());
             return results.timestamp();
         } catch (IOException e) {
@@ -413,6 +397,37 @@ public class DbusSignalImpl implements Signal {
         }
     }
 
         }
     }
 
+    @Override
+    public void sendGroupTyping(
+            final byte[] groupId, final boolean stop
+    ) throws Error.Failure, Error.GroupNotFound, Error.UntrustedIdentity {
+        try {
+            final var results = m.sendTypingMessage(stop ? TypingAction.STOP : TypingAction.START,
+                    Set.of(getGroupRecipientIdentifier(groupId)));
+            checkSendMessageResults(results.timestamp(), results.results());
+        } catch (IOException e) {
+            throw new Error.Failure(e.getMessage());
+        } catch (GroupNotFoundException | NotAGroupMemberException | GroupSendingNotAllowedException e) {
+            throw new Error.GroupNotFound(e.getMessage());
+        }
+    }
+
+    @Override
+    public long sendGroupRemoteDeleteMessage(
+            final long targetSentTimestamp, final byte[] groupId
+    ) {
+        try {
+            final var results = m.sendRemoteDeleteMessage(targetSentTimestamp,
+                    Set.of(getGroupRecipientIdentifier(groupId)));
+            checkSendMessageResults(results.timestamp(), results.results());
+            return results.timestamp();
+        } catch (IOException e) {
+            throw new Error.Failure(e.getMessage());
+        } catch (GroupNotFoundException | NotAGroupMemberException | GroupSendingNotAllowedException e) {
+            throw new Error.GroupNotFound(e.getMessage());
+        }
+    }
+
     @Override
     public long sendGroupMessageReaction(
             final String emoji,
     @Override
     public long sendGroupMessageReaction(
             final String emoji,
@@ -426,7 +441,7 @@ public class DbusSignalImpl implements Signal {
                     remove,
                     getSingleRecipientIdentifier(targetAuthor, m.getSelfNumber()),
                     targetSentTimestamp,
                     remove,
                     getSingleRecipientIdentifier(targetAuthor, m.getSelfNumber()),
                     targetSentTimestamp,
-                    Set.of(new RecipientIdentifier.Group(getGroupId(groupId))));
+                    Set.of(getGroupRecipientIdentifier(groupId)));
             checkSendMessageResults(results.timestamp(), results.results());
             return results.timestamp();
         } catch (IOException e) {
             checkSendMessageResults(results.timestamp(), results.results());
             return results.timestamp();
         } catch (IOException e) {
@@ -854,6 +869,10 @@ public class DbusSignalImpl implements Signal {
         }
     }
 
         }
     }
 
+    private RecipientIdentifier.Group getGroupRecipientIdentifier(final byte[] groupId) {
+        return new RecipientIdentifier.Group(getGroupId(groupId));
+    }
+
     private static GroupId getGroupId(byte[] groupId) throws DBusExecutionException {
         try {
             return GroupId.unknownVersion(groupId);
     private static GroupId getGroupId(byte[] groupId) throws DBusExecutionException {
         try {
             return GroupId.unknownVersion(groupId);