diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/extensions/Context.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/extensions/Context.kt index 69af8564..045055fb 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/extensions/Context.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/extensions/Context.kt @@ -147,7 +147,11 @@ fun Context.getConversations(): ArrayList { val conversations = ArrayList() queryCursor(uri, projection, selection, selectionArgs, showErrors = true) { cursor -> val id = cursor.getIntValue(Threads._ID) - val snippet = cursor.getStringValue(Threads.SNIPPET) ?: "" + var snippet = cursor.getStringValue(Threads.SNIPPET) ?: "" + if (snippet.isEmpty()) { + snippet = getThreadSnippet(id) + } + var date = cursor.getLongValue(Threads.DATE) if (date.toString().length > 10) { date /= 1000 @@ -204,6 +208,33 @@ fun Context.getLatestMMS(): Message? { return getMMS(sortOrder = sortOrder).firstOrNull() } +fun Context.getThreadSnippet(threadId: Int): String { + val sortOrder = "${Mms.DATE} DESC LIMIT 1" + val latestMms = getMMS(threadId, sortOrder).firstOrNull() + var snippet = latestMms?.body ?: "" + + val uri = Sms.CONTENT_URI + val projection = arrayOf( + Sms.BODY + ) + + val selection = "${Sms.THREAD_ID} = ? AND ${Sms.DATE} > ?" + val selectionArgs = arrayOf( + threadId.toString(), + latestMms?.date?.toString() ?: "0" + ) + try { + val cursor = contentResolver.query(uri, projection, selection, selectionArgs, sortOrder) + cursor?.use { + if (cursor.moveToFirst()) { + snippet = cursor.getStringValue(Sms.BODY) + } + } + } catch (ignored: Exception) { + } + return snippet +} + fun Context.getThreadParticipants(threadId: Int, contactsMap: HashMap?): ArrayList { val uri = Uri.parse("${MmsSms.CONTENT_CONVERSATIONS_URI}?simple=true") val projection = arrayOf(