From: AsamK Date: Sun, 30 Oct 2022 13:41:02 +0000 (+0100) Subject: Implement reacting to stories X-Git-Tag: v0.11.5~26 X-Git-Url: https://git.nmode.ca/signal-cli/commitdiff_plain/fea19c9e20ed07228420dae93399911a659e51b1 Implement reacting to stories --- diff --git a/client/src/cli.rs b/client/src/cli.rs index 01910001..23d9e914 100644 --- a/client/src/cli.rs +++ b/client/src/cli.rs @@ -193,6 +193,9 @@ pub enum CliCommands { #[arg(short = 'r', long)] remove: bool, + + #[arg(long)] + story: bool, }, SendReceipt { recipient: String, diff --git a/client/src/jsonrpc.rs b/client/src/jsonrpc.rs index 3c8abbbd..5881a1ac 100644 --- a/client/src/jsonrpc.rs +++ b/client/src/jsonrpc.rs @@ -155,6 +155,7 @@ pub trait Rpc { #[allow(non_snake_case)] targetAuthor: String, #[allow(non_snake_case)] targetTimestamp: u64, remove: bool, + story: bool, ) -> Result; #[rpc(name = "sendReceipt", params = "named")] diff --git a/client/src/main.rs b/client/src/main.rs index 50a0f4cb..29512953 100644 --- a/client/src/main.rs +++ b/client/src/main.rs @@ -164,6 +164,7 @@ async fn main() -> Result<(), anyhow::Error> { target_author, target_timestamp, remove, + story, } => { client .send_reaction( @@ -175,6 +176,7 @@ async fn main() -> Result<(), anyhow::Error> { target_author, target_timestamp, remove, + story, ) .await } diff --git a/lib/src/main/java/org/asamk/signal/manager/Manager.java b/lib/src/main/java/org/asamk/signal/manager/Manager.java index 007a783e..3dcf8f59 100644 --- a/lib/src/main/java/org/asamk/signal/manager/Manager.java +++ b/lib/src/main/java/org/asamk/signal/manager/Manager.java @@ -136,7 +136,8 @@ public interface Manager extends Closeable { boolean remove, RecipientIdentifier.Single targetAuthor, long targetSentTimestamp, - Set recipients + Set recipients, + final boolean isStory ) throws IOException, NotAGroupMemberException, GroupNotFoundException, GroupSendingNotAllowedException, UnregisteredRecipientException; SendMessageResults sendPaymentNotificationMessage( diff --git a/lib/src/main/java/org/asamk/signal/manager/ManagerImpl.java b/lib/src/main/java/org/asamk/signal/manager/ManagerImpl.java index 58863d08..95aba4c4 100644 --- a/lib/src/main/java/org/asamk/signal/manager/ManagerImpl.java +++ b/lib/src/main/java/org/asamk/signal/manager/ManagerImpl.java @@ -667,14 +667,19 @@ class ManagerImpl implements Manager { boolean remove, RecipientIdentifier.Single targetAuthor, long targetSentTimestamp, - Set recipients + Set recipients, + final boolean isStory ) throws IOException, NotAGroupMemberException, GroupNotFoundException, GroupSendingNotAllowedException, UnregisteredRecipientException { var targetAuthorRecipientId = context.getRecipientHelper().resolveRecipient(targetAuthor); - var reaction = new SignalServiceDataMessage.Reaction(emoji, - remove, - context.getRecipientHelper().resolveSignalServiceAddress(targetAuthorRecipientId).getServiceId(), - targetSentTimestamp); + final var authorServiceId = context.getRecipientHelper() + .resolveSignalServiceAddress(targetAuthorRecipientId) + .getServiceId(); + var reaction = new SignalServiceDataMessage.Reaction(emoji, remove, authorServiceId, targetSentTimestamp); final var messageBuilder = SignalServiceDataMessage.newBuilder().withReaction(reaction); + if (isStory) { + messageBuilder.withStoryContext(new SignalServiceDataMessage.StoryContext(authorServiceId, + targetSentTimestamp)); + } return sendMessage(messageBuilder, recipients); } diff --git a/man/signal-cli.1.adoc b/man/signal-cli.1.adoc index 90b2c97d..4509f08f 100644 --- a/man/signal-cli.1.adoc +++ b/man/signal-cli.1.adoc @@ -313,6 +313,9 @@ Specify the timestamp of the message to which to react. *-r*, *--remove*:: Remove a reaction. +*--story*:: +React to a story instead of a normal message + === sendReceipt Send a read or viewed receipt to a previously received message. diff --git a/src/main/java/org/asamk/signal/commands/SendReactionCommand.java b/src/main/java/org/asamk/signal/commands/SendReactionCommand.java index f5b6a89d..a844fabf 100644 --- a/src/main/java/org/asamk/signal/commands/SendReactionCommand.java +++ b/src/main/java/org/asamk/signal/commands/SendReactionCommand.java @@ -45,6 +45,9 @@ public class SendReactionCommand implements JsonRpcLocalCommand { .type(long.class) .help("Specify the timestamp of the message to which to react."); subparser.addArgument("-r", "--remove").help("Remove a reaction.").action(Arguments.storeTrue()); + subparser.addArgument("--story") + .help("React to a story instead of a normal message") + .action(Arguments.storeTrue()); } @Override @@ -64,13 +67,15 @@ public class SendReactionCommand implements JsonRpcLocalCommand { final var isRemove = Boolean.TRUE.equals(ns.getBoolean("remove")); final var targetAuthor = ns.getString("target-author"); final var targetTimestamp = ns.getLong("target-timestamp"); + final var isStory = Boolean.TRUE.equals(ns.getBoolean("story")); try { final var results = m.sendMessageReaction(emoji, isRemove, CommandUtil.getSingleRecipientIdentifier(targetAuthor, m.getSelfNumber()), targetTimestamp, - recipientIdentifiers); + recipientIdentifiers, + isStory); outputResult(outputWriter, results); } catch (GroupNotFoundException | NotAGroupMemberException | GroupSendingNotAllowedException e) { throw new UserErrorException(e.getMessage()); diff --git a/src/main/java/org/asamk/signal/dbus/DbusManagerImpl.java b/src/main/java/org/asamk/signal/dbus/DbusManagerImpl.java index bbfa4f1c..8e92cdf4 100644 --- a/src/main/java/org/asamk/signal/dbus/DbusManagerImpl.java +++ b/src/main/java/org/asamk/signal/dbus/DbusManagerImpl.java @@ -364,7 +364,8 @@ public class DbusManagerImpl implements Manager { final boolean remove, final RecipientIdentifier.Single targetAuthor, final long targetSentTimestamp, - final Set recipients + final Set recipients, + final boolean isStory ) throws IOException, NotAGroupMemberException, GroupNotFoundException, GroupSendingNotAllowedException { return handleMessage(recipients, numbers -> signal.sendMessageReaction(emoji, diff --git a/src/main/java/org/asamk/signal/dbus/DbusSignalImpl.java b/src/main/java/org/asamk/signal/dbus/DbusSignalImpl.java index 92e92157..c19daadf 100644 --- a/src/main/java/org/asamk/signal/dbus/DbusSignalImpl.java +++ b/src/main/java/org/asamk/signal/dbus/DbusSignalImpl.java @@ -287,7 +287,8 @@ public class DbusSignalImpl implements Signal { targetSentTimestamp, getSingleRecipientIdentifiers(recipients, m.getSelfNumber()).stream() .map(RecipientIdentifier.class::cast) - .collect(Collectors.toSet())); + .collect(Collectors.toSet()), + false); checkSendMessageResults(results); return results.timestamp(); } catch (IOException e) { @@ -485,7 +486,8 @@ public class DbusSignalImpl implements Signal { remove, getSingleRecipientIdentifier(targetAuthor, m.getSelfNumber()), targetSentTimestamp, - Set.of(getGroupRecipientIdentifier(groupId))); + Set.of(getGroupRecipientIdentifier(groupId)), + false); checkSendMessageResults(results); return results.timestamp(); } catch (IOException e) {