From b72fe0d7a2e80bb50747017031064ea3daccafce Mon Sep 17 00:00:00 2001 From: Cody Henthorne Date: Mon, 11 Sep 2023 13:53:42 -0400 Subject: [PATCH] Fix unread mention indicator showing incorrectly bug. --- .../thoughtcrime/securesms/database/MessageTable.kt | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/MessageTable.kt b/app/src/main/java/org/thoughtcrime/securesms/database/MessageTable.kt index 7f8427d42c..5202a076a5 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/MessageTable.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/database/MessageTable.kt @@ -37,6 +37,7 @@ import org.signal.core.util.SqlUtil.buildCustomCollectionQuery import org.signal.core.util.SqlUtil.buildSingleCollectionQuery import org.signal.core.util.SqlUtil.buildTrueUpdateQuery import org.signal.core.util.SqlUtil.getNextAutoIncrementId +import org.signal.core.util.count import org.signal.core.util.delete import org.signal.core.util.exists import org.signal.core.util.forEach @@ -2375,8 +2376,8 @@ open class MessageTable(context: Context?, databaseHelper: SignalDatabase) : Dat fun getOldestUnreadMentionDetails(threadId: Long): Pair? { return readableDatabase .select(FROM_RECIPIENT_ID, DATE_RECEIVED) - .from(TABLE_NAME) - .where("$THREAD_ID = ? AND $READ = 0 AND $MENTIONS_SELF = 1", threadId) + .from("$TABLE_NAME INDEXED BY $INDEX_THREAD_STORY_SCHEDULED_DATE_LATEST_REVISION_ID") + .where("$THREAD_ID = ? AND $STORY_TYPE = 0 AND $PARENT_STORY_ID <= 0 AND $LATEST_REVISION_ID IS NULL AND $READ = 0 AND $MENTIONS_SELF = 1", threadId) .orderBy("$DATE_RECEIVED ASC") .limit(1) .run() @@ -2390,9 +2391,9 @@ open class MessageTable(context: Context?, databaseHelper: SignalDatabase) : Dat fun getUnreadMentionCount(threadId: Long): Int { return readableDatabase - .select("COUNT(*)") - .from(TABLE_NAME) - .where("$THREAD_ID = ? AND $READ = 0 AND $MENTIONS_SELF = 1", threadId) + .count() + .from("$TABLE_NAME INDEXED BY $INDEX_THREAD_STORY_SCHEDULED_DATE_LATEST_REVISION_ID") + .where("$THREAD_ID = ? AND $STORY_TYPE = 0 AND $PARENT_STORY_ID <= 0 AND $LATEST_REVISION_ID IS NULL AND $READ = 0 AND $MENTIONS_SELF = 1", threadId) .run() .readToSingleInt() }