1
0
mirror of https://github.com/moparisthebest/k-9 synced 2024-08-13 17:03:48 -04:00

Better cope with messages having identical message IDs

This commit is contained in:
cketti 2013-04-17 02:09:43 +02:00
parent d29825fe57
commit 4890cd9ea0

View File

@ -2358,17 +2358,19 @@ public class LocalStore extends Store implements Serializable {
}
}
private ThreadInfo getThreadInfo(SQLiteDatabase db, String messageId) {
private ThreadInfo getThreadInfo(SQLiteDatabase db, String messageId, boolean onlyEmpty) {
String sql = "SELECT t.id, t.message_id, t.root, t.parent " +
"FROM messages m " +
"LEFT JOIN threads t ON (t.message_id = m.id) " +
"WHERE m.folder_id = ? AND m.message_id = ?";
"WHERE m.folder_id = ? AND m.message_id = ? " +
((onlyEmpty) ? "AND m.empty = 1 " : "") +
"ORDER BY m.id LIMIT 1";
String[] selectionArgs = { Long.toString(mFolderId), messageId };
Cursor cursor = db.rawQuery(sql, selectionArgs);
if (cursor != null) {
try {
if (cursor.getCount() == 1) {
if (cursor.getCount() > 0) {
cursor.moveToFirst();
long threadId = cursor.getLong(0);
long msgId = cursor.getLong(1);
@ -3200,7 +3202,7 @@ public class LocalStore extends Store implements Serializable {
String messageId = message.getMessageId();
// If there's already an empty message in the database, update that
ThreadInfo msgThreadInfo = getThreadInfo(db, messageId);
ThreadInfo msgThreadInfo = getThreadInfo(db, messageId, true);
// Get the message IDs from the "References" header line
String[] referencesArray = message.getHeader("References");
@ -3231,7 +3233,7 @@ public class LocalStore extends Store implements Serializable {
}
for (String reference : messageIds) {
ThreadInfo threadInfo = getThreadInfo(db, reference);
ThreadInfo threadInfo = getThreadInfo(db, reference, false);
if (threadInfo == null) {
// Create placeholder message in 'messages' table