Fix wrong sync message issue for pending outgoing messages
If sync operation is occurred between ResendMessageAction and SendMessageAction, the pending outgoing messages in local db are deleted and new messages are added from remote db. To fix this issue, ResendMessageAction will update RETRY_TIMESTAMP only. And RECEIVED_TIMESTAMP and SENT_TIMESTAMP will be updated in SendMessageAction when the message is queued. Test: manual Change-Id: I0ffa6f46a7094ec3dfd2954d4313b78dd57d6994 Signed-off-by: Taesu Lee <taesu82.lee@samsung.com>
This commit is contained in:
@@ -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()) {
|
||||||
|
if (message.getReceivedTimeStamp() == message.getRetryStartTimestamp()) {
|
||||||
// Initial sending of message
|
// Initial sending of message
|
||||||
message.markMessageSending(timestamp);
|
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);
|
||||||
|
|||||||
Reference in New Issue
Block a user