mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-03-01 14:16:49 +00:00
Update conversation list for scheduled group message.
This commit is contained in:
@@ -72,11 +72,11 @@ public class IndividualSendJob extends PushSendJob {
|
||||
|
||||
public IndividualSendJob(long messageId, @NonNull Recipient recipient, boolean hasMedia, boolean isScheduledSend) {
|
||||
this(new Parameters.Builder()
|
||||
.setQueue(isScheduledSend ? recipient.getId().toScheduledSendQueueKey() : recipient.getId().toQueueKey(hasMedia))
|
||||
.addConstraint(NetworkConstraint.KEY)
|
||||
.setLifespan(TimeUnit.DAYS.toMillis(1))
|
||||
.setMaxAttempts(Parameters.UNLIMITED)
|
||||
.build(),
|
||||
.setQueue(isScheduledSend ? recipient.getId().toScheduledSendQueueKey() : recipient.getId().toQueueKey(hasMedia))
|
||||
.addConstraint(NetworkConstraint.KEY)
|
||||
.setLifespan(TimeUnit.DAYS.toMillis(1))
|
||||
.setMaxAttempts(Parameters.UNLIMITED)
|
||||
.build(),
|
||||
messageId);
|
||||
}
|
||||
|
||||
@@ -141,11 +141,11 @@ public class IndividualSendJob extends PushSendJob {
|
||||
{
|
||||
SignalLocalMetrics.IndividualMessageSend.onJobStarted(messageId);
|
||||
|
||||
ExpiringMessageManager expirationManager = AppDependencies.getExpiringMessageManager();
|
||||
MessageTable database = SignalDatabase.messages();
|
||||
OutgoingMessage message = database.getOutgoingMessage(messageId);
|
||||
long threadId = database.getMessageRecord(messageId).getThreadId();
|
||||
MessageRecord originalEditedMessage = message.getMessageToEdit() > 0 ? SignalDatabase.messages().getMessageRecordOrNull(message.getMessageToEdit()) : null;
|
||||
ExpiringMessageManager expirationManager = AppDependencies.getExpiringMessageManager();
|
||||
MessageTable database = SignalDatabase.messages();
|
||||
OutgoingMessage message = database.getOutgoingMessage(messageId);
|
||||
long threadId = database.getMessageRecord(messageId).getThreadId();
|
||||
MessageRecord originalEditedMessage = message.getMessageToEdit() > 0 ? SignalDatabase.messages().getMessageRecordOrNull(message.getMessageToEdit()) : null;
|
||||
|
||||
if (database.isSent(messageId)) {
|
||||
warn(TAG, String.valueOf(message.getSentTimeMillis()), "Message " + messageId + " was already sent. Ignoring.");
|
||||
@@ -153,7 +153,8 @@ public class IndividualSendJob extends PushSendJob {
|
||||
}
|
||||
|
||||
try {
|
||||
log(TAG, String.valueOf(message.getSentTimeMillis()), "Sending message: " + messageId + ", Recipient: " + message.getThreadRecipient().getId() + ", Thread: " + threadId + ", Attachments: " + buildAttachmentString(message.getAttachments()) + ", Editing: " + (originalEditedMessage != null ? originalEditedMessage.getDateSent() : "N/A"));
|
||||
log(TAG, String.valueOf(message.getSentTimeMillis()), "Sending message: " + messageId + ", Recipient: " + message.getThreadRecipient()
|
||||
.getId() + ", Thread: " + threadId + ", Attachments: " + buildAttachmentString(message.getAttachments()) + ", Editing: " + (originalEditedMessage != null ? originalEditedMessage.getDateSent() : "N/A"));
|
||||
|
||||
RecipientUtil.shareProfileIfFirstSecureMessage(message.getThreadRecipient());
|
||||
|
||||
@@ -259,33 +260,33 @@ public class IndividualSendJob extends PushSendJob {
|
||||
throw new UndeliverableMessageException(messageRecipient.getId() + " not registered!");
|
||||
}
|
||||
|
||||
SignalServiceMessageSender messageSender = AppDependencies.getSignalServiceMessageSender();
|
||||
SignalServiceAddress address = RecipientUtil.toSignalServiceAddress(context, messageRecipient);
|
||||
List<Attachment> attachments = Stream.of(message.getAttachments()).filterNot(Attachment::isSticker).toList();
|
||||
List<SignalServiceAttachment> serviceAttachments = getAttachmentPointersFor(attachments);
|
||||
Optional<byte[]> profileKey = getProfileKey(messageRecipient);
|
||||
Optional<SignalServiceDataMessage.Sticker> sticker = getStickerFor(message);
|
||||
List<SharedContact> sharedContacts = getSharedContactsFor(message);
|
||||
List<SignalServicePreview> previews = getPreviewsFor(message);
|
||||
SignalServiceDataMessage.GiftBadge giftBadge = getGiftBadgeFor(message);
|
||||
SignalServiceDataMessage.Payment payment = getPayment(message);
|
||||
List<BodyRange> bodyRanges = getBodyRanges(message);
|
||||
SignalServiceDataMessage.Builder mediaMessageBuilder = SignalServiceDataMessage.newBuilder()
|
||||
.withBody(message.getBody())
|
||||
.withAttachments(serviceAttachments)
|
||||
.withTimestamp(message.getSentTimeMillis())
|
||||
.withExpiration((int)(message.getExpiresIn() / 1000))
|
||||
.withExpireTimerVersion(message.getExpireTimerVersion())
|
||||
.withViewOnce(message.isViewOnce())
|
||||
.withProfileKey(profileKey.orElse(null))
|
||||
.withSticker(sticker.orElse(null))
|
||||
.withSharedContacts(sharedContacts)
|
||||
.withPreviews(previews)
|
||||
.withGiftBadge(giftBadge)
|
||||
.asExpirationUpdate(message.isExpirationUpdate())
|
||||
.asEndSessionMessage(message.isEndSession())
|
||||
.withPayment(payment)
|
||||
.withBodyRanges(bodyRanges);
|
||||
SignalServiceMessageSender messageSender = AppDependencies.getSignalServiceMessageSender();
|
||||
SignalServiceAddress address = RecipientUtil.toSignalServiceAddress(context, messageRecipient);
|
||||
List<Attachment> attachments = Stream.of(message.getAttachments()).filterNot(Attachment::isSticker).toList();
|
||||
List<SignalServiceAttachment> serviceAttachments = getAttachmentPointersFor(attachments);
|
||||
Optional<byte[]> profileKey = getProfileKey(messageRecipient);
|
||||
Optional<SignalServiceDataMessage.Sticker> sticker = getStickerFor(message);
|
||||
List<SharedContact> sharedContacts = getSharedContactsFor(message);
|
||||
List<SignalServicePreview> previews = getPreviewsFor(message);
|
||||
SignalServiceDataMessage.GiftBadge giftBadge = getGiftBadgeFor(message);
|
||||
SignalServiceDataMessage.Payment payment = getPayment(message);
|
||||
List<BodyRange> bodyRanges = getBodyRanges(message);
|
||||
SignalServiceDataMessage.Builder mediaMessageBuilder = SignalServiceDataMessage.newBuilder()
|
||||
.withBody(message.getBody())
|
||||
.withAttachments(serviceAttachments)
|
||||
.withTimestamp(message.getSentTimeMillis())
|
||||
.withExpiration((int) (message.getExpiresIn() / 1000))
|
||||
.withExpireTimerVersion(message.getExpireTimerVersion())
|
||||
.withViewOnce(message.isViewOnce())
|
||||
.withProfileKey(profileKey.orElse(null))
|
||||
.withSticker(sticker.orElse(null))
|
||||
.withSharedContacts(sharedContacts)
|
||||
.withPreviews(previews)
|
||||
.withGiftBadge(giftBadge)
|
||||
.asExpirationUpdate(message.isExpirationUpdate())
|
||||
.asEndSessionMessage(message.isEndSession())
|
||||
.withPayment(payment)
|
||||
.withBodyRanges(bodyRanges);
|
||||
|
||||
if (message.getParentStoryId() != null) {
|
||||
try {
|
||||
@@ -315,7 +316,7 @@ public class IndividualSendJob extends PushSendJob {
|
||||
|
||||
if (originalEditedMessage != null) {
|
||||
if (Util.equals(SignalStore.account().getAci(), address.getServiceId())) {
|
||||
SendMessageResult result = messageSender.sendSelfSyncEditMessage(new SignalServiceEditMessage(originalEditedMessage.getDateSent(), mediaMessage));
|
||||
SendMessageResult result = messageSender.sendSelfSyncEditMessage(new SignalServiceEditMessage(originalEditedMessage.getDateSent(), mediaMessage));
|
||||
SignalDatabase.messageLog().insertIfPossible(messageRecipient.getId(), message.getSentTimeMillis(), result, ContentHint.RESENDABLE, new MessageId(messageId), false);
|
||||
|
||||
return SealedSenderAccessUtil.getSealedSenderCertificate() != null;
|
||||
@@ -332,7 +333,7 @@ public class IndividualSendJob extends PushSendJob {
|
||||
return result.getSuccess().isUnidentified();
|
||||
}
|
||||
} else if (Util.equals(SignalStore.account().getAci(), address.getServiceId())) {
|
||||
SendMessageResult result = messageSender.sendSyncMessage(mediaMessage);
|
||||
SendMessageResult result = messageSender.sendSyncMessage(mediaMessage);
|
||||
SignalDatabase.messageLog().insertIfPossible(messageRecipient.getId(), message.getSentTimeMillis(), result, ContentHint.RESENDABLE, new MessageId(messageId), false);
|
||||
return SealedSenderAccessUtil.getSealedSenderCertificate() != null;
|
||||
} else {
|
||||
@@ -398,6 +399,7 @@ public class IndividualSendJob extends PushSendJob {
|
||||
JsonJobData data = JsonJobData.deserialize(serializedData);
|
||||
return data.getLong(KEY_MESSAGE_ID);
|
||||
}
|
||||
|
||||
private static class MetricEventListener implements SignalServiceMessageSender.IndividualSendEvents {
|
||||
private final long messageId;
|
||||
|
||||
|
||||
@@ -474,6 +474,9 @@ public final class PushGroupSendJob extends PushSendJob {
|
||||
|
||||
markAttachmentsUploaded(messageId, message);
|
||||
|
||||
// For scheduled messages, which may not have updated the thread with it's snippet yet
|
||||
SignalDatabase.threads().updateSilently(threadId, false);
|
||||
|
||||
if (skippedRecipients.size() > 0) {
|
||||
SignalDatabase.groupReceipts().setSkipped(skippedRecipients, messageId);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user