diff --git a/src/org/thoughtcrime/securesms/database/MessagingDatabase.java b/src/org/thoughtcrime/securesms/database/MessagingDatabase.java index 18c5f293e..fe70ad880 100644 --- a/src/org/thoughtcrime/securesms/database/MessagingDatabase.java +++ b/src/org/thoughtcrime/securesms/database/MessagingDatabase.java @@ -99,8 +99,8 @@ public abstract class MessagingDatabase extends Database implements MmsSmsColumn public void setReactionsSeen(long threadId) { SQLiteDatabase db = databaseHelper.getWritableDatabase(); ContentValues values = new ContentValues(); - String whereClause = THREAD_ID + " = ?"; - String[] whereArgs = new String[]{String.valueOf(threadId)}; + String whereClause = THREAD_ID + " = ? AND " + REACTIONS_UNREAD + " = ?"; + String[] whereArgs = new String[]{String.valueOf(threadId), "1"}; values.put(REACTIONS_UNREAD, 0); values.put(REACTIONS_LAST_SEEN, System.currentTimeMillis()); diff --git a/src/org/thoughtcrime/securesms/database/MmsDatabase.java b/src/org/thoughtcrime/securesms/database/MmsDatabase.java index f5fe7c057..1ba23e7e6 100644 --- a/src/org/thoughtcrime/securesms/database/MmsDatabase.java +++ b/src/org/thoughtcrime/securesms/database/MmsDatabase.java @@ -175,6 +175,7 @@ public class MmsDatabase extends MessagingDatabase { "CREATE INDEX IF NOT EXISTS mms_message_box_index ON " + TABLE_NAME + " (" + MESSAGE_BOX + ");", "CREATE INDEX IF NOT EXISTS mms_date_sent_index ON " + TABLE_NAME + " (" + DATE_SENT + ");", "CREATE INDEX IF NOT EXISTS mms_thread_date_index ON " + TABLE_NAME + " (" + THREAD_ID + ", " + DATE_RECEIVED + ");", + "CREATE INDEX IF NOT EXISTS mms_reactions_unread_index ON " + TABLE_NAME + " (" + REACTIONS_UNREAD + ");" }; private static final String[] MMS_PROJECTION = new String[] { diff --git a/src/org/thoughtcrime/securesms/database/MmsSmsDatabase.java b/src/org/thoughtcrime/securesms/database/MmsSmsDatabase.java index 27cdbbdc2..cbbb9200a 100644 --- a/src/org/thoughtcrime/securesms/database/MmsSmsDatabase.java +++ b/src/org/thoughtcrime/securesms/database/MmsSmsDatabase.java @@ -138,7 +138,7 @@ public class MmsSmsDatabase extends Database { public Cursor getUnread() { String order = MmsSmsColumns.NORMALIZED_DATE_RECEIVED + " ASC"; - String selection = MmsSmsColumns.NOTIFIED + " = 0 AND (" + MmsSmsColumns.READ + " = 0 OR " + MmsSmsColumns.REACTIONS_UNREAD + ")"; + String selection = MmsSmsColumns.NOTIFIED + " = 0 AND (" + MmsSmsColumns.READ + " = 0 OR " + MmsSmsColumns.REACTIONS_UNREAD + " = 1)"; return queryTables(PROJECTION, selection, order, null); } diff --git a/src/org/thoughtcrime/securesms/database/SmsDatabase.java b/src/org/thoughtcrime/securesms/database/SmsDatabase.java index 25927ce3f..fa31ad955 100644 --- a/src/org/thoughtcrime/securesms/database/SmsDatabase.java +++ b/src/org/thoughtcrime/securesms/database/SmsDatabase.java @@ -110,7 +110,8 @@ public class SmsDatabase extends MessagingDatabase { "CREATE INDEX IF NOT EXISTS sms_read_and_notified_and_thread_id_index ON " + TABLE_NAME + "(" + READ + "," + NOTIFIED + "," + THREAD_ID + ");", "CREATE INDEX IF NOT EXISTS sms_type_index ON " + TABLE_NAME + " (" + TYPE + ");", "CREATE INDEX IF NOT EXISTS sms_date_sent_index ON " + TABLE_NAME + " (" + DATE_SENT + ");", - "CREATE INDEX IF NOT EXISTS sms_thread_date_index ON " + TABLE_NAME + " (" + THREAD_ID + ", " + DATE_RECEIVED + ");" + "CREATE INDEX IF NOT EXISTS sms_thread_date_index ON " + TABLE_NAME + " (" + THREAD_ID + ", " + DATE_RECEIVED + ");", + "CREATE INDEX IF NOT EXISTS sms_reactions_unread_index ON " + TABLE_NAME + " (" + REACTIONS_UNREAD + ");" }; private static final String[] MESSAGE_PROJECTION = new String[] { diff --git a/src/org/thoughtcrime/securesms/database/helpers/SQLCipherOpenHelper.java b/src/org/thoughtcrime/securesms/database/helpers/SQLCipherOpenHelper.java index 1daad093c..25a688d0c 100644 --- a/src/org/thoughtcrime/securesms/database/helpers/SQLCipherOpenHelper.java +++ b/src/org/thoughtcrime/securesms/database/helpers/SQLCipherOpenHelper.java @@ -97,8 +97,9 @@ public class SQLCipherOpenHelper extends SQLiteOpenHelper { private static final int USERNAMES = 36; private static final int REACTIONS = 37; private static final int STORAGE_SERVICE = 38; + private static final int REACTIONS_UNREAD_INDEX = 39; - private static final int DATABASE_VERSION = 38; + private static final int DATABASE_VERSION = 39; private static final String DATABASE_NAME = "signal.db"; private final Context context; @@ -673,6 +674,11 @@ public class SQLCipherOpenHelper extends SQLiteOpenHelper { // } } + if (oldVersion < REACTIONS_UNREAD_INDEX) { + db.execSQL("CREATE INDEX IF NOT EXISTS sms_reactions_unread_index ON sms (reactions_unread);"); + db.execSQL("CREATE INDEX IF NOT EXISTS mms_reactions_unread_index ON mms (reactions_unread);"); + } + db.setTransactionSuccessful(); } finally { db.endTransaction();