mirror of
https://github.com/signalapp/Signal-Android.git
synced 2025-12-22 20:18:36 +00:00
Fix edit message when sending via legacy path.
This commit is contained in:
@@ -532,9 +532,13 @@ public final class GroupSendUtil {
|
|||||||
return Collections.singletonList(result);
|
return Collections.singletonList(result);
|
||||||
} else {
|
} else {
|
||||||
LegacyGroupEvents listener = relatedMessageId != null ? new LegacyMetricEventListener(relatedMessageId.getId()) : LegacyGroupEvents.EMPTY;
|
LegacyGroupEvents listener = relatedMessageId != null ? new LegacyMetricEventListener(relatedMessageId.getId()) : LegacyGroupEvents.EMPTY;
|
||||||
|
if (editMessage != null) {
|
||||||
|
return messageSender.sendEditMessage(targets, access, isRecipientUpdate, contentHint, message, listener, partialListener, cancelationSignal, urgent, editMessage.getTargetSentTimestamp());
|
||||||
|
} else {
|
||||||
return messageSender.sendDataMessage(targets, access, isRecipientUpdate, contentHint, message, listener, partialListener, cancelationSignal, urgent);
|
return messageSender.sendDataMessage(targets, access, isRecipientUpdate, contentHint, message, listener, partialListener, cancelationSignal, urgent);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public @NonNull ContentHint getContentHint() {
|
public @NonNull ContentHint getContentHint() {
|
||||||
|
|||||||
@@ -639,6 +639,58 @@ public class SignalServiceMessageSender {
|
|||||||
return results;
|
return results;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sends an edit message to a group using client-side fanout.
|
||||||
|
*
|
||||||
|
* @param partialListener A listener that will be called when an individual send is completed. Will be invoked on an arbitrary background thread, *not*
|
||||||
|
* the calling thread.
|
||||||
|
*/
|
||||||
|
public List<SendMessageResult> sendEditMessage(List<SignalServiceAddress> recipients,
|
||||||
|
List<Optional<UnidentifiedAccessPair>> unidentifiedAccess,
|
||||||
|
boolean isRecipientUpdate,
|
||||||
|
ContentHint contentHint,
|
||||||
|
SignalServiceDataMessage message,
|
||||||
|
LegacyGroupEvents sendEvents,
|
||||||
|
PartialSendCompleteListener partialListener,
|
||||||
|
CancelationSignal cancelationSignal,
|
||||||
|
boolean urgent,
|
||||||
|
long targetSentTimestamp)
|
||||||
|
throws IOException, UntrustedIdentityException
|
||||||
|
{
|
||||||
|
Log.d(TAG, "[" + message.getTimestamp() + "] Sending a edit message to " + recipients.size() + " recipients.");
|
||||||
|
|
||||||
|
Content content = createEditMessageContent(new SignalServiceEditMessage(targetSentTimestamp, message));
|
||||||
|
EnvelopeContent envelopeContent = EnvelopeContent.encrypted(content, contentHint, message.getGroupId());
|
||||||
|
long timestamp = message.getTimestamp();
|
||||||
|
List<SendMessageResult> results = sendMessage(recipients, getTargetUnidentifiedAccess(unidentifiedAccess), timestamp, envelopeContent, false, partialListener, cancelationSignal, urgent, false);
|
||||||
|
boolean needsSyncInResults = false;
|
||||||
|
|
||||||
|
sendEvents.onMessageSent();
|
||||||
|
|
||||||
|
for (SendMessageResult result : results) {
|
||||||
|
if (result.getSuccess() != null && result.getSuccess().isNeedsSync()) {
|
||||||
|
needsSyncInResults = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (needsSyncInResults || aciStore.isMultiDevice()) {
|
||||||
|
Optional<SignalServiceAddress> recipient = Optional.empty();
|
||||||
|
if (!message.getGroupContext().isPresent() && recipients.size() == 1) {
|
||||||
|
recipient = Optional.of(recipients.get(0));
|
||||||
|
}
|
||||||
|
|
||||||
|
Content syncMessage = createMultiDeviceSentTranscriptContent(content, recipient, timestamp, results, isRecipientUpdate, Collections.emptySet());
|
||||||
|
EnvelopeContent syncMessageContent = EnvelopeContent.encrypted(syncMessage, ContentHint.IMPLICIT, Optional.empty());
|
||||||
|
|
||||||
|
sendMessage(localAddress, Optional.empty(), timestamp, syncMessageContent, false, null, false, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
sendEvents.onSyncMessageSent();
|
||||||
|
|
||||||
|
return results;
|
||||||
|
}
|
||||||
|
|
||||||
public SendMessageResult sendSyncMessage(SignalServiceDataMessage dataMessage)
|
public SendMessageResult sendSyncMessage(SignalServiceDataMessage dataMessage)
|
||||||
throws IOException, UntrustedIdentityException
|
throws IOException, UntrustedIdentityException
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user