|
|
|
@ -456,7 +456,7 @@ public class SmsDatabase extends MessagingDatabase {
|
|
|
|
|
contentValues.put(THREAD_ID, threadId);
|
|
|
|
|
contentValues.put(BODY, message.getMessageBody());
|
|
|
|
|
contentValues.put(DATE_RECEIVED, System.currentTimeMillis());
|
|
|
|
|
contentValues.put(DATE_SENT, date);
|
|
|
|
|
contentValues.put(DATE_SENT, message.getSentTimestampMillis());
|
|
|
|
|
contentValues.put(READ, 1);
|
|
|
|
|
contentValues.put(TYPE, type);
|
|
|
|
|
contentValues.put(SUBSCRIPTION_ID, message.getSubscriptionId());
|
|
|
|
@ -464,6 +464,11 @@ public class SmsDatabase extends MessagingDatabase {
|
|
|
|
|
contentValues.put(DELIVERY_RECEIPT_COUNT, Stream.of(earlyDeliveryReceipts.values()).mapToLong(Long::longValue).sum());
|
|
|
|
|
contentValues.put(READ_RECEIPT_COUNT, Stream.of(earlyReadReceipts.values()).mapToLong(Long::longValue).sum());
|
|
|
|
|
|
|
|
|
|
if (isDuplicate(message, threadId)) {
|
|
|
|
|
Log.w(TAG, "Duplicate message (" + message.getSentTimestampMillis() + "), ignoring...");
|
|
|
|
|
return -1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
SQLiteDatabase db = databaseHelper.getWritableDatabase();
|
|
|
|
|
long messageId = db.insert(TABLE_NAME, ADDRESS, contentValues);
|
|
|
|
|
if (insertListener != null) {
|
|
|
|
@ -530,6 +535,19 @@ public class SmsDatabase extends MessagingDatabase {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private boolean isDuplicate(OutgoingTextMessage message, long threadId) {
|
|
|
|
|
SQLiteDatabase database = databaseHelper.getReadableDatabase();
|
|
|
|
|
Cursor cursor = database.query(TABLE_NAME, null, DATE_SENT + " = ? AND " + ADDRESS + " = ? AND " + THREAD_ID + " = ?",
|
|
|
|
|
new String[]{String.valueOf(message.getSentTimestampMillis()), message.getRecipient().getAddress().serialize(), String.valueOf(threadId)},
|
|
|
|
|
null, null, null, "1");
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
return cursor != null && cursor.moveToFirst();
|
|
|
|
|
} finally {
|
|
|
|
|
if (cursor != null) cursor.close();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*package */void deleteThread(long threadId) {
|
|
|
|
|
SQLiteDatabase db = databaseHelper.getWritableDatabase();
|
|
|
|
|
db.delete(TABLE_NAME, THREAD_ID + " = ?", new String[] {threadId+""});
|
|
|
|
|