mirror of
https://github.com/signalapp/Signal-Android.git
synced 2025-12-23 04:28:35 +00:00
Fix edit message when editing message sent to self.
This commit is contained in:
@@ -42,6 +42,7 @@ import org.whispersystems.signalservice.api.crypto.UntrustedIdentityException;
|
||||
import org.whispersystems.signalservice.api.messages.SendMessageResult;
|
||||
import org.whispersystems.signalservice.api.messages.SignalServiceAttachment;
|
||||
import org.whispersystems.signalservice.api.messages.SignalServiceDataMessage;
|
||||
import org.whispersystems.signalservice.api.messages.SignalServiceEditMessage;
|
||||
import org.whispersystems.signalservice.api.messages.SignalServicePreview;
|
||||
import org.whispersystems.signalservice.api.messages.shared.SharedContact;
|
||||
import org.whispersystems.signalservice.api.push.SignalServiceAddress;
|
||||
@@ -288,10 +289,18 @@ public class IndividualSendJob extends PushSendJob {
|
||||
SignalServiceDataMessage mediaMessage = mediaMessageBuilder.build();
|
||||
|
||||
if (originalEditedMessage != null) {
|
||||
SendMessageResult result = messageSender.sendEditMessage(address, UnidentifiedAccessUtil.getAccessFor(context, messageRecipient), ContentHint.RESENDABLE, mediaMessage, IndividualSendEvents.EMPTY, message.isUrgent(), originalEditedMessage.getDateSent());
|
||||
SignalDatabase.messageLog().insertIfPossible(messageRecipient.getId(), message.getSentTimeMillis(), result, ContentHint.RESENDABLE, new MessageId(messageId), false);
|
||||
if (Util.equals(SignalStore.account().getAci(), address.getServiceId())) {
|
||||
Optional<UnidentifiedAccessPair> syncAccess = UnidentifiedAccessUtil.getAccessForSync(context);
|
||||
SendMessageResult result = messageSender.sendSelfSyncEditMessage(new SignalServiceEditMessage(originalEditedMessage.getDateSent(), mediaMessage));
|
||||
SignalDatabase.messageLog().insertIfPossible(messageRecipient.getId(), message.getSentTimeMillis(), result, ContentHint.RESENDABLE, new MessageId(messageId), false);
|
||||
|
||||
return result.getSuccess().isUnidentified();
|
||||
return syncAccess.isPresent();
|
||||
} else {
|
||||
SendMessageResult result = messageSender.sendEditMessage(address, UnidentifiedAccessUtil.getAccessFor(context, messageRecipient), ContentHint.RESENDABLE, mediaMessage, IndividualSendEvents.EMPTY, message.isUrgent(), originalEditedMessage.getDateSent());
|
||||
SignalDatabase.messageLog().insertIfPossible(messageRecipient.getId(), message.getSentTimeMillis(), result, ContentHint.RESENDABLE, new MessageId(messageId), false);
|
||||
|
||||
return result.getSuccess().isUnidentified();
|
||||
}
|
||||
} else if (Util.equals(SignalStore.account().getAci(), address.getServiceId())) {
|
||||
Optional<UnidentifiedAccessPair> syncAccess = UnidentifiedAccessUtil.getAccessForSync(context);
|
||||
SendMessageResult result = messageSender.sendSyncMessage(mediaMessage);
|
||||
|
||||
@@ -81,7 +81,8 @@ class MultiDeviceStorySendSyncJob private constructor(parameters: Parameters, pr
|
||||
emptyMap(),
|
||||
true,
|
||||
Optional.empty(),
|
||||
recipientsSet
|
||||
recipientsSet,
|
||||
Optional.empty()
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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()) {
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user