Fixed issues and added mentions in quotes

This commit is contained in:
david-harley 2020-12-23 14:20:53 +10:30
parent 7eb0487719
commit ee2848db23
7 changed files with 68 additions and 34 deletions

View file

@ -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" : ""

View file

@ -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<>();

View file

@ -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";
} }

View file

@ -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();
} }
} }

View file

@ -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();

View file

@ -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<>();

View file

@ -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;
}
}
}