mirror of
https://github.com/AsamK/signal-cli
synced 2025-09-02 12:30:39 +00:00
Fixed issues and added mentions in quotes
This commit is contained in:
parent
7eb0487719
commit
ee2848db23
7 changed files with 68 additions and 34 deletions
|
@ -447,8 +447,14 @@ public class ReceiveMessageHandler implements Manager.ReceiveMessageHandler {
|
||||||
if (message.getQuote().isPresent()) {
|
if (message.getQuote().isPresent()) {
|
||||||
SignalServiceDataMessage.Quote quote = message.getQuote().get();
|
SignalServiceDataMessage.Quote quote = message.getQuote().get();
|
||||||
System.out.println("Quote: (" + quote.getId() + ")");
|
System.out.println("Quote: (" + quote.getId() + ")");
|
||||||
System.out.println(" Author: " + quote.getAuthor().getLegacyIdentifier());
|
System.out.println(" Author: " + m.resolveSignalServiceAddress(quote.getAuthor()).getLegacyIdentifier());
|
||||||
System.out.println(" Text: " + quote.getText());
|
System.out.println(" Text: " + quote.getText());
|
||||||
|
if (quote.getMentions().size() > 0) {
|
||||||
|
System.out.println(" Mentions: ");
|
||||||
|
for (SignalServiceDataMessage.Mention mention : quote.getMentions()) {
|
||||||
|
printMention(mention, m);
|
||||||
|
}
|
||||||
|
}
|
||||||
if (quote.getAttachments().size() > 0) {
|
if (quote.getAttachments().size() > 0) {
|
||||||
System.out.println(" Attachments: ");
|
System.out.println(" Attachments: ");
|
||||||
for (SignalServiceDataMessage.Quote.QuotedAttachment attachment : quote.getAttachments()) {
|
for (SignalServiceDataMessage.Quote.QuotedAttachment attachment : quote.getAttachments()) {
|
||||||
|
@ -467,16 +473,9 @@ public class ReceiveMessageHandler implements Manager.ReceiveMessageHandler {
|
||||||
System.out.println("Remote delete message: timestamp = " + remoteDelete.getTargetSentTimestamp());
|
System.out.println("Remote delete message: timestamp = " + remoteDelete.getTargetSentTimestamp());
|
||||||
}
|
}
|
||||||
if (message.getMentions().isPresent()) {
|
if (message.getMentions().isPresent()) {
|
||||||
final List<SignalServiceDataMessage.Mention> mentions = message.getMentions().get();
|
|
||||||
System.out.println("Mentions: ");
|
System.out.println("Mentions: ");
|
||||||
for (SignalServiceDataMessage.Mention mention : mentions) {
|
for (SignalServiceDataMessage.Mention mention : message.getMentions().get()) {
|
||||||
System.out.println("- "
|
printMention(mention, m);
|
||||||
+ mention.getUuid()
|
|
||||||
+ ": "
|
|
||||||
+ mention.getStart()
|
|
||||||
+ " (length: "
|
|
||||||
+ mention.getLength()
|
|
||||||
+ ")");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -488,6 +487,18 @@ public class ReceiveMessageHandler implements Manager.ReceiveMessageHandler {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void printMention(SignalServiceDataMessage.Mention mention, Manager m) {
|
||||||
|
System.out.println("- "
|
||||||
|
+ m.resolveSignalServiceAddress(
|
||||||
|
new SignalServiceAddress(mention.getUuid(), null)
|
||||||
|
).getLegacyIdentifier()
|
||||||
|
+ ": "
|
||||||
|
+ mention.getStart()
|
||||||
|
+ " (length: "
|
||||||
|
+ mention.getLength()
|
||||||
|
+ ")");
|
||||||
|
}
|
||||||
|
|
||||||
private void printAttachment(SignalServiceAttachment attachment) {
|
private void printAttachment(SignalServiceAttachment attachment) {
|
||||||
System.out.println("- " + attachment.getContentType() + " (" + (attachment.isPointer() ? "Pointer" : "") + (
|
System.out.println("- " + attachment.getContentType() + " (" + (attachment.isPointer() ? "Pointer" : "") + (
|
||||||
attachment.isStream() ? "Stream" : ""
|
attachment.isStream() ? "Stream" : ""
|
||||||
|
|
|
@ -42,12 +42,12 @@ class JsonDataMessage {
|
||||||
this.reaction = new JsonReaction(dataMessage.getReaction().get(), m);
|
this.reaction = new JsonReaction(dataMessage.getReaction().get(), m);
|
||||||
}
|
}
|
||||||
if (dataMessage.getQuote().isPresent()) {
|
if (dataMessage.getQuote().isPresent()) {
|
||||||
this.quote = new JsonQuote(dataMessage.getQuote().get());
|
this.quote = new JsonQuote(dataMessage.getQuote().get(), m);
|
||||||
}
|
}
|
||||||
if (dataMessage.getMentions().isPresent()) {
|
if (dataMessage.getMentions().isPresent()) {
|
||||||
this.mentions = new ArrayList<>(dataMessage.getMentions().get().size());
|
this.mentions = new ArrayList<>(dataMessage.getMentions().get().size());
|
||||||
for (SignalServiceDataMessage.Mention mention : dataMessage.getMentions().get()) {
|
for (SignalServiceDataMessage.Mention mention : dataMessage.getMentions().get()) {
|
||||||
this.mentions.add(new JsonMention(mention));
|
this.mentions.add(new JsonMention(mention, m));
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
this.mentions = new ArrayList<>();
|
this.mentions = new ArrayList<>();
|
||||||
|
|
|
@ -32,7 +32,6 @@ class JsonGroupInfo {
|
||||||
|
|
||||||
JsonGroupInfo(SignalServiceGroupV2 groupInfo) {
|
JsonGroupInfo(SignalServiceGroupV2 groupInfo) {
|
||||||
this.groupId = Base64.encodeBytes(GroupUtils.getGroupId(groupInfo.getMasterKey()));
|
this.groupId = Base64.encodeBytes(GroupUtils.getGroupId(groupInfo.getMasterKey()));
|
||||||
// TODO populate members and name fields
|
|
||||||
this.type = groupInfo.hasSignedGroupChange() ? "UPDATE" : "DELIVER";
|
this.type = groupInfo.hasSignedGroupChange() ? "UPDATE" : "DELIVER";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,18 +1,22 @@
|
||||||
package org.asamk.signal.json;
|
package org.asamk.signal.json;
|
||||||
|
|
||||||
import java.util.UUID;
|
import org.asamk.signal.manager.Manager;
|
||||||
import org.whispersystems.signalservice.api.messages.SignalServiceDataMessage;
|
import org.whispersystems.signalservice.api.messages.SignalServiceDataMessage;
|
||||||
|
import org.whispersystems.signalservice.api.push.SignalServiceAddress;
|
||||||
|
|
||||||
public class JsonMention {
|
public class JsonMention {
|
||||||
|
|
||||||
UUID uuid;
|
String name;
|
||||||
int start;
|
int start;
|
||||||
int length;
|
int length;
|
||||||
|
|
||||||
JsonMention(SignalServiceDataMessage.Mention mention) {
|
JsonMention(SignalServiceDataMessage.Mention mention, Manager m) {
|
||||||
this.uuid = mention.getUuid();
|
this.name = m.resolveSignalServiceAddress(
|
||||||
|
new SignalServiceAddress(mention.getUuid(), null)
|
||||||
|
).getLegacyIdentifier();
|
||||||
this.start = mention.getStart();
|
this.start = mention.getStart();
|
||||||
this.length = mention.getLength();
|
this.length = mention.getLength();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,9 +19,7 @@ public class JsonMessageEnvelope {
|
||||||
JsonCallMessage callMessage;
|
JsonCallMessage callMessage;
|
||||||
JsonReceiptMessage receiptMessage;
|
JsonReceiptMessage receiptMessage;
|
||||||
|
|
||||||
public JsonMessageEnvelope(
|
public JsonMessageEnvelope(SignalServiceEnvelope envelope, SignalServiceContent content, Manager m) {
|
||||||
SignalServiceEnvelope envelope, SignalServiceContent content, Manager m
|
|
||||||
) {
|
|
||||||
if (!envelope.isUnidentifiedSender() && envelope.hasSource()) {
|
if (!envelope.isUnidentifiedSender() && envelope.hasSource()) {
|
||||||
SignalServiceAddress source = envelope.getSourceAddress();
|
SignalServiceAddress source = envelope.getSourceAddress();
|
||||||
this.source = source.getLegacyIdentifier();
|
this.source = source.getLegacyIdentifier();
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
package org.asamk.signal.json;
|
package org.asamk.signal.json;
|
||||||
|
|
||||||
import org.whispersystems.signalservice.api.messages.SignalServiceAttachmentPointer;
|
import org.asamk.signal.manager.Manager;
|
||||||
import org.whispersystems.signalservice.api.messages.SignalServiceDataMessage;
|
import org.whispersystems.signalservice.api.messages.SignalServiceDataMessage;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
@ -11,27 +11,28 @@ public class JsonQuote {
|
||||||
long id;
|
long id;
|
||||||
String author;
|
String author;
|
||||||
String text;
|
String text;
|
||||||
List<JsonAttachment> attachments;
|
|
||||||
|
|
||||||
JsonQuote(SignalServiceDataMessage.Quote quote) {
|
List<JsonMention> mentions;
|
||||||
|
List<JsonQuotedAttachment> attachments;
|
||||||
|
|
||||||
|
JsonQuote(SignalServiceDataMessage.Quote quote, Manager m) {
|
||||||
this.id = quote.getId();
|
this.id = quote.getId();
|
||||||
this.author = quote.getAuthor().getLegacyIdentifier();
|
this.author = m.resolveSignalServiceAddress(quote.getAuthor()).getLegacyIdentifier();
|
||||||
this.text = quote.getText();
|
this.text = quote.getText();
|
||||||
|
|
||||||
|
if (quote.getMentions().size() > 0) {
|
||||||
|
this.mentions = new ArrayList<>(quote.getMentions().size());
|
||||||
|
|
||||||
|
for (SignalServiceDataMessage.Mention quotedMention: quote.getMentions()){
|
||||||
|
this.mentions.add(new JsonMention(quotedMention, m));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (quote.getAttachments().size() > 0) {
|
if (quote.getAttachments().size() > 0) {
|
||||||
this.attachments = new ArrayList<>(quote.getAttachments().size());
|
this.attachments = new ArrayList<>(quote.getAttachments().size());
|
||||||
|
|
||||||
SignalServiceAttachmentPointer attachmentPointer;
|
|
||||||
for (SignalServiceDataMessage.Quote.QuotedAttachment quotedAttachment : quote.getAttachments()) {
|
for (SignalServiceDataMessage.Quote.QuotedAttachment quotedAttachment : quote.getAttachments()) {
|
||||||
JsonAttachment recentAttachment = new JsonAttachment(quotedAttachment.getThumbnail());
|
this.attachments.add(new JsonQuotedAttachment(quotedAttachment));
|
||||||
|
|
||||||
// Its possible the name might be missing, if it is then we'll use the other one
|
|
||||||
attachmentPointer = quotedAttachment.getThumbnail().asPointer();
|
|
||||||
if (!attachmentPointer.getFileName().isPresent()) {
|
|
||||||
recentAttachment.filename = quotedAttachment.getFileName();
|
|
||||||
}
|
|
||||||
|
|
||||||
this.attachments.add(recentAttachment);
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
this.attachments = new ArrayList<>();
|
this.attachments = new ArrayList<>();
|
||||||
|
|
|
@ -0,0 +1,21 @@
|
||||||
|
package org.asamk.signal.json;
|
||||||
|
|
||||||
|
import org.whispersystems.signalservice.api.messages.SignalServiceDataMessage;
|
||||||
|
|
||||||
|
public class JsonQuotedAttachment {
|
||||||
|
|
||||||
|
String contextType;
|
||||||
|
String filename;
|
||||||
|
JsonAttachment thumbnail;
|
||||||
|
|
||||||
|
JsonQuotedAttachment(SignalServiceDataMessage.Quote.QuotedAttachment quotedAttachment) {
|
||||||
|
contextType = quotedAttachment.getContentType();
|
||||||
|
filename = quotedAttachment.getFileName();
|
||||||
|
if (quotedAttachment.getThumbnail() != null) {
|
||||||
|
thumbnail = new JsonAttachment(quotedAttachment.getThumbnail());
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
thumbnail = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Add table
Add a link
Reference in a new issue