Fix wrong sync message issue for pending outgoing messages am: bccecb6393

Original change: https://android-review.googlesource.com/c/platform/packages/apps/Messaging/+/1547734

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: Id836b2cb21964189880a56c4747b1903907631b6
This commit is contained in:
Taesu Lee
2021-01-12 20:46:50 +00:00
committed by Automerger Merge Worker
2 changed files with 13 additions and 6 deletions
@@ -80,8 +80,6 @@ public class ResendMessageAction extends Action implements Parcelable {
final ContentValues values = new ContentValues(); final ContentValues values = new ContentValues();
values.put(MessageColumns.STATUS, MessageData.BUGLE_STATUS_OUTGOING_YET_TO_SEND); values.put(MessageColumns.STATUS, MessageData.BUGLE_STATUS_OUTGOING_YET_TO_SEND);
values.put(MessageColumns.RECEIVED_TIMESTAMP, timestamp);
values.put(MessageColumns.SENT_TIMESTAMP, timestamp);
values.put(MessageColumns.RETRY_START_TIMESTAMP, timestamp); values.put(MessageColumns.RETRY_START_TIMESTAMP, timestamp);
// Row must exist as was just loaded above (on ActionService thread) // Row must exist as was just loaded above (on ActionService thread)
@@ -95,13 +95,17 @@ public class SendMessageAction extends Action implements Parcelable {
private boolean queueAction(final String messageId, final Action processingAction) { private boolean queueAction(final String messageId, final Action processingAction) {
actionParameters.putString(KEY_MESSAGE_ID, messageId); actionParameters.putString(KEY_MESSAGE_ID, messageId);
final long timestamp = System.currentTimeMillis();
final DatabaseWrapper db = DataModel.get().getDatabase(); final DatabaseWrapper db = DataModel.get().getDatabase();
final MessageData message = BugleDatabaseOperations.readMessage(db, messageId); final MessageData message = BugleDatabaseOperations.readMessage(db, messageId);
// Check message can be resent // Check message can be resent
if (message != null && message.canSendMessage()) { if (message != null && message.canSendMessage()) {
final boolean isSms = (message.getProtocol() == MessageData.PROTOCOL_SMS); final boolean isSms = message.getIsSms();
long timestamp = System.currentTimeMillis();
if (!isSms) {
// MMS expects timestamp rounded to nearest second
timestamp = 1000 * ((timestamp + 500) / 1000);
}
final ParticipantData self = BugleDatabaseOperations.getExistingParticipant( final ParticipantData self = BugleDatabaseOperations.getExistingParticipant(
db, message.getSelfId()); db, message.getSelfId());
@@ -110,8 +114,13 @@ public class SendMessageAction extends Action implements Parcelable {
// Update message status // Update message status
if (message.getYetToSend()) { if (message.getYetToSend()) {
// Initial sending of message if (message.getReceivedTimeStamp() == message.getRetryStartTimestamp()) {
message.markMessageSending(timestamp); // Initial sending of message
message.markMessageSending(timestamp);
} else {
// Manual resend of message
message.markMessageManualResend(timestamp);
}
} else { } else {
// Automatic resend of message // Automatic resend of message
message.markMessageResending(timestamp); message.markMessageResending(timestamp);