Improve performance around marking messages read.
This commit is contained in:
parent
a7d6c0f25c
commit
aaca487b8f
1 changed files with 24 additions and 34 deletions
|
@ -2231,13 +2231,15 @@ open class MessageTable(context: Context?, databaseHelper: SignalDatabase) : Dat
|
|||
|
||||
private fun setMessagesRead(where: String, arguments: Array<String>?): List<MarkedMessageInfo> {
|
||||
val releaseChannelId = SignalStore.releaseChannelValues().releaseChannelRecipientId
|
||||
return writableDatabase.withinTransaction { db ->
|
||||
val infos = db
|
||||
.select(ID, FROM_RECIPIENT_ID, DATE_SENT, TYPE, EXPIRES_IN, EXPIRE_STARTED, THREAD_ID, STORY_TYPE)
|
||||
.from("$TABLE_NAME INDEXED BY $INDEX_THREAD_DATE")
|
||||
.where(where, arguments ?: emptyArray())
|
||||
.run()
|
||||
.readToList { cursor ->
|
||||
return writableDatabase.rawQuery(
|
||||
"""
|
||||
UPDATE $TABLE_NAME INDEXED BY $INDEX_THREAD_DATE
|
||||
SET $READ = 1, $REACTIONS_UNREAD = 0, $REACTIONS_LAST_SEEN = ${System.currentTimeMillis()}
|
||||
WHERE $where
|
||||
RETURNING $ID, $FROM_RECIPIENT_ID, $DATE_SENT, $TYPE, $EXPIRES_IN, $EXPIRE_STARTED, $THREAD_ID, $STORY_TYPE
|
||||
""",
|
||||
arguments ?: emptyArray()
|
||||
).readToList { cursor ->
|
||||
val threadId = cursor.requireLong(THREAD_ID)
|
||||
val recipientId = RecipientId.from(cursor.requireLong(FROM_RECIPIENT_ID))
|
||||
val dateSent = cursor.requireLong(DATE_SENT)
|
||||
|
@ -2255,18 +2257,6 @@ open class MessageTable(context: Context?, databaseHelper: SignalDatabase) : Dat
|
|||
}
|
||||
}
|
||||
.filterNotNull()
|
||||
|
||||
db.update("$TABLE_NAME INDEXED BY $INDEX_THREAD_DATE")
|
||||
.values(
|
||||
READ to 1,
|
||||
REACTIONS_UNREAD to 0,
|
||||
REACTIONS_LAST_SEEN to System.currentTimeMillis()
|
||||
)
|
||||
.where(where, arguments ?: emptyArray())
|
||||
.run()
|
||||
|
||||
infos
|
||||
}
|
||||
}
|
||||
|
||||
fun getOldestUnreadMentionDetails(threadId: Long): Pair<RecipientId, Long>? {
|
||||
|
|
Loading…
Add table
Reference in a new issue