* <ay> : Byte Array
* <aay> : Array of Byte Arrays
* <as> : String Array
+* <ax> : Array of signed 64 bit integer
* <b> : Boolean (0|1)
* <x> : Signed 64 bit integer
* <> : no return value
Exceptions: AttachmentInvalid, Failure, InvalidNumber, UntrustedIdentity
+sendTyping(recipient<s>, stop<b>) -> <>::
+* recipient : Phone number of a single recipient
+* targetSentTimestamp : True, if typing state should be stopped
+
+Exceptions: Failure, GroupNotFound, UntrustedIdentity
+
+
+sendReadReceipt(recipient<s>, targetSentTimestamp<ax>) -> <>::
+* recipient : Phone number of a single recipient
+* targetSentTimestamp : Array of Longs to identify the corresponding signal messages
+
+Exceptions: Failure, 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
String message, List<String> attachments, List<String> recipients
) throws Error.AttachmentInvalid, Error.Failure, Error.InvalidNumber, Error.UntrustedIdentity;
+ void sendTyping(
+ String recipient, boolean stop
+ ) throws Error.Failure, Error.GroupNotFound, Error.UntrustedIdentity;
+
+ void sendReadReceipt(
+ String recipient, List<Long> targetSentTimestamp
+ ) throws Error.Failure, Error.UntrustedIdentity;
+
long sendRemoteDeleteMessage(
long targetSentTimestamp, String recipient
) throws Error.Failure, Error.InvalidNumber;
import org.asamk.signal.manager.AttachmentInvalidException;
import org.asamk.signal.manager.Manager;
import org.asamk.signal.manager.NotMasterDeviceException;
+import org.asamk.signal.manager.UntrustedIdentityException;
import org.asamk.signal.manager.api.Message;
import org.asamk.signal.manager.api.RecipientIdentifier;
+import org.asamk.signal.manager.api.TypingAction;
import org.asamk.signal.manager.groups.GroupId;
import org.asamk.signal.manager.groups.GroupInviteLinkUrl;
import org.asamk.signal.manager.groups.GroupNotFoundException;
}
}
+ @Override
+ public void sendTyping(
+ final String recipient, final boolean stop
+ ) throws Error.Failure, Error.GroupNotFound, Error.UntrustedIdentity {
+ try {
+ var recipients = new ArrayList<String>(1);
+ recipients.add(recipient);
+ m.sendTypingMessage(stop ? TypingAction.STOP : TypingAction.START,
+ getSingleRecipientIdentifiers(recipients, m.getUsername()).stream()
+ .map(RecipientIdentifier.class::cast)
+ .collect(Collectors.toSet()));
+ } catch (IOException e) {
+ throw new Error.Failure(e.getMessage());
+ } catch (GroupNotFoundException | NotAGroupMemberException | GroupSendingNotAllowedException e) {
+ throw new Error.GroupNotFound(e.getMessage());
+ } catch (UntrustedIdentityException e) {
+ throw new Error.UntrustedIdentity(e.getMessage());
+ }
+ }
+
+ @Override
+ public void sendReadReceipt(
+ final String recipient, final List<Long> timestamps
+ ) throws Error.Failure, Error.UntrustedIdentity {
+ try {
+ m.sendReadReceipt(getSingleRecipientIdentifier(recipient, m.getUsername()), timestamps);
+ } catch (IOException e) {
+ throw new Error.Failure(e.getMessage());
+ } catch (UntrustedIdentityException e) {
+ throw new Error.UntrustedIdentity(e.getMessage());
+ }
+ }
+
@Override
public long sendNoteToSelfMessage(
final String message, final List<String> attachments