Fix edit message when editing message sent to self.

This commit is contained in:
Clark
2023-04-24 11:19:07 -04:00
committed by GitHub
parent a11c34d1f6
commit 9cb8fc8ef5
5 changed files with 51 additions and 8 deletions

View File

@@ -644,6 +644,12 @@ public class SignalServiceMessageSender {
return sendSyncMessage(createSelfSendSyncMessage(dataMessage), Optional.empty());
}
public SendMessageResult sendSelfSyncEditMessage(SignalServiceEditMessage editMessage)
throws IOException, UntrustedIdentityException
{
return sendSyncMessage(createSelfSendSyncEditMessage(editMessage), Optional.empty());
}
public SendMessageResult sendSyncMessage(SignalServiceSyncMessage message, Optional<UnidentifiedAccessPair> unidentifiedAccess)
throws IOException, UntrustedIdentityException
{
@@ -958,6 +964,8 @@ public class SignalServiceMessageSender {
return createStoryContent(transcriptMessage.getStoryMessage().get());
} else if (transcriptMessage.getDataMessage().isPresent()) {
return createMessageContent(transcriptMessage.getDataMessage().get());
} else if (transcriptMessage.getEditMessage().isPresent()) {
return createEditMessageContent(transcriptMessage.getEditMessage().get());
} else {
return null;
}
@@ -1790,7 +1798,8 @@ public class SignalServiceMessageSender {
Collections.singletonMap(localAddress.getServiceId(), false),
isRecipientUpdate,
Optional.of(message),
manifest);
manifest,
Optional.empty());
return SignalServiceSyncMessage.forSentTranscript(transcript);
}
@@ -1803,7 +1812,21 @@ public class SignalServiceMessageSender {
Collections.singletonMap(localAddress.getServiceId(), false),
false,
Optional.empty(),
Collections.emptySet());
Collections.emptySet(),
Optional.empty());
return SignalServiceSyncMessage.forSentTranscript(transcript);
}
private SignalServiceSyncMessage createSelfSendSyncEditMessage(SignalServiceEditMessage message) {
SentTranscriptMessage transcript = new SentTranscriptMessage(Optional.of(localAddress),
message.getDataMessage().getTimestamp(),
Optional.empty(),
message.getDataMessage().getExpiresInSeconds(),
Collections.singletonMap(localAddress.getServiceId(), false),
false,
Optional.empty(),
Collections.emptySet(),
Optional.of(message));
return SignalServiceSyncMessage.forSentTranscript(transcript);
}

View File

@@ -825,6 +825,7 @@ public final class SignalServiceContent {
SignalServiceProtos.SyncMessage.Sent sentContent = content.getSent();
Optional<SignalServiceDataMessage> dataMessage = sentContent.hasMessage() ? Optional.of(createSignalServiceDataMessage(metadata, sentContent.getMessage())) : Optional.empty();
Optional<SignalServiceStoryMessage> storyMessage = sentContent.hasStoryMessage() ? Optional.of(createStoryMessage(sentContent.getStoryMessage())) : Optional.empty();
Optional<SignalServiceEditMessage> editMessage = sentContent.hasEditMessage() ? Optional.of(createEditMessage(metadata, sentContent.getEditMessage())) : Optional.empty();
Optional<SignalServiceAddress> address = SignalServiceAddress.isValidAddress(sentContent.getDestinationUuid())
? Optional.of(new SignalServiceAddress(ServiceId.parseOrThrow(sentContent.getDestinationUuid()), sentContent.getDestinationE164()))
: Optional.empty();
@@ -856,7 +857,8 @@ public final class SignalServiceContent {
unidentifiedStatuses,
sentContent.getIsRecipientUpdate(),
storyMessage,
recipientManifest));
recipientManifest,
editMessage));
}
if (content.hasRequest()) {

View File

@@ -8,6 +8,7 @@ package org.whispersystems.signalservice.api.messages.multidevice;
import org.whispersystems.signalservice.api.messages.SignalServiceDataMessage;
import org.whispersystems.signalservice.api.messages.SignalServiceEditMessage;
import org.whispersystems.signalservice.api.messages.SignalServiceStoryMessage;
import org.whispersystems.signalservice.api.messages.SignalServiceStoryMessageRecipient;
import org.whispersystems.signalservice.api.push.ServiceId;
@@ -29,6 +30,7 @@ public class SentTranscriptMessage {
private final boolean isRecipientUpdate;
private final Optional<SignalServiceStoryMessage> storyMessage;
private final Set<SignalServiceStoryMessageRecipient> storyMessageRecipients;
private final Optional<SignalServiceEditMessage> editMessage;
public SentTranscriptMessage(Optional<SignalServiceAddress> destination,
long timestamp,
@@ -37,7 +39,8 @@ public class SentTranscriptMessage {
Map<ServiceId, Boolean> unidentifiedStatus,
boolean isRecipientUpdate,
Optional<SignalServiceStoryMessage> storyMessage,
Set<SignalServiceStoryMessageRecipient> storyMessageRecipients)
Set<SignalServiceStoryMessageRecipient> storyMessageRecipients,
Optional<SignalServiceEditMessage> editMessage)
{
this.destination = destination;
this.timestamp = timestamp;
@@ -48,6 +51,7 @@ public class SentTranscriptMessage {
this.isRecipientUpdate = isRecipientUpdate;
this.storyMessage = storyMessage;
this.storyMessageRecipients = storyMessageRecipients;
this.editMessage = editMessage;
}
public Optional<SignalServiceAddress> getDestination() {
@@ -66,6 +70,10 @@ public class SentTranscriptMessage {
return message;
}
public Optional<SignalServiceEditMessage> getEditMessage() {
return editMessage;
}
public Optional<SignalServiceStoryMessage> getStoryMessage() {
return storyMessage;
}